基本概念:
什么是Keepalived呢,keepalived觀其名可知,保持存活,在網絡里面就是保持在線了,也就是所謂的高可用或熱備,用來防止單點故障(單點故障是指一旦某一點出現故障就會導致整個系統架構的不可用)的發生,那說到keepalived時不得不說的一個協議就是VRRP協議,可以說這個協議就是keepalived實現的基礎。
VRRP( Virtual Router Redundancy Protocol )協議:
虛擬路由冗余協議(Virtual Router Redundancy Protocol,簡稱VRRP)是由IETF提出的解決局域網中配置靜態網關出現單點失效現象的路由協議,Keepalived就是巧用VRRP協議來實現高可用性(HA)的。
1.用于實現路由器冗余的協議
2.解決靜態路由單點故障問題
3.通過一種競選(election)協議來實現虛擬路由器的功能
LVS提供負載均衡,keepalived提供健康檢查,故障轉移,提高系統的可用性! 采用這樣的架構以后,很容易對現有系統進行擴展,只要在后端添加或者減少realserver,更改lvs的配置文件,就能實現無縫配置變更!
實驗搭建:
server1:lvs調度服務器DS1:192.168.13.111
server2:后端服務器RS1:192.168.13.112
server3:后端服務器RS2:192.168.13.113
server4:lvs調度服務器DS2:192.168.13.114
VIP:192.168.13.100
1 . 在server1與server4上分別解壓keepalived并編譯安裝:
tar zxf keepalived-2.0.6.tar.gz # 解壓
yum install gcc openssl-devel -y # 解決依賴
cd keepalived-2.0.6
./configure --prefix=/usr/local/keepalived --with-init=systemd # 編譯
make &&make install # 安裝

裝好之后會有這個keepalived目錄,
其實不用兩邊都這么裝,麻煩,一邊裝好之后直接scp傳過去就好了。
2 . 配置啟動配置文件 調度器(server1和server4)都進行相同操作:
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/
3 . 配置keepalived:
編寫主節點server1的配置文件
cd /etc/keepalived
vim keepalived.conf
global_defs {notification_email {root@localhost #節點宕機了將會接收到異常郵件的主機}notification_email_from keepalived@localohost #郵件發送人smtp_server 127.0.0.1 #發送的服務器smtp_connect_timeout 30 #指定連接超時時間router_id LVS_DEVELvrrp_skip_check_adv_addrvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state MASTER #主節點表示interface ens33 # 網卡名virtual_router_id 13priority 100 #權重advert_int 1 #檢查的間隔1sauthentication {auth_type PASS #認證方式auth_pass 1111 #認證的密碼}virtual_ipaddress {192.168.13.100}
}
virtual_server 192.168.13.100 80 {delay_loop 6 #連接失敗六次之后,發送郵件lb_algo rr #lvs調度算法lb_kind DR #lvs該工作方式protocol TCP # 端口real_server 192.168.13.112 80 {TCP_CHECK {weight 1connect_port 80connect_timeout 3}}real_server 192.168.13.113 80 {TCP_CHECK {weight 1connect_port 80connect_timeout 3}}
}
編好之后
systemctl start keepalived
systemctl enable keepalived
再給server4 scp 過去
scp keepalived.conf root@192.168.13.114:/etc/keepalived/
在server4端只需要
state BACKUP
priority 50 ##修改這兩個選項
改好之后
systemctl start keepalived
systemctl enable keepalived
3 . 真實服務器設置
1). 安裝httpd 啟動設置訪問頁面
注意:該處為了驗證負載均衡的效果,后端真實服務器設置不同的訪問內容,明顯標示內容來自不同的后端服務器。
2). 添加VIP到各自的物理網卡中
ip addr add 192.168.13.100/24 dev ens33 # 臨時添加ip到eth0網卡
3). 設置arptable策略,解決將用戶所有針對VIP的請求發送到DS 而不是RS
yum install arptables -y # 安裝管理工具
arptables -A INPUT -d 192.168.13.100 -j DROP
arptables -A OUTPUT -s 192.168.13.100 -j mangle --mangle-ip-s 192.168.13.112
在另一端RS修改記著ip
4 . 測試:
1). 設置完成真實服務器之后,在兩個調度器上查看ipvsadm 全部自動生成負載均衡策略:

2). 使用客戶端主機測試:
負載均衡正常

3 ). 關閉真實服務器172.25.13.140的http的服務。模擬該服務器故障,測試該真實服務器被踢除出列表,當服務正常的時候會自動添加到列表中


當打開服務時,恢復正常


4 ) . 目前負載均衡服務器工作在主服務器,主服務器上會添加vip,關閉主服務器的keepalived,模擬負載均衡主服務器異常,這時候會切換到由服務器提供負載均衡服務,并且vip會主動漂移到副服務器。
主服務器


負載均衡主服務器異常,將會由副服務器提供服務,vip會自動漂移到副服務器:

客戶端測試服務正常:
