準備工作:準備5臺虛擬機仍翰,兩臺direct_server狐粱,兩臺real_server拗胜,一臺測試機
配置兩臺direct_server
DS1:
1歧匈、安裝ipvsadm :yum -y install ipvsadm
在/etc/sysconfig目錄里建立一個ipvsadm文件:vim ipvsadm ?
2、安裝keepalive: yum -y install keepalived
配置/etc/keepalived/keepalived文件:vim /etc/keepalived/keepalived.conf
yum install keepalived #安裝服務
vim /etc/keepalived/keepalived.conf #配置文件路徑
! Configuration File for keepalived?
global_defs {? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #全局定義
? notification_email {? ? ? ? ? ? ? ? ? ? ? ? ? ? #表示keepalived在發(fā)生諸如切換操作時需要發(fā)送email通知王带,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 以及email發(fā)送給哪些郵件地址淑蔚,郵件地址可以多個,每行一個
? }
}
vrrp_instance VI_1 {? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #VRRP腳本
state MASTER? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #state指定instance(Initial)的初始狀態(tài)辫秧,就是說在配置好后束倍,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 這臺服務器的初始狀態(tài)就是這里指定的,但這里指定的不算盟戏,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 還是得要通過競選通過優(yōu)先級來確定绪妹,如果這里設置為master,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 但如若他的優(yōu)先級不及另外一臺柿究,那么這臺在發(fā)送通告時邮旷,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 會發(fā)送自己的優(yōu)先級,另外一臺發(fā)現(xiàn)優(yōu)先級不如自己的高蝇摸,那么他會就回搶占為master
interface ens33? ? ? ? ? ? ? ? ? ? ? ? ? ? #綁定的網(wǎng)卡婶肩,因為在配置虛擬IP的時候必須是在已有的網(wǎng)卡上添加的
virtual_router_id 51? ? ? ? ? ? ? ? ? ? ? #這里設置VRID,這里非常重要貌夕,相同的VRID為一個組律歼,他將決定多播的MAC地址
? ? ? ? ? ? ? ? priority 100? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #設置本節(jié)點的優(yōu)先級,優(yōu)先級高的為master
advert_int 1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #檢查間隔啡专,默認為1秒
#nopreempt? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #設置不搶占险毁,這里只能設置在state為backup的節(jié)點上,而且這個節(jié)點的優(yōu)先級必
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 須別另外的高们童。當主mysql恢復后不搶占資源? ? ? ? ? ? ? ? ? ? ? ? ?
authentication {? ? ? ? ? ? ? ? ? ? ? ? ? #這里設置認證
auth_type PASS? ? ? ? ? ? ? ? ? ? #認證方式畔况,可以是PASS或AH兩種認證方式
auth_pass 1111? ? ? ? ? ? ? ? ? ? #認證密碼
}
virtual_ipaddress {? ? ? ? ? ? ? ? ? ? ? ? #這里設置的就是VIP,也就是虛擬IP地址慧库,他隨著state的變化而增加刪除跷跪,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 當state為master的時候就添加,當state為backup的時候刪除齐板,這里主要是
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 有優(yōu)先級來決定的吵瞻,和state設置的值沒有多大關系,這里可以設置多個IP地址
192.168.163.250
}
}
virtual_server 192.168.163.250 80 {? ? ? ? ? ? ? ? #置一個virtual server: VIP:Vport
delay_loop 3? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #service polling的delay時間甘磨,即服務輪詢的時間間隔
lb_algo rr? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #LVS調(diào)度算法? ? ? ? ? ? ? ? ? ? ? ?
lb_kind DR? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #集群模式
protocol TCP? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #健康檢查用的是TCP還是UDP
real_server 192.168.163.130 80 {? ? ? ? ? ?
weight 1? ? ? ? ? ? ? ? ? #給每臺的權重听皿,0表示失效(不知給他轉發(fā)請求知道他恢復正常),默認是1
TCP_CHECK {? ? ? ? ? ? ? ? ? ? ? ? #檢查健康方式TCP方式宽档,健康檢查方式一共有HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK
connect_timeout 3? ? ? ? ? #連接超時時間尉姨,默認是1s
retry 3? ? ? ? ? ? ? ? ? ? #重新連接次數(shù)
delay_before_retry 3? ? ? #重連間隔
}
}
real_server 192.168.163.131 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}?
}?
}
DS2:
配置方法同DS1?
注意:在配置keep alived文件時,DS的優(yōu)先級設置一定要比DS1的優(yōu)先級新鹪;DS2配置文件里面的state要改為backup
添加命令:
ifconfig ens33:0 192.168.254.250 broadcast 192.168.254.250 netmask 255.255.255.255 up
? ? ? ? # 在ens33的子網(wǎng)卡添加一個虛擬ip,保證服務可以訪問到VIP其垄;
route add -host 192.168.254.250 dev ens33:0
? ? ? ? #添加一個路由通過ens33來訪問Vip 192.168.254.250
RS
安裝http:yum -y install httpd
在/var/www/html目錄里添加一個index.html文件:echo "<h1>this is a 130 host</h1>">index.html
更改內(nèi)核參數(shù):
ifconfig lo:0 192.168.254.250 broadcast 192.168.254.250 netmask 255.255.255.255 up #loopback不能對外通信疗隶,只能對內(nèi)通信
? ? ? ? #在loopback網(wǎng)卡上添加一個VIP
route add -host 192.168.254.250 dev lo:0
cho "1">/proc/sys/net/ipv4/con/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
? ? ? ? #修改內(nèi)核參數(shù)
? ? ? ? #這些配置參數(shù)重啟后都會消失彪笼,只有把這些參數(shù)寫入到/etc/sysctl.conf中參數(shù)才不會在重啟后消失
RS1、RS2配置相同
啟動服務:
DS1、2 啟動keepalive服務:systemctl start keepalived.service;
RS1儡羔、2啟動http服務:systemctl start httpd;
測試1:
1璧诵、在測試機上進行測試輸入:curl 192.168.163.250汰蜘;
2、在DS1上輸入:ipvsadm -Ln --stats ?查看狀態(tài)之宿;
3族操、讓DS1宕機,關閉keepalived服務比被,在進行測試色难;在DS2上輸入:ipvsadm -Ln --stats ?查看狀態(tài);
4等缀、讓DS1恢復keepalived服務在進行測試枷莉,查看狀態(tài);
5尺迂、也可查看日志文件:tail -f ?/var/log/messages ? #重復循環(huán)刷新日志文件的最后一行依沮;
測試2:
1、修改DS1的keepalived.conf文件枪狂,把里面的nopreempt注釋去掉,把狀態(tài)改為backup宋渔;
2州疾、修改DS2的keepalived.conf文件,把里面的nopreempt注釋去掉皇拣;
3严蓖、重復測試1的操作