第六 配置keepalived 主配置檔案,修改keepalived.conf
#cd /etc/keepalived
#vim keepalived.conf
#全局配置子產品
! Configuration File for keepalived
global_defs {
#notification_email {
# fenfa0826#msn.cn
# }
注: 指定keepalived 在發生事件時,需要發送Emial 給SA ,可以是多個使用者,
#notification_email_from #注
smtp_server 127.0.0.1 #注smtp 伺服器的Ip 或者是域名
smtp_connect_timeout 30 # 注:連接配接smtp伺服器的逾時時間
router_id ha1 #注:該處的ha1必須是主機名,而且也必須和uname -n 的 主機名相同
}
#static_ipaddress
# {
# 192.168.2.188 brd + dev eth0 scope global
# }
# static_routers
# { src 192.168.2.188 to 192.168.2.188 dev eth0
# }
注:,如果伺服器中已經設定好,在該處就不需要設定,
# VRRP configuration vrrpd 的配置
vrrp_sync_group VG_1 {
group {
VG_1 #注: 該處是執行個體的名字
}
#notify_master /etc/keepalived/apache.sh #注:當切換到Master時,執行的腳本,該腳本可以傳遞參數,如果是傳遞參數時需要用雙引号引起
#notify_backup /etc/keepalived/apache.sh#注: 當切換到Backup 時執行的腳本
#notify /path/to/notify.sh #注:該指令有三個參數,該參數有keepalived 提供
#smtp_alert #注: 使用global_defs 裡面定義的郵件位址和smtp 伺服器在切換後發送Email 通知
}
vrrp_instance VI_1 { #vrrp 執行個體的配置
state MASTER #注:指定instance 的初始狀态,在兩台 router 都啟動後,就會立即發生競選, priority 高的會競選為Master ,是以該處的state 并不能表示這台就是Master
interface eth0 #注: 執行個體綁定的網卡
dont_track_primary # 注: 忽略VRRP的interface 錯誤,預設不設負責置
lvs_sync_daemon_interface eth0 #注:負載均衡器之間監聽的接口,和Heartbeat 的心跳線類似,但是不會出現腦裂問題,該處與服務接口interface 使用同一網絡接口
track_interface {
eth0
eth1
} # 注:設定額外的監控,該處的任意一塊網卡出現問題,都會進入FAULT狀态
mcast_src_ip eth1 #發送多點傳播包的位址,如果不設定,預設使用保定的網卡primary IP
garp_master_delay 10 #注: 在切換到MASTER 狀态後,延遲進行gratuitous ARP 請求
virtual_router_id 51 #注VRID 标記(0…255)該處一定要與BACKUP 的相同
priority 151 #優先級設定,數值越大,優先級越高,在同一個執行個體中Master 的優先級一定要大于BACKUP MASTER 要高于BACKUP至少50
advert_int 1 #同步通知間隔 MASTER與BACKUP 負載均衡器之間的同步檢查時間間隔機關秒
authentication {
auth_type PASS
auth_pass 1111
} 注: 設定認證,包含認證類型和認知密碼,類型主要分為PASS,AH 兩種,,驗證密碼為明文,同一個vrrp 執行個體中MASTER與BACKUP中的密碼必須相同才能正常通信
#nopreempt #注:設定為不搶占,該處配置隻有在BACKUP的priority 優先級高于master 時,才在BACKUP上設定的
# preempt_delay #注:設定的搶占延遲時間,預設5分鐘,我沒有設定
virtual_ipaddress {
192.168.2.188 dev eth0 label eth0:0
} 注: 虛拟的IP位址,該處的IP位址必須和RealServer 中配置的虛拟IP相同
}
#LVS 子產品,即 虛拟伺服器子產品
virtual_server 192.168.2.188 80 { #設定的虛拟virtual server :VIP:Vport
delay_loop 3 #注: 健康監測的時間間隔,機關是秒
lb_algo rr #注:負載均衡的排程算法
lb_kind DR #注: 負載均衡的轉發規則
persistence_timeout 10 #注: 會話保持時間 機關是秒,該項對動态網站很有作用
#persistence_ granularity <NETMASK> # 注: LVS 會話保持粒度 ipvsadm 中的-M參數 ,根據每個用戶端做會話保持
protocol TCP #注: 使用的協定是TCP還是UDP
sorry_server 127.0.0.1 80 # 注: 備用機,所有的real server 失效後啟用,如果設定的是本地機器,同樣也需要在本機上進行arp隐藏
#注: RealServer 的配置
real_server 192.168.2.153 80 {
weight 1 #注: 設定的權重 預設為1,0為失效
inhibit_on_failure #注在伺服器健康監查失效後,将其的權重設定為0,而不是直接從IPVS裡面删除
TCP_CHECK {
connect_timeout 3 # 注:連接配接逾時時間
nb_get_retry 3 #注:重連次數
delay_before_retry 3 #注: 重連的時間間隔
connect_port 80 #注: 健康檢查端口
}
}
real_server 192.168.2.155 80 {
weight 1
#inhibit_on_failure
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
第七 配置BAKUP
BACKUP keepalived 主配置檔案基本上都是相同的vrrp_instance VI_1{
state BACKUP
priority 100 # 該值一定要小于MASTER 中的優先級,如果要是和 MASTER 中的優先級相等或者大于MASTER的優先級的話,一定在VRRP_instance V I_1中設定nopreempt
….
}
第八 .配置真實伺服器
在每台真實伺服器上進行arp 隐藏。
#!/bin/bash
#chkconfig:345 20 80
#description: lvs real server
VIP=192.168.2.188
host=`/bin/hostname`
case "$1" in
start)
#start lvs
/sbin/ifconfig lo down
/sbin/ifconfig lo up
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
/sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
;;
stop)
#stop lvs
/sbin/ifconfig lo:0 down
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
status)
#status of lvs
islothere=`/sbin/ifconfig lo:0 |grep $VIP`
isrothere=`/netstat -rn |grep "lo" |grep "$VIP"`
if [ ! "islothere" -o ! "isrothere" ];then
echo "the realserver is stopped"
else
echo "realserver is running"
fi
*)
echo "Usage:$0{start|stop|status}"
exit 1
esac
第九.在每個RealServer 上運作上面的腳本,并檢視
# ip addr list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
<b> inet 192.168.2.188/32 brd 192.168.2.188 scope global lo:0</b>
<b></b>
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:34:2b:8d brd ff:ff:ff:ff:ff:ff
inet 192.168.2.155/24 brd 192.168.2.255 scope global eth0
inet6 fe80::20c:29ff:fe34:2b8d/64 scope link
3: sit0: <NOARP> mtu 1480 qdisc noop
link/sit 0.0.0.0 brd 0.0.0.0
注:紅色部分為VIP一定要注意vip的子網路遮罩必須是為32
第十 在keepalived 主機上啟動keepalived,先啟動MASTER,然後再啟動BACKUP
自啟動之前先看看VIP是不是有vip
#service keepalived start
#ip addr list
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:03:4a:b8 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.211/24 brd 192.168.2.255 scope global eth0
<b>inet 192.168.2.188/32 scope global eth0:0</b>
inet6 fe80::20c:29ff:fe03:4ab8/64 scope link
注: 此處隻取eth0 的資訊,如果您要是執行該指令的話,會把所有的網卡資訊都顯示出來
第十.可以進行測試keepalived 的高可用性叢集lvs 負載均衡,我測試的是成功的,再次就不再進行書寫測試結果了
本文轉自 freehat08 51CTO部落格,原文連結:http://blog.51cto.com/freehat/415960,如需轉載請自行聯系原作者