LVS配置指南

Part I. 安裝配置ipvsadm

1>加載ip_vs模塊
[root@ssn ~]# modprobe ip_vs
[root@ssn ~]# lsmod | grep ip_vs
ip_vs                  77569  0
[root@ssn ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn

2>創建kernel-source目錄連接
[root@ssn src]# rpm -q kernel-devel
kernel-devel-2.6.18-8.el5
[root@ssn src]# ln -s /usr/src/kernels/2.6.18-8.el5-i686/ /usr/src/linux

3>安裝ipvsadm
[sense@ssn Desktop]$ tar xzvf ipvsadm-1.24.tar.gz
[sense@ssn Desktop]$ cd ipvsadm-1.24
[sense@ssn ipvsadm-1.24]$ make
[sense@ssn ipvsadm-1.24]$ sudo make install



5>三種IP負載均衡技術的優缺點比較:

雜項         VS/NAT     VS/TUN     VS/DR
服務器操做系統    任意      支持隧道       多數(支持Non-arp )
服務器網絡      私有網絡    局域網/廣域網  局域網
服務器數目(100M網絡)      10-20      100       多(100)
服務器網關      負載均衡器   本身的路由      本身的路由
效率         通常      高          最高


Part II. LVS/NAT

1>director端配置
(1)開啓IP轉發:
臨時開啓(當即生效):
[root@ssn src]# echo "1">/proc/sys/net/ipv4/ip_forward
永久開啓(重啓服務器或NETWROK服務後生效):
[root@ssn src]# vi /etc/sysctl.conf
--------------------------------------------
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
--------------------------------------------
[root@ssn src]# sysctl -p
(2)配置ipvsadm調度
[root@ssn src]# ipvsadm -C
[root@ssn src]# ipvsadm -A -t 192.168.1.90:80 -s wlc -p 120
[root@ssn src]# ipvsadm -a -t 192.168.1.90:80 -r 192.168.2.1:80 -m
[root@ssn src]# ipvsadm -a -t 192.168.1.90:80 -r 192.168.2.2:80 -m
[root@ssn src]# iptables -F
注:目前director端使用netfilter模塊會與LVS產生衝突,因此推薦直接關閉iptables。

2>client端配置
cluster1:
[root@cluster1 ~]# vi /etc/sysconfig/network
-------------------------------------------------
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=cluster1
GATEWAY=192.168.2.254
-------------------------------------------------
[root@cluster1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
-------------------------------------------------
DEVICE=eth0
BROADCAST=192.168.2.255
IPADDR=192.168.2.1
IPV6ADDR=
IPV6PREFIX=
NETMASK=255.255.255.0
NETWORK=192.168.2.0
ONBOOT=yes
-------------------------------------------------
cluster2:
[root@cluster2 ~]# vi /etc/sysconfig/network
-------------------------------------------------
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=cluster2
GATEWAY=192.168.2.254
-------------------------------------------------
[root@cluster2 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
-------------------------------------------------
DEVICE=eth0
BROADCAST=192.168.2.255
IPADDR=192.168.2.2
IPV6ADDR=
IPV6PREFIX=
NETMASK=255.255.255.0
NETWORK=192.168.2.0
ONBOOT=yes
-------------------------------------------------

3>遠程測試
[url]http://192.168.1.254/[/url]

4>問題說明
ip_vs模塊是實現基於內核的流量調度,因此本地不會顯示相應的監控程序。
[root@ssn httpd-2.2.6]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 127.0.0.1:8000              0.0.0.0:*                   LISTEN      5321/nasd           
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      6010/rsync          
tcp        0      0 :::873                      :::*                        LISTEN      6010/rsync     

[root@ssn httpd-2.2.6]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.90:http wlc
  -> 192.168.2.3:http             Masq    1      0          42        
  -> 192.168.2.2:http             Masq    1      0          44        



Part III. LVS/DR

1>director配置
root@ssn httpd-2.2.6]# vi /etc/sysctl.conf
------------------------------------------------
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.eth0.send_redirects = 1
------------------------------------------------
[root@ssn httpd-2.2.6]# sysctl -p
配置VIP:
[root@ssn httpd-2.2.6]# ip addr add 192.168.1.254 dev eth0
[root@ssn httpd-2.2.6]# ip route add 192.168.1.254/32 dev eth0
配置ipvsadm調度:
[root@ssn httpd-2.2.6]# ipvsadm -C
[root@ssn httpd-2.2.6]# ipvsadm -A -t 192.168.1.254:80 -s wlc -p 120
[root@ssn httpd-2.2.6]# ipvsadm -a -t 192.168.1.254:80 -r 192.168.1.92 -g
[root@ssn httpd-2.2.6]# ipvsadm -a -t 192.168.1.254:80 -r 192.168.1.93 -g
關閉防火牆:
[root@ssn src]# iptables -F
注:目前director端使用netfilter模塊會與LVS產生衝突,因此推薦直接關閉iptables。

2>realserver配置
cluster1:
[root@cluster1 ~]# vi /etc/sysctl.conf
----------------------------------------
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
----------------------------------------
[root@cluster1 ~]# sysctl  -p
配置VIP:
[root@cluster1 ~]# ip addr add 192.168.1.254 dev lo
[root@cluster1 ~]# ip route add 192.168.1.254/32 dev lo
本地IP:
[root@cluster1 ~]# vi /etc/sysconfig/network
-------------------------------------------------
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=cluster1
GATEWAY=192.168.1.1
-------------------------------------------------
[root@cluster1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
-------------------------------------------------
DEVICE=eth0
BROADCAST=192.168.1.255
IPADDR=192.168.1.91
IPV6ADDR=
IPV6PREFIX=
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
-------------------------------------------------
關閉iptables:
[root@cluster1 ~]# iptables -F


cluster2:
[root@cluster2 ~]# vi /etc/sysctl.conf
----------------------------------------
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
----------------------------------------
[root@cluster2 ~]# sysctl  -p
配置VIP:
[root@cluster2 ~]# ip addr add 192.168.1.254 dev lo
[root@cluster2 ~]# ip route add 192.168.1.254/32 dev lo
本地IP:
[root@cluster2 ~]# vi /etc/sysconfig/network
-------------------------------------------------
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=cluster2
GATEWAY=192.168.1.1
-------------------------------------------------
[root@cluster2 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
-------------------------------------------------
DEVICE=eth0
BROADCAST=192.168.1.255
IPADDR=192.168.1.92
IPV6ADDR=
IPV6PREFIX=
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
-------------------------------------------------
關閉iptables:
[root@cluster1 ~]# iptables -F


3>遠程測試
[url]http://192.168.1.254/[/url]

4>問題說明
LVS/DR中realserver也不能使用iptables,不然訪問測試不能成功。
[root@ssn httpd-2.2.6]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.254:http wlc
  -> 192.168.1.91:http            Route   1      0          11        
  -> 192.168.1.92:http            Route   1      1          10        



Part III. LVS/TUN


Part IV. ipvsadm命令參數說明(引用) ipvsadm -A -t 192.168.1.90:80 -s wlc -p 120 -A 增長一個虛擬服務,該服務由協議、IP地址和端口號組成,例如: -A -t 202.99.59.110:80 (增長一格虛擬服務,其協議(-t表示tcp,-u表示udp)爲TCP、IP爲202.99.59.1十、端口號爲80。 -s 指定服務採用的算法,經常使用的算法參數以下:     * rr   輪叫(Round Robin)       調度器經過"輪叫"調度算法將外部請求按順序輪流分配到集羣中的真實服務器上,它均等地對待每一臺服務 器,而無論服務器上實際的鏈接數和系統負載。     * wrr   加權輪叫(Weighted Round Robin)       調度器經過"加權輪叫"調度算法根據真實服務器的不一樣處理能力來調度訪問請求。這樣能夠保證處理能力強的服務器處理更多的訪問流量。調度器能夠自動問詢真實服務器的負載狀況,並動態地調整其權值。     * lc   最少連接(Least Connections)       調度器經過"最少鏈接"調度算法動態地將網絡請求調度到已創建的連接數最少的服務器上。若是集羣系統的真實服務器具備相近的系統性能,採用"最小鏈接"調度算法能夠較好地均衡負載。     * wlc   加權最少連接(Weighted Least Connections)       在集羣系統中的服務器性能差別較大的狀況下,調度器採用"加權最少連接"調度算法優化負載均衡性能,具備較高權值的服務器將承受較大比例的活動鏈接負載。調度器能夠自動問詢真實服務器的負載狀況,並動態地調整其權值。     * lblc   基於局部性的最少連接(Locality-Based Least Connections)       "基於局部性的最少連接" 調度算法是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。該算法根據請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器是可用的且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處於一半的工做負載,則用"最少連接"的原則選出一個可用的服務器,將請求發送到該服務器。     * lblcr   帶複製的基於局部性最少連接(Locality-Based Least Connections with Replication)       " 帶複製的基於局部性最少連接"調度算法也是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。它與LBLC算法的不一樣之處是它要維護從一個目標IP地址到一組服務器的映射,而LBLC算法維護從一個目標IP地址到一臺服務器的映射。該算法根據請求的目標IP地址找出該目標IP地址對應的服務器組,按"最小鏈接"原則從服務器組中選出一臺服務器,若服務器沒有超載,將請求發送到該服務器,若服務器超載;則按"最小鏈接"原則從這個集羣中選出一臺服務器,將該服務器加入到服務器組中,將請求發送到該服務器。同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以下降複製的程度。     * dh   目標地址散列(Destination Hashing)       "目標地址散列"調度算法根據請求的目標IP地址,做爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,不然返回空。     * sh   源地址散列(Source Hashing)       "源地址散列"調度算法根據請求的源IP地址,做爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,不然返回空。 -p 會話保持時間,定義流量被轉到同一個realserver的會話存留時間。 /sbin/ipvsadm -a -t 192.168.1.254:80 -r 192.168.1.12 -g -w 1 -p 100 -a 表示往一個服務內增長一個real server -r 指定real server的IP地址 -w 表示權重 -g 表示使用DR方式,-m表示NAT方式,-i表示tunneling方式。 更新中……
相關文章
相關標籤/搜索