1. 程式人生 > >LVS+Keepalived高可用群集

LVS+Keepalived高可用群集

ip add forever fas 路徑 算法 其中 p地址 有一個 cad

  • keeplived是專門針對LVS設計的一款輔助工具,主要功能是實現故障切換,類似HSRP熱備份路由協議,HSRP是思科的私有協議,而VRRP是通用協議,都是為了實現故障切換,當一臺路由器發生故障的時候,另一臺馬上接替工作,用戶感覺不到服務器發生了問題,而且不會中斷服務。
  • 雙機熱備是就是利用了VRRP虛擬路由冗余協議,和HRSP一樣都擁有一個虛擬的ip地址對外提供服務,而不是真正的服務器ip地址,也擁有一臺主服務器和多臺備份服務器,優先級高的做主路由器,備份服務器處於冗余狀態,當主服務器發生故障的時候,從服務器會變成主服務器,當主服務器修好之後,會重新成為主路由器。這裏和HSRP不同的是,HSRP需要配置占先權,而這裏不用配置,默認都有占先權。
  • .

    • keepalived的熱備方式
      VRRP(Virtual Router Redundancy Protocol,虛擬路由冗余協議)
      一主 + 多備,共用同一個IP地址,但優先級不同
      .技術分享圖片
    • 安裝及服務控制
      先安裝支持軟件:
      kernel-devel、openssl-devel、popt-devel、ipvsadm
      再編譯安裝keepalived,需指定內核路徑
      --prefix、--with-kernel-dir=
      使用Keepalived服務
      .
    • 配置文件keepalived.conf
      全局設置:global_defs { ... }
      熱備設置:vrrp_instance 實例名稱 { ... }
      樣例文件位於:/etc/keepalived/samples/
      .

    .

    • 主服務器配置
      state:設置本節點狀態,MASTER、BACKUP
      priority:設置競選優先級,數值越大優先級越高
      virtual_ipaddress { ... }:設置漂移IP地址
      ……
    • 備用服務器配置
      router_id設為自有名稱
      state設為BACKUP
      priority值低於主服務器
      —— 其余所有配置均與主服務器相同
      .
    • 負載均衡+高可用群集
      針對LVS調度器實現雙機熱備
      能夠管理服務器池,自動隔離失效節點
      .
      LVS與keepalived的結合
      .
    • 主、從調度器配置要點
      DR模式必須調整 /proc參數(方法同第5章)
      清除VIP地址、清除ipvsadm策略
      配置keepalived雙機熱備,並添加服務器池設置
    • Web節點註意事項
      DR模式必須調整/proc參數、添加VIP地址及路由
      —— 具體方法見第5章
      .
    • LVS+HA群集的測試
      訪問 http://172.16.16.172/,正常顯示Web頁面
      主、從調度器其中一臺失效,站點訪問及負載仍然正常
      只要保持至少一個Web節點有效,整個站點依然可用

    .
    LVS+Keepalived高可用群集
    技術分享圖片
    .
    配置LVS+Keepalived高可用群集,LVS具體操作可看上篇文章,除了lvs的虛擬地址不需要配和nat不用做其他都相同,所以本篇LVS不在詳解
    .
    配置主調度器
    .
    安裝支持軟件

     [root@centos1 /]# yum -y install kernel-devel openssl-devel popt-devel  
     [root@centos1 /]#  umount /dev/cdrom /media/
     [root@centos1 /]#  mount /dev/cdrom /media/
     [root@centos1 /]#  cd /media/
     [root@centos1 /]# ls
     [root@centos1 /]#  tar zxf keepalived-1.2.13.tar.gz -C /usr/src/

    .
    編譯安裝Keepalived

     [root@centos1 /]# cd /usr/src/keepalived-1.2.13/
     [root@centos1 /]#  ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/ && make && make install

    .

    使用Keepalived服務

     [root@centos1 /]#  chkconfig --add keepalived
     [root@centos1 /]#  chkconfig leepalived on
     [root@centos1 /]#  chkconfig keepalived on

    .
    配置主調度器

     [root@centos1 /]#  vim /etc/keepalived/keepalived.conf 
    
    ! Configuration File for keepalived
    
    global_defs {
       notification_email {     //接收郵件的地址,需要postfix,這裏可不寫
         [email protected]
         [email protected]
         [email protected]
       }
       notification_email_from [email protected]
       smtp_server 127.0.0.1    //郵件服務器地址,這裏填本機
       smtp_connect_timeout 30
       router_id R1         //主調度器名稱,與從調度器名稱不能相同
    }
    
    vrrp_instance VI_1 {
        state MASTER        //主服務器MASTER,從服務器填BACKUP
        interface eth0      //外網卡名稱不一定是eth0
        virtual_router_id 1     //虛擬路由器ID主從要一致
        priority 100        //優先級100,主要比從大
        advert_int 1        //心跳頻率1秒
        authentication {
            auth_type PASS
            auth_pass 1111      //主從密碼要一致
        }
        virtual_ipaddress {
            172.16.16.172       //群及地址
        }
    }
    
    virtual_server 172.16.16.172 80 {   //虛擬服務器地址端口
        delay_loop 6        //健康檢查時間6秒
        lb_algo rr          //輪訓調度算法rr
        lb_kind DR          //路由模式DR
        persistence_timeout 50  //保持時間50秒
        protocol TCP        //協議tcp
    
        real_server 172.16.16.177 80 {  //web節點A的地址端口
        weight 1        //權重 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3   //連接超時3秒
            nb_get_retry 3      //重復3次
            delay_before_retry 3    //重復間隔3秒
        }
        }
    
        real_server 172.16.16.178 80 {
            weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3   
            nb_get_retry 3      
            delay_before_retry 3    
        }
        }
        }

    .
    重啟keepalived服務

     [root@centos1 /]#  service keepalived start
    
     [root@centos1 /]#  ip addr show dev eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP
    qlen 1000
        link/ether 00:0c:29:7d:92:43 brd ff:ff:ff:ff:ff:ff
        inet 172.16.16.173/16 brd 172.16.255.255 scope global eth0
        inet 172.16.16.172/32 scope global eth0 //虛擬地址
        inet6 fe80::20c:29ff:fe7d:9243/64 scope link 
           valid_lft forever preferred_lft forever

    .
    從調度服務器的配置
    首先安裝keepalived,和主服務器一樣,在配置的時候主要有三個地方不一樣:優先級99,調度器名稱R2,熱備狀態為BACKUP
    .
    另一臺lvs安裝完可用[root@centos1 /]# scp root@(IP):/遠程路徑 /本地路徑
    .
    在從調度器查看 [root@centos1 /]# ip addr show dev eth0
    則不會出現虛擬地址

    route_id R2
    state BACKUP
    priority 99
    .
    測試訪在客戶端訪問
    技術分享圖片
    .
    斷開一個lvs再次測試
    .
    技術分享圖片

    LVS+Keepalived高可用群集