keepalived之單播----k8sHA准備


一、概述

keepalived主要有三個模塊,分別是core、check和vrrp。core模塊為keepalived的核心,負責主進程的啟動、維護以及全局配置文件的加載和解析。check負責健康檢查,包括常見的各種檢查方式。vrrp模塊是來實現VRRP協議的。

Keepalived作為一個高性能集群軟件,它還能實現對集群中服務器運行狀態的監控及故障隔離。接下來介紹下Keepalived對服務器運行狀態監控和檢測的工作原理。 Keepalived工作在TCP/IP參考模型的第三、第四和第五層,也就是網絡層、傳輸層和應用層。根據TCP/IP參考模型各層所能實現的功能,Keepalived運行機制如下:

  1. 在網絡層,運行着四個重要的協議:互連網協議IP、互連網控制報文協議ICMP、地址轉換協議ARP以及反向地址轉換協議RARP。Keepalived在網絡層采用的最常見的工作方式是通過ICMP協議向服務器集群中的每個節點發送一個ICMP的數據包(類似於ping實現的功能),如果某個節點沒有返回響應數據包,那么就認為此節點發生了故障,Keepalived將報告此節點失效,並從服務器集群中剔除故障節點。
  2. 在傳輸層,提供了兩個主要的協議:傳輸控制協議TCP和用戶數據協議UDP。傳輸控制協議TCP可以提供可靠的數據傳輸服務,IP地址和端口,代表一個TCP連接的一個連接端。要獲得TCP服務,須在發送機的一個端口上和接收機的一個端口上建立連接,而Keepalived在傳輸層就是利用TCP協議的端口連接和掃描技術來判斷集群節點是否正常的。Keepalived一旦在傳輸層探測到端口沒有響應數據返回,就認為端口發生異常,然后強制將此端口對應的節點從服務器集群組中移除。
  3. 在應用層,可以運行FTP、TELNET、SMTP、DNS等各種不同類型的高層協議,Keepalived的運行方式也更加全面化和復雜化,用戶可以通過自定義Keepalived的工作方式,例如用戶可以通過編寫程序來運行Keepalived,而Keepalived將根據用戶的設定檢測各種程序或服務是否允許正常,如果Keepalived的檢測結果與用戶設定不一致時,Keepalived將把對應的服務從服務器中移除

 

二、部署

准備:

修改內核參數:

開啟IP轉發功能 :
net.ipv4.ip_forward = 1

開啟允許綁定非本機的IP:

net.ipv4.ip_nonlocal_bind = 1

如果使用LVS的DR或者TUN模式結合Keepalived需要在后端真實服務器上特別設置兩個arp相關的參數:

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

#sysctl -p

keepalived默認使用組播,進行ARP廣播,但是在雲服務器上是禁止進行ARP廣播的。容易造成ARP風暴。所以雲服務器上部署或物理機部署采用單播的方式實現。

下載源碼包進行編譯:

https://github.com/acassen/keepalived/releases

下載相應的版本進行編譯。

ubuntu:

master&backup

# tar xf   keepalived-2.0.6.tar.gz

# cd  keepalived-2.0.6

#./configure && make && make install

# cd keepalived-2.0.6/keepalived ; cp keepalived.service  /etc/systemd/system/

#vim   /etc/systemd/system/keepalived.service

修改如下配置:

ExecStart=/usr/local/sbin/keepalived $KEEPALIVED_OPTIONS -f /etc/keepalived/keepalived.conf

#mkdir /etc/keepalived

!!采用單播,單播必須要配置authentication:

authentication {
auth_type PASS
auth_pass KShcKlwmXCZcXlwlaWNqZmplanhsCg
}

auth_type有兩種方式PASS、AH,auth_pass,如果使用PASS模式,Password string (up to 8 characters),密碼長度8位及以上。

 

官網說明:https://github.com/acassen/keepalived/blob/master/doc/keepalived.conf.SYNOPSIS

# Note: authentication was removed from the VRRPv2 specification by RFC3768 in 2004.
# Use of this option is non-compliant and can cause problems; avoid using if possible,
# except when using unicast, when it can be helpful.
authentication { # Authentication block
auth_type PASS|AH # Simple password or IPSEC AH
auth_pass <STRING> # Password string (up to 8 characters)
}

創建配置文件:

master:

  ! Configuration File for keepalived
    global_defs {
        notification_email {
            root@localhost      #發送郵箱
        }
        notification_email_from keepalived@localhost    #郵箱地址
        smtp_server 127.0.0.1   #郵件服務器地址
        smtp_connect_timeout 30
        router_id km12-01         #主機名,每個節點不同即可
    }

vrrp_instance VI_1 {
    state MASTER        #在另一個節點上為BACKUP
    interface eth0      #IP地址漂移到的網卡
    virtual_router_id 6 #多個節點必須相同
    priority 100        #優先級,備用節點的值必須低於主節點的值
    advert_int 1        #通告間隔1秒
    authentication {
        auth_type PASS      #預共享密鑰認證
        auth_pass 571f97b2  #密鑰
    }
    unicast_src_ip 10.42.13.20
    unicast_peer {
      10.42.43.17
      10.42.150.22
    }
    virtual_ipaddress {
        10.42.79.10/16    #VIP地址
    }
}

 

 

backup:

 ! Configuration File for keepalived
    global_defs {
        notification_email {
            root@localhost      #發送郵箱
        }
        notification_email_from keepalived@localhost    #郵箱地址
        smtp_server 127.0.0.1   #郵件服務器地址
        smtp_connect_timeout 30
        router_id km12-02         #主機名,每個節點不同即可
    }

vrrp_instance VI_1 {
    state BACKUP        #在另一個節點上為MASTER
    interface eth0      #IP地址漂移到的網卡
    virtual_router_id 6 #多個節點必須相同
    priority 80        #優先級,備用節點的值必須低於主節點的值
    advert_int 1        #通告間隔1秒
    authentication {
        auth_type PASS      #預共享密鑰認證
        auth_pass 571f97b2  #密鑰
    }
    unicast_src_ip 10.42.43.17
    unicast_peer {
      10.42.150.22
      10.42.13.20
    }
    virtual_ipaddress {
       10.42.79.20/16    #漂移過來的IP地址
    }
}

 

 

注意配置文件中的,單播配置方式:

 unicast_src_ip 10.42.43.17  #本機地址 unicast_peer { 10.42.150.22 目標地址 10.42.13.20 }

 

 

三、啟動服務

service  keepalived start

 


免責聲明!

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



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