Cent0S下使用LVS+KeepLive進行負載均衡及高可用web服務器

Cent0S下使用LVS+KeepLive,進行負載均衡及高可用web服務器。

通過對本文章的閱讀:你可以瞭解LVS+KeepLive的安裝,按照步驟一步一步完成就能實現對2臺或N臺web服務器進行負載均衡,實現LVS的負載均衡及失效轉移。

 

 

一、需要的文件:

1、ipvsadm-1.24.tar.gz,下載地址:下載

2、keepalived-1.1.15.tar.gz,下載地址:下載

 

二、對LVS學習的網站推薦:

 

   LVS官方中文站點:http://zh.linuxvirtualserver.org/
   對keepalived各項參數進行了詳細的解釋 http://download.csdn.net/detail/missrian/7338313
 
三、安裝及使用:
一、LVS的安裝:
1、拷貝2個安裝包到/usr/local/src下的lvs目錄下。(不存在則建立)
2、tar -zxvf ipvsadm-1.24.tar.gz 再進入目錄cd ipvsadm-1.24
3、sudo make 該步驟進行編譯,在make時可能會出現錯誤編譯信息,這是由於編譯程序找不到對應內核的原因。
     此時解決的方法爲,首先獲取系統的版本uname -a
     Linux localhost.localdomain 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
     再執行:ln -s /usr/src/kernels/2.6.32-431.el6.x86_64/  /usr/src/linux
     然後重新執行make編譯命令。
4、sudo make install 該步驟爲安裝。
5、如果安裝成功則可以通過ipvsadm --help查看lvs是否安裝成功
6、通過find / -name ipvsadm可以查看lvs 安裝在哪些目錄下。
 
二、KeepLive的安裝
1、tar -zxvf keepalived-1.1.15.tar再進入keepalived-1.1.15目錄
2、執行sudo ./config,
     1)、如果報錯
     configure: error:
     !!! OpenSSL is not properly installed on your system. !!!
     !!! Can not include OpenSSL headers files.
     則yum -y install openssl-devel,然後重新執行sudo ./config
     2)、如果報錯
     configure: error: Popt libraries is required
     則yum install popt-devel,然後重新執行sudo ./config
3、編譯sudo make
4、安裝sudo make install
5、可用find / -name keepalived查看安裝位置
6、可通過keepalived --version查看是否安裝成功。
7、拷貝文件
     cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/  
     cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
     mkdir /etc/keepalived
     cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
     cp /usr/local/sbin/keepalived /usr/sbin/
8、啓動或停止:service keepalived start
9、配置爲隨系統啓動:
     sudo chkconfig --add keepalived
     sudo chkconfig --level 35 keepalived on
 
三、配置keepalived
由於LVS存在單點故障,因此一般採用LVS主從備份的方式進行負載均衡.
如果有時候主備LVS沒有生效,比如反而是備LVS優先起作用,此時只需重啓主LVS,service keepalived restart
 
1、編輯:vi  /etc/keepalived/keepalived.conf
 
! Configuration File for keepalived

global_defs {
   notification_email {
   [email protected]  #故障通知接收者郵箱,可以多個
   [email protected]
   }
   notification_email_from [email protected]  #故障發送者郵箱
   smtp_server 192.168.62.130 #郵件服務器的IP
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER #如果是備份LVS,則修改爲BACKUP
    interface eth0
    virtual_router_id 51 #2個LVS必須在一致
    priority 100 #如果是備份LVS,則修改得比MASTER小,至少50的差距,比如49
    advert_int 1
    authentication {
        auth_type PASS   #主從LVS的時候,PASS一致纔可以。
        auth_pass 1111
    }
    #VIP,浮動IP,發生切換時Keepalived自動添加、刪除虛擬地址,無需ifoncig-eth0去設置
    virtual_ipaddress {
        192.168.62.100 #LVS的對外虛擬IP,可以是多個,這樣一般可以再域名解析的時候有幫助,比如電信,聯通的IP
        192.168.62.99
        192.168.62.98
    }
    #虛擬路由,發生切換時候自動添加刪除路由
    #virtual_routes{
    #   192.168.62.100 dev eth0:0
    #}
 
    #nopreempt  #不搶佔,去掉前面的#則生效,僅用與BACKUP上,當MASTER失效後,BackUP生效,但當Master重新生效後,面臨的問題是繼續成爲Master還是BACKUP,發生了變化 Master ->BACKup,再到BACKup -> Master,這樣的切換開銷很大,我們希望新生效的Master成爲BackUP,不進行搶佔,但此時必須修改原先master的狀態爲BACKUP,即此時存在2個UPBACK,此時通過priority的值高的就是Master。
}

#虛擬LVS代理80端口
virtual_server 192.168.62.100 8080 {
    delay_loop 6
    lb_algo wrr #壓力最小輪詢
    lb_kind DR #LVS的路由模式
    nat_mask 255.255.255.0
    persistence_timeout 10
    protocol TCP #指定轉發協議,TCP OR UDP

    #真實服務器1
    real_server 192.168.62.133 8080 {
        weight 5 #權重,越大越高
        TCP_CHECK {#relserve的狀態檢測設置部分,單位是秒
            connect_timeout 10 #表示10秒無響應超時
            nb_get_retry 3     #表示重試次數
            dealy_before_retry 3  #表示重試間隔
            connect_port 8080
         }
    }

   #真實服務器2
   real_server 192.168.62.134 8080 {
    weight 1 #權重,越大越高,依據機器配置來設置
    TCP_CHECK {#relserve的狀態檢測設置部分,單位是秒
        connect_timeout 10 #表示10秒無響應超時
        nb_get_retry 3     #表示重試次數
        dealy_before_retry 3  #表示重試間隔
        connect_port 8080
     }
  }
}
 
2、配置完畢後,重啓 service keepalived restart
3、查看LVS的負載生效情況:ipvsadm -ln 可以看到
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.62.100:8080 wrr persistent 10
  -> 192.168.62.134:8080          Route   1      0          0
  -> 192.168.62.133:8080          Route   5      0          0
 
4、網絡設置
    1)、LVS服務器 (此步應該是不需要執行的)
        ifconfig eth0 192.168.62.130 //(DIP)
        ifconfig eth0:0 192.168.62.100 //(VIP),這個VIP通過防火牆映射到公網IP
        route add -host 192.168.62.100 dev eth0:0 //讓發往192.168.62.100的請求都經過eth0:0

    2)、RelServer 1-N個服務器的配置,每個都要執行下
         使用root用戶,在任意目錄下建議lvs_real.sh文件,將如下文字拷貝進去
#!/bin/bash 
#Description: Config realserver script
SNS_VIP=192.168.62.100 #對應LVS服務器的VIP
/etc/rc.d/init.d/functions
 
case "$1" in
start)
       /sbin/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 NETWork OK"
 
       ;;
stop)
       /sbin/ifconfig lo:0 down
       /sbin/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 ./lvs_real.sh

啓動腳本:
./lvs_real.sh start :
 
 
四、其中LVS是存在單點故障的,即如果LVS服務器掛了,此時無論服務是否生效,都不能訪問真實的服務器。
      因此,需要實現LVS的雙機熱備,Master LVS掛了後,自動切換到BACKUP LVS.
      LVS的BACKUP,只是修改keepalived.conf中的state MASTER 爲 BACKUP,同時把priority 100的值設置爲 priority 49,至少50的差距。
 
 
五、監控:
1、sudo watch ipvsadm -ln  查看lvs服務是否正常,包括活動鏈接。此命令動態監控LVS的連接和realServer的健康狀況。
1、sudo watch ipvsadm -lcn|grep 192.168.62.100 此命令可以實時看到分發的情況,非常有效
2、查看LVS的吞吐量情況:watch ipvsadm -L -n --rate   #此功能非常有效,可以實時看到LVS在各個真實部件的分發情況
3、sudo watch ipvsadm -lcn 此命令動態監控終端連接過來後,LVS的處理狀態,連接失敗等
4、實時查看LVS連接狀態變化: watch ipvsadm -ln
6、查看LVS的連接情況:ipvsadm -L -n
7、查看LVS的統計信息:ipvsadm -L -n --stats

 

 

 

 

發佈了34 篇原創文章 · 獲贊 5 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章