到這一步的時候, 說明主從配置已經處理好
第一步:安裝keepalived-2.2.2
1、基礎依賴包安裝
yum install gcc yum -y install openssl-devel #我的centos8缺少這個,只要執行這句命令即可 yum -y install libnl libnl-devel yum -y install libnfnetlink-devel yum -y install net-tools yum -y install vim
2、安裝包下載、解壓編譯和安裝
官網下載keepalived安裝包:
https://www.keepalived.org/download.html
將keepalived-2.2.2.tar.gz安裝包上傳到服務器上的某個目錄下,此處為/usr/local/src目錄下
進入安裝目錄下並解壓安裝包:
cd /usr/local/src/ tar -zxvf keepalived-2.2.2.tar.gz
將解壓的目錄移動到/usr/local/keepalived下並進入移動后的目錄:
mv keepalived-2.2.2 ../keepalived cd ../keepalived/
生成makefile文件:
./configure
安裝執行:
make && make install
完成后會在以下路徑生成:
/usr/local/etc/keepalived/keepalived.conf /usr/local/etc/sysconfig/keepalived /usr/local/sbin/keepalived
3 、初始化及啟動
將配置文件放到默認路徑下:
mkdir /etc/keepalived cp /usr/local/keepalived/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
將keepalived啟動腳本(源碼目錄下),放到/etc/init.d/目錄下:
cp /usr/local/keepalived/keepalived/etc/init.d/keepalived /etc/rc.d/init.d/
將keepalived啟動腳本變量引用文件放到/etc/sysconfig/目錄下:
cp /usr/local/keepalived/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
將keepalived主程序加入到環境變量/usr/sbin/目錄下:
cp /usr/local/sbin/keepalived /usr/sbin/
啟動keepalived:
service keepalived start #如果啟動不了,可以嘗試重啟centos8
附注:
service keepalived stop //停止服務 service keepalived status //查看服務狀態
4 、配置文件修改
停止keepalived服務,修改keepalived.conf配置文件(第3步中的/etc/keepalived/keepalived.conf)並重新啟動keepalived服務加載配置文件。
配置屬性說明可參照keepalived.conf文件,在具體使用中可參考修改:
! Configuration File for keepalived
# 全局定義塊
global_defs {
# 郵件通知配置,用於服務有故障時發送郵件報警,可選項
notification_email {
541223550@qq.com
}
# 通知郵件從哪里發出
notification_email_from root@localhost
# 通知郵件的smtp地址
smtp_server 127.0.0.1
# 連接smtp服務器的超時時間
smtp_connect_timeout 30
# 標識本節點的字條串,通常為hostname,但不一定非得是hostname。故障發生時,郵件通知會用到
router_id LVS_DEVEL
}
# 做健康檢查的腳本配置,當時檢查失敗時會將vrrp_instance的priority減少相應的值
vrrp_script chk_haproxy {
# 待執行腳本
script "/etc/keepalived/chk_nginx.sh"
# 執行間隔
interval 2
# 控制priority增減
weight 2
}
# VRRP實例定義塊
vrrp_instance VI_1 {
# 標識當前節點的狀態,可以是MASTER或BACKUP,當其他節點keepalived啟動時會將priority比較大的節點選舉為MASTER
state MASTER
# 節點固有IP(非VIP)的網卡,用來發VRRP包
interface ens192
# 取值在0-255之間,用來區分多個instance的VRRP組播。同一網段中virtual_router_id的值不能重復,否則會出錯
virtual_router_id 100
# 用來選舉master的,要成為master,那么這個選項的值最好高於其他機器50個點,該項取值范圍是[1-254](在此范圍之外會被識別成默認值100)
priority 200
# 發VRRP包的時間間隔,即多久進行一次master選舉(可以認為是健康查檢時間間隔)
advert_int 1
# 認證區域,認證類型有PASS和HA(IPSEC),推薦使用PASS(密碼只識別前8位)
authentication {
auth_type PASS
auth_pass 1111
}
# 調用chk_http_port中定義的腳本,當使用track_script時可以不用加nopreempt,只需要加上preempt_delay 5,這里的間隔時間要大於vrrp_script中定義的時長
track_script {
chk_haproxy
}
# 允許一個priority比較低的節點作為master,即使有priority更高的節點啟動。nopreemt必須在state為BACKUP的節點上才生效(因為是BACKUP節點決定是否來成為MASTER的)
nopreempt
# 啟動多久之后進行接管資源(VIP/Route信息等),前提是沒有nopreempt選項
preempt_delay 300
# 虛擬ip地址
virtual_ipaddress {
192.168.26.34
}
}
# 虛擬服務定義塊
virtual_server 192.168.26.34 9999{
# 延遲輪詢時間(單位秒)
delay_loop 6
# 后端調試算法
lb_algo wrr
# LVS調度類型NAT/DR/TUN
lb_kind DR
# nat掩碼
nat_mask 255.255.255.0
# 持久化超時時間,保持客戶端的請求在這個時間段內全部發到同一個真實服務器,解決客戶連接的相關性問題
persistence_timeout 1
# 傳輸協議
protocol TCP
# 真實提供服務的服務器
real_server 192.168.26.36 9999 {
# 權重
weight 1
# 健康檢查方式 HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK
TCP_CHECK {
# 連接超時時間
connect_timeout 10
# 檢測失敗后的重試次數,若達到重試次數還是失敗則將其從服務器池中移除
nb_get_retry 3
# 下次重試的時間延遲
delay_before_retry 3
# 連接端口
connect_port 9999
}
}
real_server 192.168.26.54 9999 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 9999
}
}
}
virtual_server 192.168.26.34 3306{
delay_loop 6
lb_algo wrr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 1
protocol TCP
real_server 192.168.26.36 3306 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
real_server 192.168.26.54 3306 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}
修改完之后重新啟動

