1. 程式人生 > >LVS+Keepalived負載均衡主備&雙主架構全攻略

LVS+Keepalived負載均衡主備&雙主架構全攻略

LVS+Keepalived 介紹
LVS
LVS 是 Linux Virtual Server 的簡寫,意即 Linux 虛擬伺服器,是一個虛擬的伺服器集群系統。本專案在 1998 年 5 月由章文嵩博士成立,是中國國內最早出現的自由軟體專案之一。目前有三種 IP 負載均衡技術(VS/NAT、VS/TUN 和 VS/DR);
十種排程演算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)。

Keepalvied
Keepalived 在這裡主要用作 RealServer 的健康狀態檢查以及 LoadBalance 主機和 BackUP 主機之間 failover 的實現

一、LVS+Keepalived負載均衡主備架構

I. 網站負載均衡拓樸圖

(略)

IP 資訊清單:
名稱 IP

  1. LVS-DR-Master 192.168.2.98
  2. LVS-DR-Backup 192.168.2.99
  3. LVS-DR-VIP 192.168.2.100
  4. Realserver01 192.168.2.101
  5. Realserver02 192.168.2.102
  6. Realserver03 192.168.2.103
  7. Realserver04 192.168.2.104

II.安裝ipvsadmkeepalived軟體包

下載後建議統一放置在/usr/local/src/lvs

Shell
1234567891011121314151617 #uname -r   2.6.18-53.el5PAE//檢視核心版本#ln -s /usr/src/kernels/2.6.18-53.el5PAE-i686/  /usr/src/linux  //防止報錯   #tar zxvf ipvsadm-1.24.tar.gz   #cd ipvsadm-1.24   #make && make install   #find / -name ipvsadm  # 檢視ipvsadm的位置   #tar zxvf keepalived-1.1.15.tar.gz   #cd keepalived-1.1.15   #./configure  && make && make install   #find / -name keepalived  # 檢視keepalived位置                  #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/   #service keepalived start|stop     #做成系統啟動服務方便管理.

III. 配置Realserver指令碼

在 4 臺 Realserver 主機上建立如下指令碼,然後執行

Shell
12345678910111213141516171819202122232425262728 #!/bin/bash   VIP=192.168.2.100/etc/rc.d/init.d/functions   case$1instart)ifconfig lo:0$VIPnetmask255.255.255.255broadcast$VIPup/sbin/route add-host$VIPdev lo:0echo"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/nullecho"RealServer Start OK";;stop)ifconfig lo:0down   route del$VIP2>/dev/nullecho"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   echo"RealServer Stoped";;*)echo"Usage: $0 {start|stop}"exit1esacexit0

IV. 配置keepalived實現負載均衡和和高可用性

1.在 LVS-DR-Master 主機上編輯 keepalived 的配置檔案 : vim /etc/keepalived/keepalived.conf

Shell
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 !ConfigurationFileforkeepalivedglobal_defs{notification_email{//此處填寫你的郵件地址}notification_email_from your email!smtp_server smtp.**.comsmtp_connect_timeout30router_id LVS_DEVEL}vrrp_instanceVI_1{stateMASTERinterfaceeth0lvs_sync_daemon_intefaceeth0//如是同一個網絡卡,可省略virtual_router_id77//標識ID,請務必保證內網唯一性,和備機必須一致!priority100//權重需比備機高advert_int2//主備檢測間隔authentication{//主備通訊密碼,必須一致auth_type PASS   auth_pass1111}virtual_ipaddress{192.168.2.100VIP,多個請換行填寫}}virtual_server192.168.2.10080{delay_loop6//每隔6秒檢測Realserver健康狀況lb_algo wlc//wlc演算法,其他演算法請參考ipvsadm十大演算法lb_kind DR//採用DR模式,即直接路由,其他還有TUNNAT兩種模式。persistence_timeout1800//設定超時未半小時protocol TCP   real_server192.168.2.10180{//第一個realserver,請注意80和後面{之間有個空格!weight100//權重HTTP_GET{//通過檢測網頁來檢查Realserver健康狀態url{path/XX/index.jsp//Realserver上的網頁,如/model/index.jspstatus_code200//正確的返回值,一般是200}connect_timeout3//超時3秒,則失敗nb_get_retry3//失敗重試次數delay_before_retry3//重試間隔時間}}real_server192.168.2.10280{weight100TCP_CHECK{//此範例為TCP檢查方法,區別於HTTP方法,推薦使用HTTP方法。connect_timeout10nb_get_retry3delay_before_retry3connect_port80}}}real_server192.168.2.10380{weight100HTTP_GET{url{path/XX/index.jspstatus_code200}connect_timeout3nb_get_retry3delay_before_retry3}}real_server192.168.2.10480{weight100HTTP_GET{url{path/XX/index.jspstatus_code200}connect_timeout3nb_get_retry3delay_before_retry3}}

2.編輯 LVS-DR-Backup 上的 keepalived 配置檔案(可拷貝 Master 上的),然後如下修改:

Shell
12 state BACKUP//主機上則為Master   priority90//權值小於主機

其餘保持不變即可。

V. 啟動LVS

Realserver 指令碼啟動之後不需要操作,然後依次啟動 LVS 主機上的 keepalived 服務即可: service keepalived start

二、LVS+Keepalived負載均衡雙主互備架構

IP 資訊清單:
名稱 IP

  1. LVS-DR-Master 192.168.2.98
  2. LVS-DR-Backup 192.168.2.99
  3. LVS-DR-VIP1 192.168.2.100
  4. LVS-DR-VIP2 192.168.2.105
  5. Realserver01 192.168.2.101
  6. Realserver02 192.168.2.102
  7. Realserver03 192.168.2.103
  8. Realserver04 192.168.2.104

雙主互備方案需要 2 個 VIP,分別繫結到兩臺 LVS 主機上,然後修改 keepalived.conf 讓兩臺 LVS 互相作為備機,程式碼稍作修改即可:

Shell
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394