【概述】:Keepalived 是一個免費開源的,用C編寫。主要提供loadbalancing(負載均衡)和 high-availability(高可用)功能,負載均衡實現需要依賴Linux的虛擬服務內核模塊(ipvs),而高可用是通過VRRP協議實現多台機器之間的故障轉移服務。
1.Keepalived高可用軟件
Keepalived軟件起初是專為LVS負載均衡軟件設計的,用來管理並監控LVS集群系統中各個服務節點的狀態,后來又加入了可以實現高可用的VRRP功能。因此,keepalived除了能夠管理LVS軟件外,還可以作為其他服務的高可用解決方案軟件。
keepalived軟件主要是通過VRRP協議實現高可用功能的。VRRP是Virtual Router Redundancy Protocol(虛擬路由冗余協議)的縮寫,VRRP出現的目的就是為了解決靜態路由的單點故障問題的,它能保證當個別節點宕機時,整個網絡可以不間斷地運行。所以,keepalived一方面具有配置管理LVS的功能,同時還具有對LVS下面節點進行健康檢查的功能,另一方面也可以實現系統網絡服務的高可用功能。
2.Keepalived高可用故障切換轉移原理
Keepalived高可用服務對之間的故障切換轉移,是通過VRRP來實現的。在keepalived服務工作時,主Master節點會不斷地向備節點發送(多播的方式)心跳消息,用來告訴備Backup節點自己還活着。當主節點發生故障時,就無法發送心跳的消息了,備節點也因此無法繼續檢測到來自主節點的心跳了。於是就會調用自身的接管程序,接管主節點的IP資源和服務。當主節點恢復時,備節點又會釋放主節點故障時自身接管的IP資源和服務,恢復到原來的備用角色。
【安裝】
一、准備工作
兩台虛擬機如: 192.168.0.99 和 192.168.0.100
1、1、Openssl 安裝
安裝之前先檢查openssl庫是否已經安裝,在任意目錄下執行:yum list installed openssl執行結果如下,顯示已經安裝openssl插件
若沒有安裝,先安裝openssl插件
安裝步驟:
1.下載地址:
https://www.openssl.org/source/openssl-1.1.0c.tar.gz
2.上傳至/opt/software目錄下
3.解壓至/usr/local目錄下:
tar –zxvf openssl-1.1.0c.tar.gz –C /usr/local/
4. 執行安裝:./config && make && make install
解釋:安裝時間較長,一直等待即可
完成既然圖如下:
1.2 檢查Libnl-devel
安裝libnl-devel-1.1.4-3.el7.x86_64.rpm (keepalived的依賴插件)
方案一、在線安裝
在任意目錄下執行yum -y install libnl libnl-devel
方案二、離線安裝
1.下載依賴 libnl-devel-1.1.4-3.el7.x86_64.rpm
下載地址:https://access.redhat.com/downloads/
備注:在redhat官網中查找,詳情見libnl-devel和libnfnetlink-devel下載方式文檔
2.將下載的libnl-devel-1.1.4-3.el7.x86_64.rpm依賴上傳至/home/software/目錄下。
3、安裝過程如下:安裝過程中出現錯誤,加上忽略依賴即可
1.3 Libnfnetlink-devel
安裝libnfnetlink-devel-1.0.1-4.el7.x86_64.rpm (keepalived的依賴插件)
方案一、在線安裝
在任意目錄下執行yum install -y libnfnetlink-devel
方案二、離線安裝
-
- 下載依賴 libnfnetlink-devel-1.0.1-4.el7.x86_64.rpm
下載地址:https://access.redhat.com/downloads/
備注:在redhat官網中查找,詳情見libnl-devel和libnfnetlink-devel下載方式文檔
- 將下載的libnfnetlink-devel-1.0.1-4.el7.x86_64.rpm依賴上傳至/home/software/目錄下。
- 安裝截圖如下
二、安裝
2、1 安裝
[root@tycoon ~]# wget http://www.keepalived.org/software/keepalived-1.2.24.tar.gz
[root@tycoon ~]# tar -xzvf keepalived-1.2.24.tar.gz
[root@tycoon ~]# cd keepalived-1.2.24
[root@tycoon keepalived-1.2.24]# ./configure --prefix=/usr/local/keepalived
[root@tycoon keepalived-1.2.24]# make && make install
2、2 設置快捷方式
[root@tycoon ~]# mkdir /etc/keepalived
[root@tycoon ~]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
[root@tycoon ~]# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/keepalived
[root@tycoon ~]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived
2.3 建立軟連接
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
創建開機啟動
chkconfig keepalived on
查看服務狀態
systemctl status keepalived
2.4 設置keepalived 服務開機啟動
Shell>chkconfig keepalived on
Shell>service keepalived start # 啟動服務
Shell>service keepalived stop # 停止服務
Shell>service keepalived restart # 重啟服務
2.5、配置服務啟動方式
Shell> cd /etc/init.d/
Shell> chmod +x keepalived
Shell> service keepalived start
Starting keepalived: /bin/bash: keepalived: command not found
[FAILED]
Shell> ln -s /home/soft/keepalived/sbin/keepalived /usr/bin/
Shell> service keepalived start
Starting keepalived: [ OK ]
2.6、啟動
2.7、驗證啟動狀態
2.8、繼續驗證
【有三個進程說明啟動成功】
master配置文件
! Configuration File for keepalived
global_defs {
notification_email {
# acassen@firewall.loc
# failover@firewall.loc
# sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
# smtp_server 192.168.200.1
# smtp_connect_timeout 30
router_id SERVER_1
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 55
priority 100
protocol TCP
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.199/24
}
}
從節點配置文件
! Configuration File for keepalived
global_defs {
notification_email {
# acassen@firewall.loc
# failover@firewall.loc
# sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
# smtp_server 192.168.200.1
# smtp_connect_timeout 30
router_id SERVER_1
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
interface eno16777736
virtual_router_id 55
priority 100
protocol TCP
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.199/24
}
}
整體配置結束。以備后用。