keepalived + lvs 實現簡單負載均衡架構

jopen 10年前發布 | 38K 次閱讀 負載均衡 集群/負載均衡

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

實驗環境: rhel 6.3           iptables && selinux diabled
實驗主機:
lvs-master: 192.168.0.2
lvs-backup: 192.168.0.3
lvs-vip: 192.168.0.100
rs: 192.168.0.44  &&  192.168.0.57
主備機上軟件包的安裝與配置:

#yum install ipvsadm openssl-devel libnl-devel gcc make -y

tar zxf  keepalived-1.2.12.tar.gz

cd keepalived-1.2.12

./configure --prefix=/usr/local/keepalived

Keepalived configuration

Keepalived version: 1.2.5 Compiler: gcc Compiler flags: -g -O2 Extra Lib: -lpopt -lssl -lcrypto -lnl Use IPVS Framework: Yes IPVS sync daemon support : Yes IPVS use libnl: Yes Use VRRP Framework: Yes Use VRRP VMAC: No SNMP support: No Use Debug flags: No

make && make install</pre>拷貝配置文件以及啟動腳本
#ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

ln -s /usr/local/keepalived/etc/keepalived /etc/

ln -s /usr/local/keepalived/sbin/keepalived /sbin</pre>修改配置文件
#vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {    notification_email {         xxxxxx@gmail.com                #接收警報的 email 地址,可以添加多個    }    notification_email_from keepalived@server2.example.com        #設置郵件的發送地址    smtp_server 127.0.0.1         #設置smtp server地址    smtp_connect_timeout 30    router_id LVS_DEVEL }

vrrp_instance VI_1 {     state MASTER           #備機改為 BACKUP,此狀態是由 priority 的值來決定的,當前priority 的值小于備機的值,那么將會失去 MASTER 狀態     interface eth0             virtual_router_id 51   #主、備機的 virtual_router_id 必須相同,取值 0-255     priority 100     advert_int 1     authentication {         auth_type PASS         auth_pass 1111     }     virtual_ipaddress {        #設置虛擬 IP 地址,可以設置多個虛擬 IP 地址,每行一個         192.168.0.100     } }

virtual_server 192.168.0.100 80 {        #定義虛擬服務器     delay_loop 6     lb_algo rr               #lvs  輪叫算法     lb_kind DR               #lvs   DR模式

    nat_mask 255.255.255.0

    persistence_timeout 50

    protocol TCP

   real_server 192.168.0.44 80 {        #配置服務節點         weight 1         TCP_CHECK {             connect_timeout 3             nb_get_retry 3             delay_before_retry 3         }     }     real_server 192.168.0.57 80 {         weight 1         TCP_CHECK {             connect_timeout 3             nb_get_retry 3             delay_before_retry 3         }     }

}</pre>
在realserver上:

#ifconfig eth0:0 192.168.0.100 netmask 255.255.255.0 up

echo hostname > /var/www/html/index.html

/etc/init.d.httpd start</pre>

測試:

  1. 高可用測試:停止 master 上的 keepalived 服務,看 backup 是否接管。

  2. 負載均衡測試:訪問 http://192.168.0.100,看到頁面在兩個 realserver 上切換表示成功!
    你也可以通過 ipvsadm -Ln 查看詳細連接情況!

  3. 故障切換測試:任意關閉 realserver 上的 httpd 服務,Keepalived 監控模塊是否能及時發現,
    然后屏蔽故障節點,同時將服務轉移到正常節點來執行。



 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!