lvs負載均衡DR模式 keepalived高可用web集羣實驗

一.拓撲圖


目標:實現lvs的dr模式+keepalived高可用web集羣架構




   

圖1 拓撲圖



本次高可用集羣實驗的節點有四個,分別是lvs-master,lvs-slave,lvs-webserver1,lvs-webserver2。
四個節點使用Vmware Pro 12的四臺虛擬機實現,虛擬機操作系統全部採用CentOS 6.8 64位。
四個節點都在一個局域網中,網卡全部採用僅主機模式,網段192.168.80.0/24,VIP爲192.168.80.20。
lvs-master和lvs-slave擔任調度器(DirectorServer,DS)角色, lvs-webserver1和lvs-webserver2擔任真實服務器(Real Server, RS)角色。
兩臺調度器安裝keepalived提供高可用,兩臺真實服務器安裝httpd提供web服務。


二.節點規劃




圖2   節點規劃



三.各節點配置


3.1.各節點基本配置


1)各節點都關閉防火牆,命令: 

service iptables stop 
chkconfig iptables off

2)各節點都編輯/etc/hosts,添加如下內容:

192.168.80.11 lvs-master  
192.168.80.12 lvs-slave
192.168.80.13 lvs-webserver1
192.168.80.14 lvs-webserver2

3)各節點都編輯/etc/sysconfig/network,把主機名HOSTNAME按照節點信息表裏面的更改。主機名更改後需運行命令reboot重啓系統生效。

4)各節點都編輯/etc/sysconfig/network-scripts/ifcfg-eth0,把IP地址按照節點信息表裏面的更改。IP地址更改後需運行命令service network restart重啓網絡生效。

5)各節點都設置好時區和時間同步。

6)各節點都關閉selinux。(視情況而定,一般都關閉。)

3.2. 調度器DS配置

1)lvs
兩臺調度器採用lvs做負載均衡,lvs模塊是centos內核自帶,只需要運行modprobe ip_vs命令即可激活lvs。

2)keepalived安裝
lvs-master是主調度器,lvs-slave是備調度器,採用DR模式,並安裝keepalived提供高可用服務。
Centos6.8編譯安裝keepalived-1.3.5步驟,參考此文: http://blog.csdn.net/shile/article/details/77896937

3)keepalived配置
keepalived的默認配置文件爲/etc/keepalived/keepalived.conf

主負載均衡器配置:

global_defs {  
   notification_email {  
         admin@localhost  
   }  
   notification_email_from notify@localhost 
   smtp_server 192.168.80.1  
   smtp_connection_timeout 30
   router_id LVS_01  # 設置lvs的id,在一個網絡內應該是唯一的
}  
vrrp_instance VI_1 {  
    state MASTER   #指定Keepalived的角色,MASTER爲主,BACKUP爲備          
    interface eth0  #指定HA監測網絡的接口
    virtual_router_id 51  #虛擬路由編號,主備要一致
    priority 100  #定義優先級,數字越大,優先級越高,主DR必須大於備用DR    
    advert_int 1  #檢查間隔,默認爲1s
    authentication {  
        auth_type PASS  
        auth_pass 1111  
    }  
    virtual_ipaddress {  
        192.168.80.20  #定義虛擬IP(VIP)爲192.168.80.20,可多設,每行一個
    }  
}  
# 定義對外提供服務的LVS的VIP以及port
virtual_server 192.168.80.20  80{  
    delay_loop 6 # 設置健康檢查時間,單位是秒                    
    lb_algo wlc # 設置負載調度的算法爲wlc                   
    lb_kind DR # 設置LVS實現負載的機制,有NAT、TUN、DR三個模式   
    nat_mask 255.255.255.0                
    persistence_timeout 0          
    protocol TCP                  
    real_server 192.168.80.13 80 {  # 指定real server1的IP地址
        weight 3   # 配置節點權值,數字越大權重越高              
        TCP_CHECK {  
        connect_timeout 10         
        nb_get_retry 3  
        delay_before_retry 3  
        connect_port 80  
        }  
    }  
    real_server 192.168.80.14 80 {  # 指定real server2的IP地址
        weight 3  # 配置節點權值,數字越大權重越高  
        TCP_CHECK {  
        connect_timeout 10  
        nb_get_retry 3  
        delay_before_retry 3  
        connect_port 80  
        }  
     }  
}

從負載均衡器配置:

從負載服務器與主負載服務器大致相同,只是在keepalived的配置文件中需要改以下三處:

(1)將router_id由LVS_01改成LVS_02
(2)將state由MASTER改爲BACKUP
(3)將priority由100改爲80

4)啓動keepalived

keepalived安裝和配置完成後,添加到自啓動並啓動keepalived高可用服務:
service keepalived start
chkconfig --add keepalived
chkconfig keepalived on

3.3.真實服務器RS配置

1)兩臺真實服務器(Real Server, RS)都安裝httpd,提供web服務。 

lvs-webserver1配置httpd:

yum install -y httpd
vi /etc/httpd/conf/httpd.conf #把ServerName那一行改成ServerName lvs-webserver1:80
service httpd start
echo "lvs-webserver1: 192.168.80.13" >/var/www/html/index.html

lvs-webserver2配置httpd:

yum install -y httpd
vi /etc/httpd/conf/httpd.conf #把ServerName那一行改成ServerName lvs-webserver2:80
service httpd start
echo "lvs-webserver2: 192.168.80.14" >/var/www/html/index.html

2)兩臺真實服務器RS都運行realserver腳本來添加VIP,並抑制arp, 步驟如下。

進入指定文件夾:cd /etc/init.d/  , 編輯腳本文件:vi realserver , 內容如下:

VIP=192.168.80.20
. /etc/rc.d/init.d/functions
case "$1" in
start)
       ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
       /sbin/route add -host $VIP dev lo:0
       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
       echo "RealServer Start OK"
       ;;
stop)
       ifconfig lo:0 down
       route del $VIP >/dev/null 2>&1
       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
       echo "RealServer Stoped"
       ;;
*)
       echo "Usage: $0 {start|stop}"
       exit 1
esac
exit 0

這裏我們設置虛擬IP爲:192.168.80.20
保存腳本文件後更改該文件權限:chmod 755 realserver
開啓realserver服務:service realserver start

四.測試


測試主機: 同一局域網的電腦,比如vmware的宿主機(IP:192.168.80.1)。
測試方法: 使用瀏覽器打開http://192.168.80.20測試。刷新頁面,顯示的頁面會在兩臺webserver中循環。



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