• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. Keepalived的安裝配置

        時間:2024-10-15 07:24:54 Linux認證 我要投稿
        • 相關推薦

        Keepalived的安裝配置

          Keepalived是Linux下一個輕量級的高可用解決方案,它與HeartBeat、RoseHA實現的功能類似,都可以實現服務或者網絡的高可用,但是又有差別。下面小編準備了關于Keepalived安裝和配置的文章,提供給大家參考!

          一、Keepalived的安裝過程

          Keepalived的安裝非常簡單,下面通過源碼編譯的方式介紹下Keepalived的安裝過程。首先打開Keepalived的官方網址http://www.keepalived.org,從中可以下載到各種版本的Keepalived,這里下載的是keepalived-1.2.12.tar.gz。以操作系統環境Centos6.3為例,Keepalived安裝步驟如下:

          [root@keepalived-master app]#tar zxvf keepalived-1.2.12.tar.gz

          [root@keepalived-master app]#cd keepalived-1.2.12

          [root@keepalived-master keepalived-1.2.12]#./configure --sysconf=/etc \

          > --with-kernel-dir=/usr/src/kernels/2.6.32-431.5.1.el6.x86_64

          [root@keepalived-master keepalived-1.2.12]#make

          [root@keepalived-master keepalived-1.2.12]#make install

          [root@keepalived-master keepalived-1.2.12]#ln -s /usr/local/sbin/keepalived /sbin/

          [root@keepalived-master keepalived-1.2.12]# chkconfig --add keepalived

          [root@keepalived-master keepalived-1.2.12]# chkconfig --level 35 keepalived on

          在編譯選項中,“--sysconf”指定了Keepalived配置文件的安裝路徑,即路徑為/etc/Keepalived/Keepalived.conf;“--with-kernel-dir”是個很重要的參數,但這個參數并不是要把Keepalived編譯進內核,而是指定使用內核源碼中的頭文件,即include目錄。只有在使用LVS時,才需要用到“--with-kernel-dir”參數,其他時候是不需要的。

          在Keepalived輸出的加載模塊信息,其中:

          ? Use IPVS Framework表示使用IPVS框架,也就是負載均衡模塊,后面的“Yes”表示啟用IPVS功能。一般在搭建高可用負載均衡集群時會啟用IPVS功能,如果只是使用Keepalived的高可用功能,則不需要啟用IPVS模塊,可以在編譯Keepalived時通過“--disable-lvs”關閉IPVS功能。

          ? IPVS sync daemon support表示啟用IPVS的同步功能,此模塊一般和IPVS模塊一起使用,如果需要關閉,可在編譯Keepalived時通過“--disable-lvs-syncd”參數實現。

          ? IPVS use libnl表示使用新版的libnl。libnl是NETLINK的一個實現,如果要使用新版的libnl,需要在系統中安裝libnl和libnl-devel軟件包。

          ? Use VRRP Framework表示使用VRRP框架,這是實現Keepalived高可用功能必需的模塊。

          ? Use VRRP VMAC表示使用基礎VMAC接口的xmit VRRP包,這是Keepalived在1.2.10版本及以后新增的一個功能。

          至此,Keepalived的安裝介紹完畢。下面開始進入Keepalived配置的講解。

          二、 Keepalived的全局配置

          在上節安裝Keepalived的過程中,指定了Keepalived配置文件的路徑為/etc/Keepalived/Keepalived.conf,Keepalived的所有配置均在這個配置文件中完成。由于Keepalived.conf文件中可配置的選項比較多,這里根據配置文件所實現的功能,將Keepalived配置分為三類,分別是:全局配置(Global Configuration)、VRRPD配置和LVS配置。下面將主要介紹下Keepalived配置文件中一些常用配置選項的含義和用法。

          Keepalived的配置文件都是以塊(block)的形式組織的,每個塊的內容都包含在{}中,以“#”和“!”開頭的行都是注釋。全局配置就是對整個Keepalived都生效的配置,基本內容如下:

          ! Configuration File for keepalived

          global_defs {

          notification_email {

          dba.gao@gmail.com

          ixdba@163.com

          }

          notification_email_from Keepalived@localhost

          smtp_server 192.168.200.1

          smtp_connect_timeout 30

          router_id LVS_DEVEL

          }

          全局配置以“global_defs”作為標識,在“global_defs”區域內的都是全局配置選項,其中:

          ? notification_email用于設置報警郵件地址,可以設置多個,每行一個。注意,如果要開啟郵件報警,需要開啟本機的Sendmail服務。

          ? notification_email_from用于設置郵件的發送地址。

          ? smtp_server用于設置郵件的smtp server地址。

          ? smtp_connect_timeout用于設置連接smtp server的超時時間。

          ? router_id表示運行Keepalived服務器的一個標識,是發郵件時顯示在郵件主題中的信息。

          三、 Keepalived的VRRPD配置

          VRRPD配置是Keepalived所有配置的核心,主要用來實現Keepalived的高可用功能。從結構上來看,VRRPD配置又可分為VRRP同步組配置和VRRP實例配置。

          這里首先介紹同步組實現的主要功能。同步組是相對于多個VRRP實例而言的,在多個VRRP實例的環境中,每個VRRP實例所對應的網絡環境會有所不同,假設一個實例處于網段A,另一個實例處于網段B,而如果VRRPD只配置了A網段的檢測,那么當B網段主機出現故障時,VRRPD會認為自身仍處于正常狀態,進而不會進行主備節點的切換,這樣問題就出現了。同步組就是用來解決這個問題的,將所有VRRP實例都加入到同步組中,這樣任何一個實例出現問題,都會導致Keepalived進行主備切換。

          下面是兩個同步組的配置樣例:

          vrrp_sync_group G1 {

          group {

          VI_1

          VI_2

          VI_5

          }

          notify_backup "/usr/local/bin/vrrp.back arg1 arg2"

          notify_master "/usr/local/bin/vrrp.mast arg1 arg2"

          notify_fault "/usr/local/bin/vrrp.fault arg1 arg2"

          }

          vrrp_sync_group G2 {

          group {

          VI_3

          VI_4

          }

          }

          其中,G1同步組包含VI_1、VI_2、VI_5三個VRRP實例,G2同步組包含VI_3、VI_4兩個VRRP實例。這五個實例將在vrrp_instance段進行定義。另外,在vrrp_sync_group段中還出現了notify_master、notify_backup、notify_fault和notify_stop四個選項,這是Keepalived配置中的一個通知機制,也是Keepalived包含的四種狀態。下面介紹每個選項的含義。

          ? notify_master:指定當Keepalived進入Master狀態時要執行的腳本,這個腳本可以是一個狀態報警腳本,也可以是一個服務管理腳本。Keepalived允許腳本傳入參數,因此靈活性很強。

          ? notify_backup:指定當Keepalived進入Backup狀態時要執行的腳本,同理,這個腳本可以是一個狀態報警腳本,也可以是一個服務管理腳本。

          ? notify_fault:指定當Keepalived進入Fault狀態時要執行的腳本,腳本功能與前兩個類似。

          ? notify_stop:指定當Keepalived程序終止時需要執行的腳本。

          下面正式進入VRRP實例的配置,也就是配置Keepalived的高可用功能。VRRP實例段主要用來配置節點角色(主或從)、實例綁定的網絡接口、節點間驗證機制、集群服務IP等。下面是實例VI_1的一個配置樣例。

          vrrp_instance VI_1 {

          state MASTER

          interface eth0

          virtual_router_id 51

          priority 100

          advert_int 1

          mcast_src_ip

          garp_master_delay 10

          track_interface {

          eth0

          eth1

          }

          authentication {

          auth_type PASS

          auth_pass qwaszx

          }

          virtual_ipaddress {

          #/ brd dev scope label

          192.168.200.16

          192.168.200.17 dev eth1

          192.168.200.18 dev eth2

          }

          virtual_routes {

          #src [to] / via|gw dev scope

          src 192.168.100.1 to 192.168.109.0/24 via 192.168.200.254 dev eth1

          192.168.110.0/24 via 192.168.200.254 dev eth1

          192.168.111.0/24 dev eth2

          192.168.112.0/24 via 192.168.100.254

          192.168.113.0/24 via 192.168.100.252 or 192.168.100.253

          }

          nopreempt

          preemtp_delay 300

          }

          以上VRRP配置以“vrrp_instance”作為標識,在這個實例中包含了若干配置選項,分別介紹如下:

          ? vrrp_instance是VRRP實例開始的標識,后跟VRRP實例名稱。

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

          ? interface用于指定HA監測網絡的接口。

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

          ? priority用于定義節點優先級,數字越大表示節點的優先級就越高。在一個vrrp_instance下,MASTER的優先級必須大于BACKUP的優先級。

          ? advert_int用于設定MASTER與BACKUP主機之間同步檢查的時間間隔,單位是秒。

          ? mcast_src_ip用于設置發送多播包的地址,如果不設置,將使用綁定的網卡所對應的IP地址。

          ? garp_master_delay用于設定在切換到Master狀態后延時進行Gratuitous arp請求的時間。

          ? track_interface用于設置一些額外的網絡監控接口,其中任何一個網絡接口出現故障,Keepalived都會進入FAULT狀態。

          ? authentication用于設定節點間通信驗證類型和密碼,驗證類型主要有PASS和AH兩種,在一個vrrp_instance下,MASTER與BACKUP必須使用相同的密碼才能正常通信。

          ? virtual_ipaddress用于設置虛擬IP地址(VIP),又叫做漂移IP地址。可以設置多個虛擬IP地址,每行一個。之所以稱為漂移IP地址,是因為Keepalived切換到Master狀態時,這個IP地址會自動添加到系統中,而切換到BACKUP狀態時,這些IP又會自動從系統中刪除。Keepalived通過“ip address add”命令的形式將VIP添加進系統中。要查看系統中添加的VIP地址,可以通過“ip add”命令實現。“virtual_ipaddress”段中添加的IP形式可以多種多樣,例如可以寫成 “192.168.16.189/24 dev eth1” 這樣的形式,而Keepalived會使用IP命令“ip addr add 192.168.16.189/24 dev eth1”將IP信息添加到系統中。因此,這里的配置規則和IP命令的使用規則是一致的。

          ? virtual_routes和virtual_ipaddress段一樣,用來設置在切換時添加或刪除相關路由信息。使用方法和例子可以參考上面的示例。通過“ip route”命令可以查看路由信息是否添加成功,此外,也可以通過上面介紹的notify_master選項來代替virtual_routes實現相同的功能。

          ? nopreempt設置的是高可用集群中的不搶占功能。在一個HA Cluster中,如果主節點死機了,備用節點會進行接管,主節點再次正常啟動后一般會自動接管服務。這種來回切換的操作,對于實時性和穩定性要求不高的業務系統來說,還是可以接受的,而對于穩定性和實時性要求很高的業務系統來說,不建議來回切換,畢竟服務的切換存在一定的風險和不穩定性,在這種情況下,就需要設置nopreempt這個選項了。設置nopreempt可以實現主節點故障恢復后不再切回到主節點,讓服務一直在備用節點工作,直到備用節點出現故障才會進行切換。在使用不搶占時,只能在“state”狀態為“BACKUP”的節點上設置,而且這個節點的優先級必須高于其他節點。

          ? preemtp_delay用于設置搶占的延時時間,單位是秒。有時候系統啟動或重啟之后網絡需要經過一段時間才能正常工作,在這種情況下進行發生主備切換是沒必要的,此選項就是用來設置這種情況發生的時間間隔。在此時間內發生的故障將不會進行切換,而如果超過“preemtp_delay”指定的時間,并且網絡狀態異常,那么才開始進行主備切換。

          四、 Keepalived的LVS配置

          由于Keepalived屬于LVS的擴展項目,因此, Keepalived可以與LVS無縫整合,輕松搭建一套高性能的負載均衡集群系統。下面介紹下Keepalived配置文件中關于LVS配置段的配置方法。

          LVS段的配置以“virtual_server”作為開始標識,此段內容有兩部分組成,分別是real_server段和健康檢測段。下面是virtual_server段常用選項的一個配置示例:

          virtual_server 192.168.12.200 80 {

          delay_loop 6

          lb_algo rr

          lb_kind DR

          persistence_timeout 50

          persistence_granularity

          protocol TCP

          ha_suspend

          virtualhost

          sorry_server

          下面介紹每個選項的含義。

          ? virtual_server:設置虛擬服務器的開始,后面跟虛擬IP地址和服務端口,IP與端口之間用空格隔開。

          ? delay_loop:設置健康檢查的時間間隔,單位是秒。

          ? lb_algo:設置負載調度算法,可用的調度算法有rr、wrr、lc、wlc、lblc、sh、dh等,常用的算法有rr和wlc。

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

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

          ? persistence_granularity:此選項是配合persistence_timeout的,后面跟的值是子網掩碼,表示持久連接的粒度。默認是255.255.255.255,也就是一個單獨的客戶端IP。如果將掩碼修改為255.255.255.0,那么客戶端IP所在的整個網段的請求都會分配到同一個real server上。

          ? protocol:指定轉發協議類型,有TCP和UDP兩種可選。

          ? ha_suspend:節點狀態從Master到Backup切換時,暫不啟用real server節點的健康檢查。

          ? virtualhost:在通過HTTP_GET/ SSL_GET做健康檢測時,指定的Web服務器的虛擬主機地址。

          ? sorry_server:相當于一個備用節點,在所有real server失效后,這個備用節點會啟用。

          下面是real_server段的一個配置示例:

          real_server 192.168.12.132 80 {

          weight 3

          inhibit_on_failure

          notify_up |

          notify_down |

          }

          下面介紹每個選項的含義。

          ? real_server:是real_server段開始的標識,用來指定real server節點,后面跟的是real server的真實IP地址和端口,IP與端口之間用空格隔開。

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

          ? inhibit_on_failure:表示在檢測到real server節點失效后,把它的“weight”值設置為0,而不是從IPVS中刪除。

          ? notify_up:此選項與上面介紹過的notify_maser有相同的功能,后跟一個腳本,表示在檢測到real server節點服務處于UP狀態后執行的腳本。

          ? notify_down:表示在檢測到real server節點服務處于DOWN狀態后執行的腳本。

          健康檢測段允許多種檢查方式,常見的有HTTP_GET、SSL_GET、TCP_CHECK、SMTP_CHECK、MISC_CHECK。首先看TCP_CHECK檢測方式示例:

          TCP_CHECK {

          connect_port 80

          connect_timeout 3

          nb_get_retry 3

          delay_before_retry 3

          }

          下面介紹每個選項的含義介。

          ? connect_port:健康檢查的端口,如果無指定,默認是real_server指定的端口。

          ? connect_timeout:表示無響應超時時間,單位是秒,這里是3秒超時。

          ? nb_get_retry:表示重試次數,這里是3次。

          ? delay_before_retry:表示重試間隔,這里是間隔3秒。

          下面是HTTP_GET和SSL_GET檢測方式的示例:

          HTTP_GET |SSL_GET

          {

          url {

          path /

          digest e6c271eb5f017f280cf97ec2f51b02d3

          status_code 200

          }

          connect_port 80

          bindto 192.168.12.80

          connect_timeout 3

          nb_get_retry 3

          delay_before_retry 2

          }

          下面介紹每個選項的含義。

          ? url:用來指定HTTP/SSL檢查的URL信息,可以指定多個URL。

          ? path:后跟詳細的URL路徑。

          ? digest:SSL檢查后的摘要信息,這些摘要信息可以通過genhash命令工具獲取。例如:genhash -s 192.168.12.80 -p 80 -u /。

          ? status_code:指定HTTP檢查返回正常狀態碼的類型,一般是200。

          ? bindto:表示通過此地址來發送請求對服務器進行健康檢查。

          下面是MISC_CHECK檢測方式的示例:

          MISC_CHECK

          {

          misc_path /usr/local/bin/script.sh

          misc_timeout 5

          ! misc_dynamic

          }

          MISC健康檢查方式可以通過執行一個外部程序來判斷real server節點的服務狀態,使用非常靈活。以下是常用的幾個選項的含義。

          ? misc_path:用來指定一個外部程序或者一個腳本路徑。

          ? misc_timeout:設定執行腳本的超時時間。

          ? misc_dynamic:表示是否啟用動態調整real server節點權重,“!misc_dynamic”表示不啟用,相反則表示啟用。在啟用這功能后,Keepalived的healthchecker進程將通過退出狀態碼來動態調整real server節點的“weight”值,如果返回狀態碼為0,表示健康檢查正常,real server節點權重保持不變;如果返回狀態碼為1,表示健康檢查失敗,那么就將real server節點權重設置為0;如果返回狀態碼為2~255之間任意數值,表示健康檢查正常,但real server節點的權重將被設置為返回狀態碼減2,例如返回狀態碼為10,real server節點權重將被設置為8(10-2)。

          到這里為止,Keepalived配置文件中常用的選項已經介紹完畢,在默認情況下,Keepalived在啟動時會查找/etc/Keepalived/Keepalived.conf配置文件,如果配置文件放在其他路徑下,通過“Keepalived -f”參數指定配置文件的路徑即可。

          在配置Keepalived.conf時,需要特別注意配置文件的語法格式,因為Keepalived在啟動時并不檢測配置文件的正確性,即使沒有配置文件,Keepalived也照樣能夠啟動,所以一定要保證配置文件正確。

        《&.doc》
        将本文的Word文档下载到电脑,方便收藏和打印
        推荐度:
        点击下载文档

        【Keepalived的安裝配置】相關文章:

        Keepalived的基礎知識06-25

        嵌入式系統安裝配置07-05

        金蝶KIS商貿版安裝配置指南05-27

        基于ubuntu下nginx+php+mysql安裝配置09-30

        Windows 7下如何安裝和配置IIS 7和ASP方法08-24

        linux配置dns服務器配置命令09-22

        正確配置路由09-27

        PHP socket的配置08-04

        電腦配置知識10-12

        IPsecVPN配置教程06-13

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 伊人久久大香线蕉综合网蜜芽 | 亚洲欧美v人片在线观看 | 日本免费不卡在线一区二区三区 | 亚洲人成久久环射 | 在线a亚洲视频播放在线观看 | 亚洲日韩色欧另类欧欧美 |

            Keepalived的安裝配置

              Keepalived是Linux下一個輕量級的高可用解決方案,它與HeartBeat、RoseHA實現的功能類似,都可以實現服務或者網絡的高可用,但是又有差別。下面小編準備了關于Keepalived安裝和配置的文章,提供給大家參考!

              一、Keepalived的安裝過程

              Keepalived的安裝非常簡單,下面通過源碼編譯的方式介紹下Keepalived的安裝過程。首先打開Keepalived的官方網址http://www.keepalived.org,從中可以下載到各種版本的Keepalived,這里下載的是keepalived-1.2.12.tar.gz。以操作系統環境Centos6.3為例,Keepalived安裝步驟如下:

              [root@keepalived-master app]#tar zxvf keepalived-1.2.12.tar.gz

              [root@keepalived-master app]#cd keepalived-1.2.12

              [root@keepalived-master keepalived-1.2.12]#./configure --sysconf=/etc \

              > --with-kernel-dir=/usr/src/kernels/2.6.32-431.5.1.el6.x86_64

              [root@keepalived-master keepalived-1.2.12]#make

              [root@keepalived-master keepalived-1.2.12]#make install

              [root@keepalived-master keepalived-1.2.12]#ln -s /usr/local/sbin/keepalived /sbin/

              [root@keepalived-master keepalived-1.2.12]# chkconfig --add keepalived

              [root@keepalived-master keepalived-1.2.12]# chkconfig --level 35 keepalived on

              在編譯選項中,“--sysconf”指定了Keepalived配置文件的安裝路徑,即路徑為/etc/Keepalived/Keepalived.conf;“--with-kernel-dir”是個很重要的參數,但這個參數并不是要把Keepalived編譯進內核,而是指定使用內核源碼中的頭文件,即include目錄。只有在使用LVS時,才需要用到“--with-kernel-dir”參數,其他時候是不需要的。

              在Keepalived輸出的加載模塊信息,其中:

              ? Use IPVS Framework表示使用IPVS框架,也就是負載均衡模塊,后面的“Yes”表示啟用IPVS功能。一般在搭建高可用負載均衡集群時會啟用IPVS功能,如果只是使用Keepalived的高可用功能,則不需要啟用IPVS模塊,可以在編譯Keepalived時通過“--disable-lvs”關閉IPVS功能。

              ? IPVS sync daemon support表示啟用IPVS的同步功能,此模塊一般和IPVS模塊一起使用,如果需要關閉,可在編譯Keepalived時通過“--disable-lvs-syncd”參數實現。

              ? IPVS use libnl表示使用新版的libnl。libnl是NETLINK的一個實現,如果要使用新版的libnl,需要在系統中安裝libnl和libnl-devel軟件包。

              ? Use VRRP Framework表示使用VRRP框架,這是實現Keepalived高可用功能必需的模塊。

              ? Use VRRP VMAC表示使用基礎VMAC接口的xmit VRRP包,這是Keepalived在1.2.10版本及以后新增的一個功能。

              至此,Keepalived的安裝介紹完畢。下面開始進入Keepalived配置的講解。

              二、 Keepalived的全局配置

              在上節安裝Keepalived的過程中,指定了Keepalived配置文件的路徑為/etc/Keepalived/Keepalived.conf,Keepalived的所有配置均在這個配置文件中完成。由于Keepalived.conf文件中可配置的選項比較多,這里根據配置文件所實現的功能,將Keepalived配置分為三類,分別是:全局配置(Global Configuration)、VRRPD配置和LVS配置。下面將主要介紹下Keepalived配置文件中一些常用配置選項的含義和用法。

              Keepalived的配置文件都是以塊(block)的形式組織的,每個塊的內容都包含在{}中,以“#”和“!”開頭的行都是注釋。全局配置就是對整個Keepalived都生效的配置,基本內容如下:

              ! Configuration File for keepalived

              global_defs {

              notification_email {

              dba.gao@gmail.com

              ixdba@163.com

              }

              notification_email_from Keepalived@localhost

              smtp_server 192.168.200.1

              smtp_connect_timeout 30

              router_id LVS_DEVEL

              }

              全局配置以“global_defs”作為標識,在“global_defs”區域內的都是全局配置選項,其中:

              ? notification_email用于設置報警郵件地址,可以設置多個,每行一個。注意,如果要開啟郵件報警,需要開啟本機的Sendmail服務。

              ? notification_email_from用于設置郵件的發送地址。

              ? smtp_server用于設置郵件的smtp server地址。

              ? smtp_connect_timeout用于設置連接smtp server的超時時間。

              ? router_id表示運行Keepalived服務器的一個標識,是發郵件時顯示在郵件主題中的信息。

              三、 Keepalived的VRRPD配置

              VRRPD配置是Keepalived所有配置的核心,主要用來實現Keepalived的高可用功能。從結構上來看,VRRPD配置又可分為VRRP同步組配置和VRRP實例配置。

              這里首先介紹同步組實現的主要功能。同步組是相對于多個VRRP實例而言的,在多個VRRP實例的環境中,每個VRRP實例所對應的網絡環境會有所不同,假設一個實例處于網段A,另一個實例處于網段B,而如果VRRPD只配置了A網段的檢測,那么當B網段主機出現故障時,VRRPD會認為自身仍處于正常狀態,進而不會進行主備節點的切換,這樣問題就出現了。同步組就是用來解決這個問題的,將所有VRRP實例都加入到同步組中,這樣任何一個實例出現問題,都會導致Keepalived進行主備切換。

              下面是兩個同步組的配置樣例:

              vrrp_sync_group G1 {

              group {

              VI_1

              VI_2

              VI_5

              }

              notify_backup "/usr/local/bin/vrrp.back arg1 arg2"

              notify_master "/usr/local/bin/vrrp.mast arg1 arg2"

              notify_fault "/usr/local/bin/vrrp.fault arg1 arg2"

              }

              vrrp_sync_group G2 {

              group {

              VI_3

              VI_4

              }

              }

              其中,G1同步組包含VI_1、VI_2、VI_5三個VRRP實例,G2同步組包含VI_3、VI_4兩個VRRP實例。這五個實例將在vrrp_instance段進行定義。另外,在vrrp_sync_group段中還出現了notify_master、notify_backup、notify_fault和notify_stop四個選項,這是Keepalived配置中的一個通知機制,也是Keepalived包含的四種狀態。下面介紹每個選項的含義。

              ? notify_master:指定當Keepalived進入Master狀態時要執行的腳本,這個腳本可以是一個狀態報警腳本,也可以是一個服務管理腳本。Keepalived允許腳本傳入參數,因此靈活性很強。

              ? notify_backup:指定當Keepalived進入Backup狀態時要執行的腳本,同理,這個腳本可以是一個狀態報警腳本,也可以是一個服務管理腳本。

              ? notify_fault:指定當Keepalived進入Fault狀態時要執行的腳本,腳本功能與前兩個類似。

              ? notify_stop:指定當Keepalived程序終止時需要執行的腳本。

              下面正式進入VRRP實例的配置,也就是配置Keepalived的高可用功能。VRRP實例段主要用來配置節點角色(主或從)、實例綁定的網絡接口、節點間驗證機制、集群服務IP等。下面是實例VI_1的一個配置樣例。

              vrrp_instance VI_1 {

              state MASTER

              interface eth0

              virtual_router_id 51

              priority 100

              advert_int 1

              mcast_src_ip

              garp_master_delay 10

              track_interface {

              eth0

              eth1

              }

              authentication {

              auth_type PASS

              auth_pass qwaszx

              }

              virtual_ipaddress {

              #/ brd dev scope label

              192.168.200.16

              192.168.200.17 dev eth1

              192.168.200.18 dev eth2

              }

              virtual_routes {

              #src [to] / via|gw dev scope

              src 192.168.100.1 to 192.168.109.0/24 via 192.168.200.254 dev eth1

              192.168.110.0/24 via 192.168.200.254 dev eth1

              192.168.111.0/24 dev eth2

              192.168.112.0/24 via 192.168.100.254

              192.168.113.0/24 via 192.168.100.252 or 192.168.100.253

              }

              nopreempt

              preemtp_delay 300

              }

              以上VRRP配置以“vrrp_instance”作為標識,在這個實例中包含了若干配置選項,分別介紹如下:

              ? vrrp_instance是VRRP實例開始的標識,后跟VRRP實例名稱。

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

              ? interface用于指定HA監測網絡的接口。

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

              ? priority用于定義節點優先級,數字越大表示節點的優先級就越高。在一個vrrp_instance下,MASTER的優先級必須大于BACKUP的優先級。

              ? advert_int用于設定MASTER與BACKUP主機之間同步檢查的時間間隔,單位是秒。

              ? mcast_src_ip用于設置發送多播包的地址,如果不設置,將使用綁定的網卡所對應的IP地址。

              ? garp_master_delay用于設定在切換到Master狀態后延時進行Gratuitous arp請求的時間。

              ? track_interface用于設置一些額外的網絡監控接口,其中任何一個網絡接口出現故障,Keepalived都會進入FAULT狀態。

              ? authentication用于設定節點間通信驗證類型和密碼,驗證類型主要有PASS和AH兩種,在一個vrrp_instance下,MASTER與BACKUP必須使用相同的密碼才能正常通信。

              ? virtual_ipaddress用于設置虛擬IP地址(VIP),又叫做漂移IP地址。可以設置多個虛擬IP地址,每行一個。之所以稱為漂移IP地址,是因為Keepalived切換到Master狀態時,這個IP地址會自動添加到系統中,而切換到BACKUP狀態時,這些IP又會自動從系統中刪除。Keepalived通過“ip address add”命令的形式將VIP添加進系統中。要查看系統中添加的VIP地址,可以通過“ip add”命令實現。“virtual_ipaddress”段中添加的IP形式可以多種多樣,例如可以寫成 “192.168.16.189/24 dev eth1” 這樣的形式,而Keepalived會使用IP命令“ip addr add 192.168.16.189/24 dev eth1”將IP信息添加到系統中。因此,這里的配置規則和IP命令的使用規則是一致的。

              ? virtual_routes和virtual_ipaddress段一樣,用來設置在切換時添加或刪除相關路由信息。使用方法和例子可以參考上面的示例。通過“ip route”命令可以查看路由信息是否添加成功,此外,也可以通過上面介紹的notify_master選項來代替virtual_routes實現相同的功能。

              ? nopreempt設置的是高可用集群中的不搶占功能。在一個HA Cluster中,如果主節點死機了,備用節點會進行接管,主節點再次正常啟動后一般會自動接管服務。這種來回切換的操作,對于實時性和穩定性要求不高的業務系統來說,還是可以接受的,而對于穩定性和實時性要求很高的業務系統來說,不建議來回切換,畢竟服務的切換存在一定的風險和不穩定性,在這種情況下,就需要設置nopreempt這個選項了。設置nopreempt可以實現主節點故障恢復后不再切回到主節點,讓服務一直在備用節點工作,直到備用節點出現故障才會進行切換。在使用不搶占時,只能在“state”狀態為“BACKUP”的節點上設置,而且這個節點的優先級必須高于其他節點。

              ? preemtp_delay用于設置搶占的延時時間,單位是秒。有時候系統啟動或重啟之后網絡需要經過一段時間才能正常工作,在這種情況下進行發生主備切換是沒必要的,此選項就是用來設置這種情況發生的時間間隔。在此時間內發生的故障將不會進行切換,而如果超過“preemtp_delay”指定的時間,并且網絡狀態異常,那么才開始進行主備切換。

              四、 Keepalived的LVS配置

              由于Keepalived屬于LVS的擴展項目,因此, Keepalived可以與LVS無縫整合,輕松搭建一套高性能的負載均衡集群系統。下面介紹下Keepalived配置文件中關于LVS配置段的配置方法。

              LVS段的配置以“virtual_server”作為開始標識,此段內容有兩部分組成,分別是real_server段和健康檢測段。下面是virtual_server段常用選項的一個配置示例:

              virtual_server 192.168.12.200 80 {

              delay_loop 6

              lb_algo rr

              lb_kind DR

              persistence_timeout 50

              persistence_granularity

              protocol TCP

              ha_suspend

              virtualhost

              sorry_server

              下面介紹每個選項的含義。

              ? virtual_server:設置虛擬服務器的開始,后面跟虛擬IP地址和服務端口,IP與端口之間用空格隔開。

              ? delay_loop:設置健康檢查的時間間隔,單位是秒。

              ? lb_algo:設置負載調度算法,可用的調度算法有rr、wrr、lc、wlc、lblc、sh、dh等,常用的算法有rr和wlc。

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

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

              ? persistence_granularity:此選項是配合persistence_timeout的,后面跟的值是子網掩碼,表示持久連接的粒度。默認是255.255.255.255,也就是一個單獨的客戶端IP。如果將掩碼修改為255.255.255.0,那么客戶端IP所在的整個網段的請求都會分配到同一個real server上。

              ? protocol:指定轉發協議類型,有TCP和UDP兩種可選。

              ? ha_suspend:節點狀態從Master到Backup切換時,暫不啟用real server節點的健康檢查。

              ? virtualhost:在通過HTTP_GET/ SSL_GET做健康檢測時,指定的Web服務器的虛擬主機地址。

              ? sorry_server:相當于一個備用節點,在所有real server失效后,這個備用節點會啟用。

              下面是real_server段的一個配置示例:

              real_server 192.168.12.132 80 {

              weight 3

              inhibit_on_failure

              notify_up |

              notify_down |

              }

              下面介紹每個選項的含義。

              ? real_server:是real_server段開始的標識,用來指定real server節點,后面跟的是real server的真實IP地址和端口,IP與端口之間用空格隔開。

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

              ? inhibit_on_failure:表示在檢測到real server節點失效后,把它的“weight”值設置為0,而不是從IPVS中刪除。

              ? notify_up:此選項與上面介紹過的notify_maser有相同的功能,后跟一個腳本,表示在檢測到real server節點服務處于UP狀態后執行的腳本。

              ? notify_down:表示在檢測到real server節點服務處于DOWN狀態后執行的腳本。

              健康檢測段允許多種檢查方式,常見的有HTTP_GET、SSL_GET、TCP_CHECK、SMTP_CHECK、MISC_CHECK。首先看TCP_CHECK檢測方式示例:

              TCP_CHECK {

              connect_port 80

              connect_timeout 3

              nb_get_retry 3

              delay_before_retry 3

              }

              下面介紹每個選項的含義介。

              ? connect_port:健康檢查的端口,如果無指定,默認是real_server指定的端口。

              ? connect_timeout:表示無響應超時時間,單位是秒,這里是3秒超時。

              ? nb_get_retry:表示重試次數,這里是3次。

              ? delay_before_retry:表示重試間隔,這里是間隔3秒。

              下面是HTTP_GET和SSL_GET檢測方式的示例:

              HTTP_GET |SSL_GET

              {

              url {

              path /

              digest e6c271eb5f017f280cf97ec2f51b02d3

              status_code 200

              }

              connect_port 80

              bindto 192.168.12.80

              connect_timeout 3

              nb_get_retry 3

              delay_before_retry 2

              }

              下面介紹每個選項的含義。

              ? url:用來指定HTTP/SSL檢查的URL信息,可以指定多個URL。

              ? path:后跟詳細的URL路徑。

              ? digest:SSL檢查后的摘要信息,這些摘要信息可以通過genhash命令工具獲取。例如:genhash -s 192.168.12.80 -p 80 -u /。

              ? status_code:指定HTTP檢查返回正常狀態碼的類型,一般是200。

              ? bindto:表示通過此地址來發送請求對服務器進行健康檢查。

              下面是MISC_CHECK檢測方式的示例:

              MISC_CHECK

              {

              misc_path /usr/local/bin/script.sh

              misc_timeout 5

              ! misc_dynamic

              }

              MISC健康檢查方式可以通過執行一個外部程序來判斷real server節點的服務狀態,使用非常靈活。以下是常用的幾個選項的含義。

              ? misc_path:用來指定一個外部程序或者一個腳本路徑。

              ? misc_timeout:設定執行腳本的超時時間。

              ? misc_dynamic:表示是否啟用動態調整real server節點權重,“!misc_dynamic”表示不啟用,相反則表示啟用。在啟用這功能后,Keepalived的healthchecker進程將通過退出狀態碼來動態調整real server節點的“weight”值,如果返回狀態碼為0,表示健康檢查正常,real server節點權重保持不變;如果返回狀態碼為1,表示健康檢查失敗,那么就將real server節點權重設置為0;如果返回狀態碼為2~255之間任意數值,表示健康檢查正常,但real server節點的權重將被設置為返回狀態碼減2,例如返回狀態碼為10,real server節點權重將被設置為8(10-2)。

              到這里為止,Keepalived配置文件中常用的選項已經介紹完畢,在默認情況下,Keepalived在啟動時會查找/etc/Keepalived/Keepalived.conf配置文件,如果配置文件放在其他路徑下,通過“Keepalived -f”參數指定配置文件的路徑即可。

              在配置Keepalived.conf時,需要特別注意配置文件的語法格式,因為Keepalived在啟動時并不檢測配置文件的正確性,即使沒有配置文件,Keepalived也照樣能夠啟動,所以一定要保證配置文件正確。