LVS+Keepalived搭建服務器集羣

一、爲什麼要使用負載均衡技術?

1、系統高可用性

2、系統可擴展性

3、負載均衡能力

LVS+keepalived能很好的實現以上的要求,LVS提 供負載均衡,keepalived提供健康檢查,故障轉移,提高系統的可用性!採用這樣的架構以後 很容易對現有系統進行擴展,只要在後端添加或者減少realserver,只要更改lvs的 配置文件,並能實現無縫配置變更!

二、LVS+Keepalived介紹

1、  LVS

LVS是一個開源的軟件,可以實現LINUX平臺下的簡單負載均衡。LVS是Linux Virtual Server的縮寫,意思是Linux虛擬服務器。目前有三種IP負 載均衡技術(VS/NAT、VS/TUN和VS/DR);八種調度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)。

2、  keepalived

Keepalived 是運行在lvs 之上,它的主要功能是實現真實機的故障隔離及負載均衡器間的失敗 切換,提高系統的可用性

三、LVS+keepalived負載均衡架構

  

四、LVS+keepalived的安裝和配置

1、配置環境

System OS:CentOS release 5.4

Software:ipvsadm-1.24.tar.gz, keepalived-1.1.19.tar.gz


2、信息列表

名稱

IP

 LVS-Master

192.168.5.21

 LVS-BACKUP

192.168.5.22

 LVS-VIP

192.168.5.100

 Realserver1

192.168.5.31

 Realserver2

192.168.5.32

 Realserver3

192.168.5.33

3、安裝lvs

分別在backup lvs和master lvs上安裝

wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
ln -s /usr/src/kernels/2.6.18-164.el5-i686/ /usr/src/linux
tar zxvf ipvsadm-1.24.tar.gz
cd ipvsadm-1.24
make && make install

4、安裝keepalived

分別在backup lvs和master lvs上安裝

wget http://www.keepalived.org/software/keepalived-1.1.19.tar.gz
tar zxvf keepalived-1.1.19.tar.gz
cd keepalived-1.1.19
./configure --prefix=/usr/local/keepalived
make 
make install
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
mkdir /etc/keepalived

5、配置keepadlived

LVS-Master的配置文件如下,LVS-Backup的配置文件需要按照註釋更改數值。

[root@linux ~]# cat /etc/keepalived/keepalived.conf

! Configuration File for keepalived global_defs {    notification_email {      [email protected]      [email protected]      [email protected]    }    notification_email_from [email protected]    #smtp_server 192.168.200.1    #smtp_connect_timeout 30    router_id LVS_DEVEL_MASTER #備份服務器改爲 LVS_DEVEL_BACKUP } vrrp_sync_group test {        #設置vrrp組 group {         loadbalance } } vrrp_instance VI_1 {     state MASTER              #備份服務器改爲 BACKUP     interface eth2     virtual_router_id 51     priority 150              #備份服務器改爲 100     advert_int 1     authentication {         auth_type PASS         auth_pass 1111     }     virtual_ipaddress {         192.168.5.100         #可以爲多個VIP,各佔一行     } } virtual_server 192.168.5.100 80 {     delay_loop 6     lb_algo rr                #負載均衡算法 rr|wrr|lc|wlc|sh|dh|lblc     lb_kind DR                #可以爲 NAT|DR|TUN      nat_mask 255.255.255.0     persistence_timeout 50     protocol TCP              #TCP|UDP     real_server 192.168.5.31 80 {         weight 100            #權重,越大就越容易被非配         TCP_CHECK {         connect_timeout 10          nb_get_retry 3         delay_before_retry 3         connect_port 80       #端口號         }     }     real_server 192.168.5.32 80 {         weight 100         TCP_CHECK {         connect_timeout 10         nb_get_retry 3         delay_before_retry 3         connect_port 80         }     }     real_server 192.168.5.33 80 {         weight 100         TCP_CHECK {         connect_timeout 10         nb_get_retry 3         delay_before_retry 3         connect_port 80         }     } } virtual_server 192.168.5.100 5060 {     delay_loop 6     lb_algo rr     lb_kind DR     nat_mask 255.255.255.0     persistence_timeout 50     protocol UDP      real_server 192.168.5.41 5060 {         weight 100         MISC_CHECK {             misc_path "/etc/keepalived/UDP_CHECK.sh 192.168.5.41 5060" #UDP檢測腳本             misc_timeout 10         }        }        real_server 192.168.5.42 5060 {         weight 100         MISC_CHECK {             misc_path "/etc/keepalived/UDP_CHECK.sh 192.168.5.42 5060"             misc_timeout 10         }        }    } }

UDP_CHECK.sh的腳本文件如下

#!/bin/bash
/usr/bin/nc -uz -w1 $1 $2 | grep succeeded >/dev/null
exit $?

      

6、Realserver的配置

三臺客戶端的腳本都一樣!

cat /etc/rc.d/init.d/realserver.sh

#!/bin/bash #description : Start Real Server  VIP=192.168.5.100 #Virtual Server IP ./etc/rc.d/init.d/functions case "$1" in     start)         echo " Start LVS of Real Server"         /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up #注意子網掩碼 /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 -arp         echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore         echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce         echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore         echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce         sysctl -p         ;;     stop)         /sbin/ifconfig lo:0 down         echo "close LVS of Real Server"         echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore         echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce         echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore         echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce sysctl -p         ;;     *)         echo "Usage: $0 {start|stop}"         exit 1 esac


 

7、 測試

1) 首先測試各個readserver,確定各個readserver都能正常訪問,測試realserver.sh腳本,看啓動後 能不能綁定lvs vip,停止後能不能去除綁定的vip

2) 測試lvs能否進行負載均衡轉發,利用ipvsadm命令查看,如果想只當當前的 請求轉發到哪個服務器去了,可以用ipvsadm加選項來查看,其完整形式爲:ipvsadm –lcn | grep 192.168.5.31

3) 停掉主lvs看lvs backup是否接管!

4) 更詳細信息請查看日誌,tail -f /var/log/messages


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章