CentOS安裝Keepalived


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
        }
    }
}

修改完之后重新啟動

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM