keepalived部署及實驗
一、實驗部署所需服務器:
服務器名稱 ip地址 環境
負載均衡(主) 虛擬ip:192.168.1.135 Nginx,keepalived
負載均衡(備) 虛擬ip:192.168.1.135 Nginx,keepalived
Web1 192.168..133 Nginx/Tomcat
Web2 192.168.1.134 Nginx/Tomcat
二、keepalived安裝及配置
1、安裝並啓動keepalived(主、備服務器)# yum install keepalived –y
安裝# /etc/init.d/keepalived start
啓動# ps –ef |grep keep
查看是否啓動成功
2、配置主服務器的keepalived.conf 配置文件
`# vim` /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {br/>[email protected]
[email protected]br/>[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id test01 #id 爲test01,不同的keepalived.conf這個ID要唯一
}
vrrp_instance VI_1 { #實例名字爲VI_1,相同實例的備節點名字要和這相同
state MASTER # 主節點爲 MASTER
interface eth0 # 備節點需與主相同
virtual_router_id 51 # 實例id爲51,keepalived.conf唯一
priority 100 # 備節點數值必須比這個低
advert_int 1
authentication {
auth_type PASS # 主備相同
auth_pass 1111 # 主備相同
}
virtual_ipaddress {
192.168.1.135 #虛擬ip,主備需相同
}
}
測試是否成功 # ip addr|grep 192.168.3.135,若成功則顯示如下信息:
3、配置備服務器的keepalived.conf 配置文件
`# vim /etc/keepalived/keepalived.conf``
! Configuration File for keepalived
global_defs {
notification_email {br/>[email protected]
[email protected]br/>[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id test02 #名字與主不同
}vrrp_instance VI_1 {
state BACKUP #備爲BACKUP
interface eth0
virtual_router_id 51 #和主相同
priority 80 #低於主
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.135
}
}
4、配置Web服務器(Nginx),主備配置相同:
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#定義web服務器池,包含以下兩個節點
upstream www_server_pools {
server 192.168.1.133:80 weight=1;
server 192.168.1.134:80 weight=1;
}
server {
listen 192.168.1.135:80; #監聽vip端口
server_name www.test.cc;
location / {
proxy_pass http://www_server_pools;
#訪問www.test.cc的請求發生給www_server_pools裏面的節點
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
主備配置完以後建議重啓一次,然後啓動nginx和keepalived,並查看監聽是否正確
測試,關掉主nginx後,能正常打開網頁,則配置成功。
三、 主備服務器切換測試
1、停掉主服務器上的keepalived服務或者關閉服務器,並查看vip狀態
ip addr|grep 192.168.1.135,vip消失。
2、切換至備服務器上,查看vip是否出現,ip addr|grep 192.168.1.135,若出現表示ip漂移成功。
注:(該配置只能自動切換服務器down機的情況,若要自動切換nginx服務掛掉,需加腳本及配置)
四、解決高可用服務針對物理服務器的問題:
keepalived只針對服務器及keepalived服務宕機纔會切換,實際工作中有時nginx服務也會出現故障,這時需藉助腳本來實現.
1、若沒有80端口存在,則停止keepalived服務實現釋放本地vip。
#!/bin/sh
while true
do
if [ ‘netstat –lntup|grep nginx|wc –l’ –ne 1]; then
/etc/init.d/keepalived stop
fi
sleep 5
done
2、可以使用keepalived的配置文件來觸發寫好的檢測服務腳本。(略)
五、keepalived腦裂問題
可以配置冗餘心跳線,並做檢測腳本
備節點上執行腳本,若可以ping同主節點並且備節點有vip就報警。
#!/bin/sh
test1ip=192.168.1.130
test1vip=192.168.1.135
while true
do
ping –c 2 –W 3 $test1ip &>/dev/null
if [$? –eq 0 –a ‘ip add|grep “$test1vip”|wc –l’ –eq 1]
then
echo “ha is split brain.waring!!!”
else
echo ”ha is ok!”
fi
sleep 5
done