centos7 下原始碼安裝keepalived踩坑記
阿新 • • 發佈:2018-11-29
目錄
-
環境準備
-
為什麼原始碼安裝
- 原始碼安裝
環境準備
- 全新最小化安裝的centos 7.5
- keepalived 1.4.5
- vip : 172.16.0.169
為什麼原始碼安裝
centos7 自帶的 yum安裝,keepalived 版本為1.3.5, 這個版本會有一個大坑,導致高可用對應的服務掛掉,如果觸發keepalived down
通過 service keepalived status 命令檢視執行狀態會看到 tcp socket bind failed. rescheduling 這個異常, 通過原始碼安裝無此問題
原始碼安裝
下載安裝包並解壓
#cd /opt
#wget http://www.keepalived.org/software/keepalived-1.4.5.tar.gz
#tar -zxvf /opt/keepalived-1.4.5.tar.gz
安裝編譯依賴包,不安裝依賴包編譯不成功
#yum install curl gcc openssl-devel libnl3-devel net-snmp-devel libnfnetlink-devel -y
編譯安裝
編譯安裝成功後,就會自動生成啟停服務
#cd /opt/keepalived-1.4.5
#./configure
#make && make install
建立配置檔案
原始碼安裝預設配置檔案路徑為: /etc/keepalived/keepalived.conf ,不建立這個檔案,不能成功啟動
#mkdir -p /etc/keepalived
#vim /etc/keepalived/keepalived.conf
配置檔案如下:
自行根據註釋修改 備例項的配置
注意: 實際配置要把註釋內容去掉,否則會產生某些功能失效
! Configuration File for keepalived
global_defs {
router_id MYSQL-140 #每個keepalived取個不同名稱
}
vrrp_instance VI_1 {
state MASTER # MASTER為主例項,BACKUP 為從例項
interface eth0 # 網絡卡名稱
virtual_router_id 60 # 主備這裡要配置為同樣的
priority 100 # 優先順序,主要高於備. 一般主配置為100 備配置為80
advert_int 1
nopreempt # 主動搶佔,主備都開啟的話,伺服器搶佔過去後,要等這個伺服器keepalived停掉才會漂移到另一臺
authentication {
auth_type PASS # 主備必須配置成同樣的
auth_pass 1111 # 主備必須配置成同樣的
}
virtual_ipaddress {
172.16.0.169 # vip,主備必須配置一樣
}
}
}
}
防火牆開啟vrrp
keepalived 是基於vrrp做到虛擬ip漂移的,這裡不開啟的話,主備均會認為對方掛掉了,會造成主備都能獲取到虛擬ip(vip)
#firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent
#firewall-cmd --reload
設定開機服務
#systemctl enable keepalived
操作keepalived
#service keepalived start
#service keepalived stop
#service keepalived restart
#service keepalived status
驗證結果
首先在主備例項的伺服器分別 執行 service keepalived start 開啟keepalived
- 通過ip addr 命令分別檢視主備兩臺機器,只有主示例的伺服器可以看到這個vip
- 在主例項的伺服器執行 service keepalived stop 停止keepalived
- 通過ip addr 命令檢視備例項的ip, 會發現可以看到vip的
- 在主例項的伺服器執行 service keepalived start 再次啟動keepalived
- 通過ip addr 命令分別檢視主備兩臺機器,只有主示例的伺服器可以看到這個vip