也是A、B 2台機器,使用一樣的配置和軟體。
環境:CentOS6.5 2台虛拟機
keepalived版本1.2.19
tengine版本2.1.2
節點A :
[root@A keepalived]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
[email protected] #設定報警郵件位址,可以設定多個,每行一個。 需開啟本機的sendmail服務
}
notification_email_from [email protected] #設定郵件的發送位址
smtp_server 127.0.0.1 #設定smtp server位址
smtp_connect_timeout 30 #設定連接配接smtp server的逾時時間
router_id LVS_DEVEL #表示運作keepalived伺服器的一個辨別。發郵件時顯示在郵件主題的資訊
}
vrrp_script check_nginx {
script "/etc/keepalived/check_http_port"
interval 2 #檢查間隔
weight 5 #權重
vrrp_instance VI_1 {
state BACKUP #指定keepalived的角色,MASTER表示此主機是主伺服器,BACKUP表示此主機是備用伺服器
interface eth0 #指定HA監測網絡的接口
virtual_router_id 51 #虛拟路由辨別,這個辨別是一個數字,同一個vrrp執行個體使用唯一的辨別。即同一vrrp_instance下,MASTER和BACKUP必須是一緻的
priority 100 #定義優先級,數字越大,優先級越高,在同一個vrrp_instance下,MASTER的優先級必須大于BACKUP的優先級
advert_int 1 #設定MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,機關是秒
nopreempt #設定 nopreempt 防止搶占資源,隻生效BACKUP節點
authentication { #設定驗證類型和密碼
auth_type PASS #設定驗證類型,主要有PASS和AH兩種
auth_pass 1111 #設定驗證密碼,在同一個vrrp_instance下,MASTER與BACKUP必須使用相同的密碼才能正常通信
}
virtual_ipaddress { #設定虛拟IP位址,可以設定多個虛拟IP位址,每行一個
10.0.0.15
track_script {
check_nginx
virtual_server 10.0.0.15 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 10.0.0.13 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
delay_before_retry 3
}
}
real_server 10.0.0.14 80 {
節點B:
[root@B keepalived]# cat keepalived.conf
priority 99 #定義優先級,數字越大,優先級越高,在同一個vrrp_instance下,MASTER的優先級必須大于BACKUP的優先級
[root@A keepalived]# cat relserver.sh
#!/bin/bash
#description: Config realserver
VIP=10.0.0.15
. /etc/rc.d/init.d/functions
case "$1" in
start)
/sbin/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
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
/sbin/ifconfig lo:0 down
/sbin/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
[root@A keepalived]#
[root@A keepalived]# cat check_http_port
#思路:1、使用curl檢查本地nginx可用性
# 2、檢查失敗嘗試啟動nginx
# 3、仍失敗,則關閉本地keepalived
NGINX=/usr/local/nginx/sbin/nginx
PORT="80"
if [ $? -ne 0 ]; then
#重新開機nginx
/etc/init.d/nginx restart
# $NGINX -s stop
# $NGINX
sleep 3
[ $? -ne 0 ] && /etc/init.d/keepalived stop
fi
exit 0
[root@tsm-test-centos6 ~]# curl 10.0.0.15
<!DOCTYPE html>
<html>
<head>
<title>Welcome to tengine!</title>
<style>
body {
35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
</style>
</head>
<body>
Welcome to tengine! B
If you see this page, the tengine web server is successfully installed and
working. Further configuration is required.
For online documentation and support please refer to
<em>Thank you for using tengine.</em>
</body>
</html>
[root@tsm-test-centos6 ~]#
[root@tsm-app-dev1 ~]# curl 10.0.0.15
Welcome to tengine! A
[root@tsm-app-dev1 ~]#
10.0.0.8(我的筆記本)
<a href="http://s3.51cto.com/wyfs02/M01/82/88/wKiom1dX5Fyh5zA9AAAi3QQX8VQ400.png"></a>
<a href="http://s3.51cto.com/wyfs02/M02/82/88/wKiom1dX5F2wdpjOAACanpKG8f8392.png"></a>
原因不得而知,在此記錄。便日後尋得原因。
本文轉自 ygqygq2 51CTO部落格,原文連結:http://blog.51cto.com/ygqygq2/1785087,如需轉載請自行聯系原作者