keepalived + lvs 實現簡單負載均衡架構
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 -ytar 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 upecho
hostname
> /var/www/html/index.html/etc/init.d.httpd start</pre>
測試:
- 高可用測試:停止 master 上的 keepalived 服務,看 backup 是否接管。
- 負載均衡測試:訪問 http://192.168.0.100,看到頁面在兩個 realserver 上切換表示成功!
你也可以通過 ipvsadm -Ln 查看詳細連接情況!
- 故障切換測試:任意關閉 realserver 上的 httpd 服務,Keepalived 監控模塊是否能及時發現,
然后屏蔽故障節點,同時將服務轉移到正常節點來執行。