1、基礎依賴包安裝
yum install gcc yum -y install openssl-devel 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
此處下載最新版本2.0.18
將keepalived-2.0.18.tar.gz安裝包上傳到服務器上的某個目錄下,此處為/usr/local/src目錄下:
進入安裝目錄下並解壓安裝包:
cd /usr/local/src/ tar -zxvf keepalived-2.0.18.tar.gz
將解壓的目錄移動到/usr/local/keepalived下並進入移動后的目錄:
mv keepalived-2.0.18 ../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
附注:
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 } } }
修改完之后重新啟動