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.110、端口號為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方式。
更新中……
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.110、端口號為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方式。
更新中……
轉載于:https://blog.51cto.com/sense5/55297
總結
- 上一篇: asp.net三层结构
- 下一篇: 使用REVERSE INDEX改善大规模