直接路由的高可用LVS集羣配置



直接路由的高可用LVS集羣配置:
調度服務器IP:(106.3.43.240)192.168.11.100,節點服務器分別爲:192.168.11.101,192.168.11.102
一、安裝ipvsadmin:
1、yum -y install ipvsadmin(推薦用第一種方法)
2、下載http://www.linuxvirtualserver.org/software/,找到相應的版本:
    注意對應自己的內核版本
  ipvsadm-1.24.tar.gz
  tar zxvf ipvsadm-1.24.tar.gz
  cd ipvsadm-1.24
  make
  make install
  要想編譯正常,需要把內核做一個軟件連接到安裝目錄:
  ln -s /usr/src/kernels/2.6.9-22.EL-i686/ /usr/src/linux
  cd ipvsadm-1.24
  make
  make install
二、配置調度服務器:
1、添加節點:
    先清除:
    /sbin/ipvsadm -C
    添加:
    /sbin/ipvsadm -A -t 192.168.11.100:80 -s rr #(如果需要session保持添加-p 默認保持300秒)
  /sbin/ipvsadm -a -t 192.168.11.100:80 -r 192.168.11.101:80 -g
  /sbin/ipvsadm -a -t 192.168.11.100:80 -r 192.168.11.102:80 -g
  #/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -g(多個節點)
    #/sbin/ipvsadm -d -r $VIP:80 -r $RIP3:80 -g(刪除節點)
說明:1、選項-a表示添加服務器、-t用來指定VIP地址及TCP端口、-r用來指定RIP地址及TCP端口,-m表示使用NAT羣集模式(-g 

DR模式、-I  TUN模式),-w用來設置權後重(權重爲0時表示暫停節點)。
2、需要刪除整個虛擬服務器時,使用選項-D並指定虛擬IP地址即可,無需指定節點。例如若執行“ipvsadm –D –t 192.168.11.101:80”,則刪除此虛擬服務器。
 
2、添加虛擬IP到第一塊網卡(外網)並路由(只有一個網卡,他的地址:106.3.43.240):
    /sbin/ifconfig eth0:0 192.168.11.100 broadcast 192.168.11.255 netmask 255.255.255.255 up
  /sbin/route add -host 192.168.11.100 dev eth0:0
3、運行LVS
   /sbin/ipvsadm

4、以上寫成一個腳本運行也可:
   #vi/etc/init.d/lvsrs
#!/bin/sh
# description: start LVS of Directorserver
VIP=192.168.11.100
RIP1=192.168.11.101
RIP2=192.168.11.102
#RIPn=192.168.11.103~254(添加其它節點)
GW=192.168.11.1
. /etc/rc.d/init.d/functions
case $1 in
start)
echo "start LVS of DirectorServer"
# set the Virtual IP Address
/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:0
#Clear IPVS table
/sbin/ipvsadm -C
#set LVS
/sbin/ipvsadm -A -t $VIP:80 -s rr #(如果需要session保持添加-p 默認保持300秒)
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
#/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -g
#Run LVS
/sbin/ipvsadm
#end
;;
stop)
echo "close LVS Directorserver"
/sbin/ipvsadm -C
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac

(-s rr 是使用了輪叫算法,若要修改其它的算法,更改rr就可以了,ipvsadm -h查看幫助。-g 是使用lvs工作DR直接路由模式)

三、配置節點服務器:
1、配置網絡:
    /sbin/ifconfig lo:0 192.168.11.100 broadcast 192.168.11.255 netmask 255.255.255.255 up
  /sbin/route add -host 192.168.11.100 dev lo:0
2、修改sysct1.conf:
    sysctl -w net.ipv4.ip_forward=0
    sysctl -w net.ipv4.conf.lo.arp_ignore=1
    sysct1 -w net.ipv4.conf.lo.arp_announce=2
    sysct1 -w net.ipv4.conf.all.arp_ignore=1
    sysct1 -w net.ipv4.conf.all.arp_announce =2

或者:
    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
或者vi  sysctl
net.ipv4.ip_forward=0
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce =2

執行:sysctl -p


3、寫成腳本如下:
#!/bin/bash
  #description : start realserver
  VIP=192.168.11.100
  /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
  /sbin/route add -host $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
  #end


四、測試:
測試:分別啓動realserver上的httpd服務(節點服務器的www/html文件夾,可以共用NAS存儲掛載上去)
  在realserver1 執行 echo "This is realserver1" > /var/www/html/index.html
  在realserver2 執行 echo "This is realserver2" > /var/www/html/index.html
  打開IE瀏覽器輸入http://192.168.11.100 應該可以分別看到:This is realserver1 和 This is realserver1。

查看節點狀態:
#ipvsadm -L -n
查看負載連接情況:
#ipvsadm -Lnc


LVS的負載調度算法

  針對不同的網絡服務和配置需要,LVS調度器提供多種不同的負載調度算法,其中最常用的四種得法包括:輪詢、加權輪詢、最少

連接、加權最少連接。
輪詢(Round Robin):將收到的訪問請求按照順序輪流分配給羣集中的各個節點(真實 服務器),均等的對待每一臺服務器,而不

管服務器實際的連接數和系統負載。
加權輪詢(Weighted Round Robin):根據真實服務器的處理能力輪流分配收到的訪問請 求,調度器可以自動查詢各節點的負載情

況,並動態調整其權重。這樣可以保證處理能力強的服務器承擔更多的訪問流量。
最少連接(Least Connections):根據真實服務器已建立的連接數進行分配,將收到的訪 問請求優先分配給連接數最少的節點。如

果所有的服務器節點性能相近,採用這種方式可以更好的均衡負載。
加權最少連接(Weighted Least Connections):在服務器節點的性能差異較大的情況下,可以爲真實服務器自動調整權重,權得較

高的節點將承擔更大比例的活動連接負載。


五、給調度服務器添加備份:
1、下載heartbeatak或者直接安裝:yum -y install heartbeat
   說明:需要安裝:epel-release包,32位:wget http://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm   64位:wgethttp://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
修改epel.repo文件:
編譯/etc/yum.repos.d/epel.repo,做如下改動
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
改爲:
baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch


2、配置heartbeat
#chkconfig --levels 235 heartbeat on
複製三個文件: 
# cp /usr/share/doc/heartbeat-3.0.4/ha.cf /etc/ha.d/     #ha.cf HA的配置文件 
# cp /usr/share/doc/heartbeat-3.0.4/haresources /etc/ha.d/  #haresources 資源文件 
# cp /usr/share/doc/heartbeat-3.0.4/authkeys /etc/ha.d/   #HA節點間的驗證文件

配置:
# vi /etc/ha.d/ha.cf 
debugfile /var/log/ha-debug 
logfile /var/log/ha-log 
logfacility     local0 
keepalive 2 
deadtime 30 
warntime 10 
initdead 120 
udpport 694 
ucast eth1 1.1.1.2         #心跳 
auto_failback on 
node    DR1 
node    DR2 
ping 172.16.1.1  172.16.1.11 #網關與另一個節點IP 
respawn hacluster /usr/lib/heartbeat/ipfail 
deadping 30 
apiauth ipfail uid=hacluster
use_logd yes 
conn_logd_time 60

# vi /etc/ha.d/authkeys         #定義認證的keys 
auth 1 
1 crc

#chmod 600 /etc/ha.d/authkeys  修改authkeys文件權限

# vi/etc/ha.d/haresources       #配置HA資源 
DR1     IPaddr::192.168.11.100/24/eth0 httpd 

啓動heartbeat:
#service heartbeat start



六、也可使用keepalived給調度服務器添加備份
1、安裝keepalived
#yum -y install kernel kernel-devel keepalived
#chkconfig --levels 235 keepalived on
2、配置:
vi /etc/keepalived/keepalived.conf

global_defs {

   notification_email {

     [email protected]

   }

   notification_email_from root@localhost

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id LVS_DEVEL

}

 

vrrp_instance VI_1 {

    state MASTER         # 備份服務器上將 MASTER 改爲 BACKUP 

    interface eth0           # HA 監測網絡接口

    virtual_router_id 51     # 主、備機的 virtual_router_id 必須相同

    priority 100           # 主、備機取不同的優先級,主機值較大,備份機值較小

    advert_int 2        # VRRP Multicast 廣播週期秒數

    authentication {

        auth_type PASS         #VRRP 認證方式

        auth_pass 1111          #VRRP 口令字

    }

    virtual_ipaddress {

        192.168.11.100               # VRRP HA 虛擬地址 如果有多個VIP,繼續換行填寫

    }

}

 

virtual_server 192.168.11.100 80 {

    delay_loop 2                   # 每隔 6 秒查詢 realserver 狀態

    lb_algo rr                        #lvs 算法

    lb_kind DR                      # Direct Route

    persistence_timeout 50             # 同一IP 的連接60 秒內被分配到同一臺realserver

    protocol TCP                     # 用 TCP 協議檢查 realserver 狀態

 

  real_server 192.168.11.101 80 {

       weight 3          #(權重)

    TCP_CHECK {   

       connect_timeout 10       #(10秒無響應超時)
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80   

    }

}

real_server 192.168.11.102 80 {

       weight 3          #(權重)

    TCP_CHECK {   

       connect_timeout 10       #(10秒無響應超時)
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80   

    }

}

}

說明:備份調度服務器主要改二個地方:
state BACKUP         # 備份服務器上將 MASTER 改爲 BACKUP 
priority 99           # 主、備機取不同的優先級,主機值較大,備份機值較小

啓動:service keepalived start


七、通過piranha給調度服務器添加備份
1、安裝:yum -y install piranha
2、啓動:
#/etc/init.d/piranha-gui start   #啓動WEB配置界面
#/usr/sbin/piranha-passwd        #設置web登錄密碼,默認用戶名:piranha
#service pulse start             #啓動pulse

3、打開web:http://192.168.11.100:3636,進行配置
4、也可以直接配置lvs.cf文件:
#vi /etc/sysconfig/ha/lvs.cf
serial_no = 41
#primary_private = 10.0.0.1
service = lvs
backup_active = 1
backup = 192.168.11.99
#backup_private = 10.0.0.2
heartbeat = 1
heartbeat_port = 539
keepalive = 6
deadtime = 18
network = direct
debug_level = NONE
monitor_links = 1
syncdaemon = 1
virtual web_vip {
active = 1
address = 192.168.11.100 eth0:1
vip_nmask = 255.255.255.255
sorry_server = 127.0.0.1
port = 80
pmask = 255.255.255.255
use_regex = 0
load_monitor = none
scheduler = rr
protocol = tcp
timeout = 6
reentry = 15
quiesce_server = 0
server web01 {
address = 192.168.11.101
active = 1
port = 80
weight = 1
}
server web02 {
address = 192.168.11.102
active = 1
port = 80
weight = 1
}
}


附錄:lvs.cf配置詳解
———————————————–
serial_no = 41                #序號
primary = 192.168.0.112       #主LVS的公網IP
 #primary_private = 10.0.0.1  #內部ip地址,用於心跳檢測
service = elain_lvs           #服務名稱,可以自己定義
backup_active = 1             #是否有備份
backup = 192.168.1.211        #備份LVS的公網IP
#backup_private = 10.0.0.2
 heartbeat = 1                #是否開啓心跳
heartbeat_port = 649          #心跳的UDP端口
keepalive = 6                 #心跳間隔(秒)
deadtime = 18                 #如果主 LVS 節點在deadtime(秒)後沒有答覆,那麼備份 LVS 路由器節點就會發起失效轉移。
network = direct              #LVS類型(direct,tunnel,nat),此處用direct類型
debug_level = NONE            #debug信息級別
monitor_links = 1             #是否開啓realserver的監視功能,和後面的scheduler(調度算法)以及load_monitor相關
syncdaemon = 1
virtual web_vip {                   #虛擬服務的名稱,可自定義. 可定義多個virtual lvs服務
active = 1                          #是否激活
address = 192.168.0.115 eth0:1      #虛擬服務所綁定的ip(vip)以及設備名
sorry_server = 127.0.0.1            #當rs全部失效時訪問本機
vip_nmask = 255.255.255.255         #vip相對應的掩碼
port = 80                           #虛擬服務的端口
persistent = 30                     #使用持久穩固的服務時間
pmask = 255.255.255.255             #如果使用持久會話,設置子網掩碼
use_regex = 0                       #expect中是否使用正則表達式
load_monitor = none                 #LVS 路由器能夠使用 rup 或 ruptime 來監視各個真正服務器的載量。
scheduler = rr                      #LVS調度算法
protocol = tcp                      #虛擬服務使用的協議類型
timeout = 6                         #realserver失效後從lvs路由條目中移除realserver所必須經過的時間(秒)
reentry = 15                        #移除以後的realserver重新加入lvs路由條目所必須經過的時間(秒)
quiesce_server = 0
 server web01 {                      #realsever服務名稱,可自定義
address = 192.168.0.113         #realserver的ip地址
active = 1                      #是否激活
port = 80                       #rs端口
weight = 1                      #權重
}
server web02 {
 address = 192.168.0.114
 active = 1
 port = 80
 weight = 1
 }
 }

 



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