天天看點

Keepalived+LVS(DR) 高可用負載均衡叢集部署

Keepalived為LVS(DR)排程器提供高可用功能,防止排程器單點故障,為使用者提供Web服務

部署5台虛拟機,1台作為用戶端主機、2台作為LVS排程器、2台作為Real Server

client 192.168.4.1

proxy1 192.168.4.10

proxy2 192.168.4.11

web1 192.168.4.50

web2 192.168.4.60

VIP 192.168.4.200

web1配置VIP位址 (将VIP部署在web1、web2的lo回還位址上)

[[email protected] ~]# cd /etc/sysconfig/network-scripts/
[[email protected] ~]# cp ifcfg-lo{,:0}
[[email protected] ~]# vim ifcfg-lo:0

DEVICE=lo:0
IPADDR=192.168.4.50
NETMASK=255.255.255.255   // 注意:這裡的子網路遮罩必須是32(也就是全255)
NETWORK=192.168.4.50   //網絡位址與IP位址一樣
BROADCAST=192.168.4.50    //廣播位址與IP位址也一樣
ONBOOT=yes
NAME=lo:0
           

web2配置VIP位址

[[email protected]~]# cd /etc/sysconfig/network-scripts/
[[email protected] ~]# cp ifcfg-lo{,:0}
[[email protected] ~]# vim ifcfg-lo:0

DEVICE=lo:0
IPADDR=192.168.4.60
NETMASK=255.255.255.255   // 注意:這裡的子網路遮罩必須是32(也就是全255)
NETWORK=192.168.4.60   //網絡位址與IP位址一樣
BROADCAST=192.168.4.60    //廣播位址與IP位址也一樣
ONBOOT=yes
NAME=lo:0
           

注意:

這裡因為web1也配置與代理一樣的VIP位址,預設肯定會出現位址沖突。

寫入這四行的主要目的就是通路192.168.4.200的資料包,隻有排程器會響應,其他主機都不做任何響應。

web1、web2 都需要配置 (寫入如下4行參數)

[[email protected] ~]# vim /etc/sysctl.conf   

   net.ipv4.conf.all.arp_ignore = 1
   net.ipv4.conf.lo.arp_ignore = 1
   net.ipv4.conf.lo.arp_announce = 2
   net.ipv4.conf.all.arp_announce = 2
           

配置背景web服務(web1和web2主機)

[[email protected] ~]# yum -y install httpd
[[email protected] ~]# echo "192.168.4.50" > /var/www/html/index.html
[[email protected] ~]# yum -y install httpd
[[email protected] ~]# echo "192.168.4.60" > /var/www/html/index.html
           

啟動Web伺服器軟體(web1和web2主機)

部署排程器 安裝Keepalived與ipvsadm軟體

[[email protected] ~]# yum install -y keepalived  ipvsadm
[[email protected] ~]# yum install -y keepalived  ipvsadm
           

部署Keepalived實作LVS-DR模式排程器的高可用

[[email protected] ~]# vim /etc/keepalived/keepalived.conf

global_defs {
  notification_email {
    [email protected]      //設定報警收件人郵箱
}
  notification_email_from [email protected]    //設定發件人
    smtp_server 127.0.0.1         //定義郵件伺服器
    smtp_connect_timeout 30
    router_id  lvs1      //設定路由ID号
    vrrp_skip_check_adv_addr
    #vrrp_strict         //注釋掉全局配置
    vrrp_garp_interval 0
    vrrp_gna_interval 0
}

vrrp_instance VI_1 {
   state MASTER           //主伺服器為MASTER
   interface eth0              //定義網絡接口
   virtual_router_id 50           //主輔VRID号必須一緻
   priority 150          //伺服器優先級
   advert_int 1
   authentication {
   auth_type pass
   auth_pass forlvs     //主輔伺服器密碼必須一緻
}
virtual_ipaddress {  192.168.4.100 }   //配置VIP
}

virtual_server 192.168.4.100 80 {       //設定ipvsadm的VIP規則
    delay_loop 6
    lb_algo wrr       //設定LVS排程算法為WRR
    lb_kind DR         //設定LVS的模式為DR
    persistence_timeout 1
    protocol TCP

real_server 192.168.4.50 80 {    //設定後端web伺服器真實IP
    weight 1             //設定權重為1
    TCP_CHECK {
    connect_timeout 3
    nb_get_retry 3
    delay_before_retry 3
   }
}
real_server 192.168.4.60 80 {     //設定後端web伺服器真實IP
    weight 2       //設定權重為2
    TCP_CHECK {
    connect_timeout 3
    nb_get_retry 3
    delay_before_retry 3
   }
}
           

重新開機服務

[[email protected] ~]# systemctl start keepalived
           

檢視LVS規則

[[email protected] ~]# ipvsadm -Ln  
           

檢視VIP配置

[[email protected] ~]# ip a  s           
           

2)LVS2排程器設定Keepalived

global_defs {
  notification_email {
    [email protected]     
}
  notification_email_from [email protected]    
    smtp_server 127.0.0.1        
    smtp_connect_timeout 30
    router_id  lvs1   
    vrrp_skip_check_adv_addr
    #vrrp_strict       
    vrrp_garp_interval 0
    vrrp_gna_interval 0
}

vrrp_instance VI_1 {
   state MASTER            //主伺服器為BACKUP
   interface eth0               
   virtual_router_id 50          //主輔VRID号必須一緻
   priority 100          //伺服器優先級
   advert_int 1
   authentication {
   auth_type pass
   auth_pass forlvs     //主輔伺服器密碼必須一緻
}
virtual_ipaddress {  192.168.4.100 }  
}

virtual_server 192.168.4.100 80 {   
    delay_loop 6
    lb_algo wrr     
    lb_kind DR         
    persistence_timeout 1
    protocol TCP

real_server 192.168.4.50 80 {    
    weight 1           
    TCP_CHECK {
    connect_timeout 3
    nb_get_retry 3
    delay_before_retry 3
   }
}
real_server 192.168.4.60 80 {     
    weight 2     
    TCP_CHECK {
    connect_timeout 3
    nb_get_retry 3
    delay_before_retry 3
   }
}
           

重新開機服務

[[email protected] ~]# systemctl start  keepalived  ipvsadm
           

檢視LVS規則

[[email protected] ~]# ipvsadm -Ln       
           

檢視VIP設定

[[email protected] ~]# ip  a   s                     
           

用戶端測試

使用curl指令反複連接配接http://192.168.4.100

測試web服務端當機切換VIP

測試proxy排程器當機切換排程功能

繼續閱讀