Ubuntu安裝keepalived
一、Keepalived是什么鬼東西:
keepalived是集群管理中保證集群高可用的一個服務軟件,其功能類似於heartbeat,用來防止單點故障。
二、Keepalived 這個鬼東西的工作原理:
keepalived是以VRRP協議為實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗余協議。
虛擬路由冗余協議,可以認為是實現路由器高可用的協議,即將N台提供相同功能的路由器組成一個路由器組,這個組里面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在局域網內其他機器的默認路由為該vip),master會發組播,當backup收不到vrrp包時就認為master宕掉了,這時就需要根據VRRP的優先級來選舉一個backup當master。這樣的話就可以保證路由器的高可用了。
keepalived主要有三個模塊,分別是core、check和vrrp。core模塊為keepalived的核心,負責主進程的啟動、維護以及全局配置文件的加載和解析。check負責健康檢查,包括常見的各種檢查方式。vrrp模塊是來實現VRRP協議的。
以下是keepalived官網上提供的架構圖
三、環境准備和keepalived的安裝
1、通過ip addr list 或者ip addr show 或者是ip a 等命令查詢本機ip
2、修改網絡配置
修改/etc/sysctl.conf配置文件
首先找到net.ipv4.ip_forward=1這個配置,並其注釋去除,然后在下面插入net.ipv4.ip_nonlocal_bind=1這句配置
保存並退出;
查看是否配置成功
如果輸出不是1而是0就說明可能還沒生效,執行sudo sysctl –p使其生效
這樣網絡配置就配置好了
3、安裝keepalived和相關包
先安裝相關包
再安裝keepalived
輸入y繼續
安裝成功
4、配置keepalived.conf
編輯keepalived.conf文件
在keepalived.conf中編輯如下內容
global_defs { notification_email { 1412262314@qq.com } notification_email_from guoxm@puzek.com smtp_server smtp.mxhichine.com smtp_connect_timeout 30 router_id server71 } vrrp_script chk_health { script "/opt/keepalived/check_health.sh" interval 1 weight 1 } vrrp_instance VI_1 { state BACKUP interface ens33 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass puzek } virtual_ipaddress { 192.168.100.100 } track_script { chk_health } notify_master "/opt/keepalived/notify.sh master" notify_backup "/opt/keepalived/notify.sh backup" notify_fault "/opt/keepalived/notify.sh fault" }
這里可以創建一個keepalived_script用戶(可以不用),用於執行keepalived的腳本
sudo useradd keepalived_script
然后創建密碼
sudo passwd keepalived_script
輸入密碼和確認密碼就創建完成了
然后創建keepalived需要使用shell腳本后,將腳本的用戶和用戶組都設置成keepalived_script
sudo chown -R keepalived_script:keepalived_script notify.shsudo
然后就可以啟動keepalived了
啟動keepalived(停止使用stop)
查看是否啟動成功
必須要有三個keepalived的進程,這三個分別是keepalived父進程,vrrp子進程、check子進程;兩個子進程都被系統watchlog看管,兩個子進程各自負責復雜自己的事;
然后查看虛擬ip是否起來了
如果有其他問題可以查看keepalived的日志(keepalived的日志默認打在系統日志中,所以可以使用grep 過濾一下)
cat /var/log/syslog | grep Keepalived