原理:LVS DR(director Routing)技术利用了Internet服务的非堆成特带你,调度器只负责调度Client发出的请求,
而服务器realserver直接将响应结果发挥给Client,因此相对LVS NAT方式而言可以提高整个集群数据包的吞吐量。关
于LVS DR的搭建架构应满足:电镀漆和服务器在物理上有一个网卡通过局域网链接,VIP地址被电镀漆和服务器组共享,
电镀漆配置的VIP地址对外部是可见的,用于接收虚拟服务的请求报文。把所有服务器的VIP地址配置在各自的NOn-ARP
网路设备,它对外不可见,只是用于处理目标地址为VIP的网络请求。
实验环境:
客户机1: | 客户机2 | 转发器 | realserver1 | realserver2 | |
node2 | 宿主主机 | node1 | web1 | web2 |
网络拓扑图
node1设置文件:
需要修改文件
网元位置 网卡名 链接方式 对应ip
node1 eth0 桥接 RIP
node1 eth0:0 虚拟网卡 VIP
转发器node1相关配置信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
eth0eth0:0
DEVICE=eth0DEVICE=eth0:1
TYPE=Ethernet TYPE=Ethernet
UUID=c64ec2f3-0393-4215-9488-b87eb098fc33 ONBOOT=
yes
ONBOOT=
yes
NM_CONTROLLED=
yes
NM_CONTROLLED=
yes
BOOTPROTO=none
BOOTPROTO=none DEFROUTE=
yes
PREFIX=24 IPV4_FAILURE_FATAL=
yes
DEFROUTE=
yes
IPV6INIT=no
IPV4_FAILURE_FATAL=
yes
HWADDR=00:0C:29:D0:6B:6B
IPV6INIT=no USERCTL=no
NAME=
"System eth0"
IPADDR=192.168.4.233
HWADDR=00:0C:29:D0:6B:6B NETMASK=255.255.255.0
USERCTL=no GATEWAY=192.168.4.149
IPADDR=192.168.4.201 DNS1=192.168.4.149
NETMASK=255.255.255.0 [root@node1 network-scripts]
#
GATEWAY=192.168.4.149
DNS1=192.168.4.149
|
realserver::
网元位置 网卡名 链接方式 对应IP
web1 eth0 桥接 RIP
web1 lo:1 复制lo VIP
相关网卡配置
eth0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
lo:1
DEVICE=eth0 DEVICE=lo:0
TYPE=Ethernet IPADDR=192.168.4.233
//VIP
UUID=3a5f26b3-6ef6-4f8f-8a67-dd65291a109e NETMASK=255.255.255.255
//
只针对此IP地址的包进行处理
ONBOOT=
yes
ONBOOT=
yes
NM_CONTROLLED=
yes
NAME=loopback
BOOTPROTO=none
PREFIX=24
DEFROUTE=
yes
IPV4_FAILURE_FATAL=
yes
IPV6INIT=no
NAME=System eth0
HWADDR=00:0C:29:E4:32:DC
USERCTL=no
IPADDR=192.168.4.211
NETMASK=255.255.255.0
GATEWAY=192.168.4.149
DNS1=192.168.4.149
|
realserver2:web2
网元位置: 网卡名 链接方式 对应IP
web2 eth0 桥接 RIP
web2 lo:0 复制lo VIP
相关网卡配置信息
eth0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
eth0 lo:0
DEVICE=eth0 DEVICE=lo:0
TYPE=Ethernet IPADDR=192.168.4.203
UUID=3a5f26b3-6ef6-4f8f-8a67-dd65291a109e NETMASK=255.255.255.255
ONBOOT=
yes
ONBOOT=
yes
NM_CONTROLLED=
yes
NAME=loopback
BOOTPROTO=none
PREFIX=24
DEFROUTE=
yes
IPV4_FAILURE_FATAL=
yes
IPV6INIT=no
NAME=
"System eth0"
HWADDR=00:0C:29:D4:56:5C
USERCTL=no
IPADDR=192.168.4.212
NETMASK=255.255.255.0
GATEWAY=192.168.4.149
DNS1=192.168.4.149
|
director相关文件:
1
2
3
4
5
6
7
|
vi
/etc/sysctl
.conf
net.ipv4.ip_forward = 1
//
修改位置
sysctl -p
//
对刚才配置文件进行保存
对于realserver web1和web2服务器可以通过配置文件永久生效如下所示
realserver(1&2):
echo
"net.ipv4.conf.eth0.arp_ignore=1
net.ipv4.conf.eth0.arp_announce=2 " >>
/etc/sysctl
.conf
sysctl -p
|
1
2
3
4
|
RealServer或临时生效:
echo
2 >
/proc/sys/net/ipv4/conf/eth0/arp_announce
echo
1 >
/proc/sys/net/ipv4/conf/eth0/arp_ignore
|
主角部分:在分发器上安装ipvsadm管理工具
1
2
3
4
5
6
|
rpm -ivh
/media/cdrom/LoadBlanced/ipvsadm-1
.26-4.el6.x86_64.rpm
ipvsadm -A -t 192.168.4.201:80 -s rr
ipvsadm -a -t 192.168.4.201:80 -r 192.168.4.211 -g
ipvsadm -a -t 192.168.4.201:80 -r 192.168.4.212 -g
/etc/init
.d
/ipvsadm
save
ipvsadm -L -n
|
生成验证文件
1
2
3
|
realserver:生成验证文件,使用httpd服务
并对:web1
echo
"web11111"
>>
/var/www/html/index
.html
web2
echo
"web22222"
>>
/var/www/html/index
.html
|
虚拟机linux客户端测试:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
yum -y
install
elinks
elinks 192.168.4.201 -dump
//
观察结果 满足预测结果
[root@node2 ~]
# elinks 192.168.4.233 -dump
web5678
[root@node2 ~]
# elinks 192.168.4.233 -dump
web1234
[root@node2 ~]
# elinks 192.168.4.233 -dump
web1234
[root@node2 ~]
# elinks 192.168.4.233 -dump
web5678
[root@node2 ~]
# elinks 192.168.4.233 -dump
web1234
[root@node2 ~]
# elinks 192.168.4.233 -dump
web5678
[root@node2 ~]
#
|
宿主主机测试
转发器node1结果
1
2
3
4
5
6
7
|
[root@node1 ~]
# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.4.233:80 rr
-> 192.168.4.211:80 Route 1 0 8
-> 192.168.4.212:80 Route 1 0 7
|
1
2
3
4
5
6
7
|
[root@node1 ~]
# ipvsadm -L -n --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 192.168.4.233:80 24 116 0 9597 0
-> 192.168.4.211:80 12 60 0 4980 0
-> 192.168.4.212:80 12 56 0 4617 0
|
现实情况中可根据实际规划信息进行相应的算法调度,LVS所提供的12中调度算法,在一定程度上能满足大多数服务器的架构需求。
本文转自 CARYFLASH 51CTO博客,原文链接:http://blog.51cto.com/maoxiaoxiong/1832438