Centos7.4下keepalived-1.3.5的安裝使用

keepalived兩個功能,一個是使lvs使用的vip高可用,一個是監控各個上游節點的對應端口是否正常工做,以保證快速剔除壞掉的節點。html

 

keepalived默認的yum 1.3.5有BUG,根本跑不起來,因此咱們換成源碼壓縮包下載後編譯安裝的方式進行安裝c++

 

通過實驗 CentOS7.4下的lvs不是不停輪詢,而是一段時間內會綁定用戶和實際目標服務器,keepalived中也會表現出來,不過咱們能夠換個ip訪問一下,來驗證咱們的配置結果。算法

 

本文出現三種節點名稱,keepalived主節點和備用節點,以及RealServer——最終提供服務的服務器,注意將keepalived的主節點、備用節點、realserver分配爲不一樣的機器服務器

 

一、安裝依賴(本文使用的Centos7.4是最小安裝,部分依賴不全,因此須要先安裝依賴)網絡

yum install -y gcc gcc-c++  openssl-devel

二、下載keepalived-1.3.5壓縮包(下載地址),放在/usr/local目錄下,並解壓,步驟略編輯器

三、進入解壓後的目錄中,執行如下命令:ide

./configure --prefix=/usr/local/keepalived && make && make install
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
mkdir -p /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp ./keepalived/etc/init.d/keepalived /etc/init.d/
chmod 755 /etc/init.d/keepalived

四、編輯keepalived.serviceoop

vi /lib/systemd/system/keepalived.service

將全部的字符串 「/usr/local/keepalived」 替換爲空白,vi編輯器命令:【%s/\/usr\/local\/keepalived//g】spa

五、刷新配置.net

systemctl daemon-reload

六、編輯/etc/keepalived/keepalived.conf配置爲本身的配置(摘自傳送門,有改動),示例:

主節點:

global_defs {  
   notification_email {  
         edisonchou@hotmail.com  
   }  
   notification_email_from sns-lvs@gmail.com  
   smtp_server 192.168.80.1  
   smtp_connection_timeout 30
   router_id LVS_DEVEL  # 設置lvs的id,在一個網絡內應該是惟一的
}  
vrrp_instance VI_1 {  
    state MASTER   #指定Keepalived的角色,MASTER爲主,BACKUP爲備          
    interface eth1  #指定網卡名稱,是實際使用的網卡,而非虛網卡
    virtual_router_id 51  #虛擬路由編號,主備要一致
    priority 100  #定義優先級,數字越大,優先級越高,主DR必須大於備用DR    
    advert_int 1  #檢查間隔,默認爲1s
    authentication {  
        auth_type PASS  
        auth_pass 1111  
    }  
    virtual_ipaddress {  
        192.168.80.200  #定義虛擬IP(VIP)爲192.168.2.33,可多設,每行一個
    }  
}  
# 定義對外提供服務的LVS的VIP以及port
virtual_server 192.168.80.200 80 {  
    delay_loop 6 # 設置健康檢查時間,單位是秒                    
    lb_algo wrr # 設置負載調度的算法爲wlc                   
    lb_kind DR # 設置LVS實現負載的機制,有NAT、TUN、DR三個模式   
    nat_mask 255.255.255.0                
    persistence_timeout 0          
    protocol TCP                  
    real_server 192.168.80.102 80 {  # 指定real server1的IP地址
        weight 3   # 配置節點權值,數字越大權重越高              
        TCP_CHECK {  
        connect_timeout 10         
        nb_get_retry 3  
        delay_before_retry 3  
        connect_port 80  
        }  
    }  
    real_server 192.168.80.103 80 {  # 指定real server2的IP地址
        weight 3  # 配置節點權值,數字越大權重越高  
        TCP_CHECK {  
        connect_timeout 10  
        nb_get_retry 3  
        delay_before_retry 3  
        connect_port 80  
        }  
     }  
}
View Code

注意網卡名必定要和你機器上的一致。另外,virtual_router_id不要與同網絡的其餘的keepalived集羣配置衝突。

 

備用節點,須要修改:

將MASTER改成BACKUP,並將priority由100改低一些

 

七、在各個Real Server中添加腳本,命名爲【rs.sh】(摘自傳送門,有改動):

SNS_VIP=$2
#/etc/rc.d/init.d/functions
case "$1" in
start)
       ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
       /sbin/route add -host $SNS_VIP dev lo:0
       echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
       sysctl -p >/dev/null 2>&1
       echo "RealServer Start OK"
       ;;
stop)
       ifconfig lo:0 down
       route del $SNS_VIP >/dev/null 2>&1
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
       echo "RealServer Stoped"
       ;;
*)
       echo "Usage: $0 {start|stop}"
       exit 1
esac
exit 0

增長執行權限:

chmod 755 rs.sh

執行:

./rs.sh start [VIP]

該內容將VIP做爲RealServer的一個相似127.0.0.1的IP添加到RealServer的迴環IP列表中,讓RealServer認爲主節點經過VIP轉發過來的包真的是發給本身的,從而正常處理該包,不至於認爲數據包不合法。

 

八、在主節點和備節點上分別執行 

systemctl start keepalived

 

 

九、其餘注意內容

A、若是在正式環境中,建議將添加回環地址做爲開機啓動項,而且keepalived 也配置成開機啓動

B、若是使用了防火牆,務必容許keepalived使用的vrrp組播經過防火牆,不然虛IP會同時出如今主備兩臺機器上。

命令以下(網卡換成你的網卡便可):

firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface [網卡] --destination 224.0.0.18 --protocol vrrp -j ACCEPT

firewall-cmd --reload
相關文章
相關標籤/搜索