keepalived安裝部署與簡單測試

keepalived:是一個類似於 layer3, 4 & 7 交換機制的軟件,也就是我們平時說的第 3 層、第 4 層和第 7層交換。 Keepalived 的作用是檢測 web 服務器的狀態,如果有一臺 web 服務器死機,或工作出現故障,Keepalived 將檢測到,並將有故障的 web 服務器從系統中剔除,當 web 服務器工作正常後 Keepalived 自動將web 服務器加入到服務器羣中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的web 服務器。

 

keepalived程序是vrrp協議在linux主機上以守護進程的方式實現的,能夠根據配置文件生成IPVS規則,並對各real server的健康做監測,以及Loadbalance主機和backup主機之間failover的實現。

 

keepalived在TCP/IP七層中的三層各層原理分別如下:
Layer3(IP層): Keepalived 使用 Layer3 的方式工作式時, Keepalived 會定期向服務器羣中的服務器發送一個 ICMP 的數據包(既我們平時用的 Ping 程序) , 如果發現某臺服務的 IP 地址沒有激活,Keepalived 便報告這臺服務器失效,並將它從服務器羣中剔除,這種情況的典型例子是某臺服務器被非法關機。 Layer3 的方式是以服務器的 IP 地址是否有效作爲服務器工作正常與否的標準。
Layer4(TCP層): 主要以 TCP 端口的狀態來決定服務器工作正常與否。如 web server 的服務端口一般是80,如果 Keepalived 檢測到 80 端口沒有啓動,則 Keepalived 將把這臺服務器從服務器羣中刪除。
Layer7(應用層):Layer5 就是工作在具體的應用層了,比 Layer3,Layer4 要複雜一點,在網絡上佔用的帶寬也要大一些。 Keepalived 將根據用戶的設定檢查服務器程序的運行是否正常,如果與用戶的設定不相符,則 Keepalived 將把服務器從服務器羣中剔除;

   比如訪問一個頁面,如果沒有這個頁面,就會將該節點剔除

 

keepalived的作用:

  1、管理VIP(虛擬IP): VIP會在LVS(虛擬主機)之間漂移

  2、監控LVS分發器:運行在主分發的 Keepalived 會以組播的形式向網絡中宣告自己,即主分發器還活着,備用節點能收到。當備用節點,在一個時間單位中收不到組播,備用節點會認爲主 LVS 掛了,開始接手主分發器工作,把VIP 配給自己

  3、管理RS : keepalived會每隔一個時間段去做一次類似於訪問的操作

 

一般Keepalived是實現前端高可用,常用的前端高可用的組合有,就是我們常見的LVS+Keepalived、Nginx+Keepalived、HAproxy+Keepalived

 

keepalived的配置文件keepalived.conf每段說明:

Global configuration : 全局配置

         global_defs{

         …

}

VRRP Configuration : 配置VRRP實例

         vrrp_instance name{

}

LVS Configuration : IPVS的相關配置

         virtual_server ip port {

         real_server ip port {

  …

}

}

 

 

安裝方式省略,可採用源碼編譯,也可採用官方yum源安裝

 

主要配置文件:

keepalived配置文件keepalived.conf詳解:

  #全局定義部分

global_defs {

   notification_email {

     [email protected]              #設置報警郵件地址,收件人郵箱,可以設置多個,每行一個。注意,如果要開啓郵件報警,需要開啓本機的sendmail服務。

     [email protected]

   }

   notification_email_from Keepalived@localhost           #發件人郵箱。

   smtp_server 192.168.200.1      #設置smtp server地址。

   smtp_connect_timeout 30         #設置連接smtp服務器超時時間。

   router_id  LVS_MASTER    #運行Keepalived服務器的一個標識。建議寫主機名

}

#vrrp實例定義部分

vrrp_instance VI_1 {

state MASTER        #指定Keepalived的角色,MASTER表示此主機是主用服務器,BACKUP表示是備用服務器。

    interface eth0         #指定HA監測網絡的接口。

    virtual_router_id 51  #虛擬路由標識,這個標識是一個數字,並且同一個vrrp實例使用唯一的標識,即同一個vrrp_instance下,MASTER和BACKUP必須是一致的。

priority 100            #定義優先級,數字越大,優先級越高,在一個vrrp_instance下,MASTER的優先級必須大於BACKUP的優先級。

    advert_int 1    #設定MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒。

    authentication {                    #設定驗證類型和密碼。

        auth_type PASS               #設置驗證類型,主要有PASS和AH兩種。

        auth_pass 1111   #設置驗證密碼,在一個vrrp_instance下,MASTER與BACKUP必須使用相同的密碼才能正常通信。

    }

    virtual_ipaddress {         #設置虛擬IP地址,可以設置多個虛擬IP地址,每行一個。

        192.168.12.135

    }

}

#虛擬服務器定義部分

virtual_server 192.168.12.135 80 {      #設置虛擬服務器,需要指定虛擬ip地址和服務端口,ip與端口之間用空格隔開

    delay_loop 6                                #設置健康檢查時間,單位是秒。

    lb_algo rr                           #設置負載調度算法,這裏設置爲rr,即輪詢算法。

    lb_kind DR                       #設置LVS實現負載均衡的機制,可以有NAT、TUN和DR三個模式可選。

persistence_timeout 50           #會話保持時間,單位是秒,這個選項對於動態網頁是非常有用的,爲集羣系統中session共享提供了一個很好的解決方案。有了這個會話保持功能,用戶的請求會被一直分發到某個服務節點,直到超過這個會話保持時間。需要注意的是,這個會話保持時間,是最大無響應超時時間,也就是說用戶在操作動態頁面時,如果在50秒內沒有執行任何操作,那麼接下來的操作會被分發到另外節點,但是如果一直在操作動態頁面,則不受50秒的時間限制。0爲不可用

protocol TCP                               #指定轉發協議類型,有tcp和udp兩種。

real_server 192.168.12.246 80 {   #配置服務節點1,需要指定real server的真實IP地址和端口,ip與端口之間用空格隔開。

weight 3 #配置服務節點的權值,權值大小用數字表示,數字越大,權值越高,設置權值的大小可以爲不同性能的服務器分配不同的負載,可以對性能高的服務器設置較高的權值,而對性能較低的服務器設置相對較低的權值,這樣就合理的利用和分配了系統資源。

        TCP_CHECK {                   #realserve的狀態檢測設置部分,單位是秒

            connect_timeout 10     #10秒無響應超時

            nb_get_retry 3             #重試次數

            delay_before_retry 3    #重試間隔

        }

    }

    real_server 192.168.12.237 80 {     #配置服務節點2

        weight 1                

        TCP_CHECK {

            connect_timeout 3    

            nb_get_retry 3           

            delay_before_retry 3

        }

    }

}

 

http://blog.51cto.com/lanlian/1303195    keepalived詳細配置案例

 

keepalived配置文件案例: keepalived一般搭建都是主從各一個

global_defs {

   notification_email {

     [email protected]  #郵箱寫自己的即可

   }

   notification_email_from [email protected]

   smtp_server localhost

   smtp_connect_timeout 30

   router_id master     #keepalived 服務器名稱,主寫master,備寫backup,或用服務器名字命名

}

 

vrrp_instance VI_1 {

    state MASTER        #若是備用keepalived,則填BACKUP

    interface enp0s8

    virtual_router_id 51

    priority 100       # 主備keepalived最好不一樣,一般備的該值比主的低

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

       192.168.56.200     #虛IP,即VIP

    }

}

主備keepalived配置文件的主要區別在:

state   一個是MASTER,一個是BACKUP

priority  主keepalived的值比從keepalived的值大

 

 

 

編譯安裝keepalived的步驟:

keepalived最少3臺服務器:

  一臺主keepalived服務器、一臺備keepalived服務器、至少一臺提供httpd、nginx或tomcat服務的服務器

 

tar zxvf  keepalived源碼包

cd  keepalived-版本號  

./configure  --prefix=/usr/local/keepalived

make && make install

cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/

mkdir /etc/keepalived

ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/

touch /etc/init.d/keepalived    keepalived啓動腳本,解壓的源碼包裏有

chmod +x /etc/init.d/keepalived

cp /usr/local/etc/keepalived/keepalived.conf  /etc/keepalived/

vi /etc/keepalived/keepalived.conf  #配置文件,解壓的源碼包裏有

chkconfig --add keepalived

chkconfig keepalived on

service keepalived start

more /var/log/messages |grep -E "\\[" |grep keepalived   #查看keepalived運行日誌

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章