LVS 虚拟服务器三种模式例子
NAT模式 1.模拟环境: LVS服务器有两块网卡,连接外网(用户端)和内网(服务器),充当"交警"角色. 优点: 节省ip开销 缺点: LVS服务器负载过高,数据吞吐量降低 三台Linux虚拟机: LVS服务器(vmnet1 ip: 200.168.10.10 , vmnet2 ip: 192.168.10.1) WEB服务器1(vmnet2 ip: 192.168.
·
NAT模式
1.模拟环境:
LVS服务器有两块网卡,连接外网(用户端)和内网(服务器),充当"交警"角色.
优点: 节省ip开销
缺点: LVS服务器负载过高,数据吞吐量降低
三台Linux虚拟机:
LVS服务器(vmnet1 ip: 200.168.10.10 , vmnet2 ip: 192.168.10.1)
WEB服务器1(vmnet2 ip: 192.168.10.2)
WEB服务器2(vmnet2 ip: 192.168.10.3)
本地真实机: 外网用户(vmnet1 ip: 200.168.10.2)
2.准备:
a) 关闭防火墙
# service iptables stop
# vi /etc/selinux/config (设置 SELINUX=disabled)
b) 建立网页文件
# vi /var/www/html/index.html
(两台web服务器的index.html内容要差异化...)
c) 安装 ipvsadm 软件
# yum -y install ipvsadm*
3.配置LVS/WEB服务器:
a) LVS: 开启路由转发功能
# echo 1 > /proc/sys/net/ipv4/ip_forward
b) WEB: 设置网关
# route add default gw 192.168.10.1
(因为它在内网,它的数据得经过LVS服务器到外网去!)
c) 在LVS服务器上,ping内网和外网,看是否能通?
4.设置LVS服务器的转发规则:
#!/bin/bash
#lvs.sh
ipvsadm -At 200.168.10.10:80 -s rr
ipvsadm -at 200.168.10.10:80 -r 192.168.10.2:80 -m
ipvsadm -at 200.168.10.10:80 -r 192.168.10.3:80 -m
ipvsadm
# chmod a+x lvs.sh
./lvs.sh
-s 模式 rr 轮询
-r 真实服务器 -m 模式
5.测试:
外网用户访问 200.168.10.10
(如果操作正确,每刷新一次会显示不同内容,因为web服务器有2台,它们是轮流应答的!!)
TUN模式
1.模拟环境: LVS服务器和WEB服务器都设置为公网IP(有点:web服务器的返回数据不经过LVS服务器,而是直接给外网用户,数据吞吐量较NAT模式增加10倍!)
三台Linux虚拟机:
LVS服务器:(vmnet1 ip: 200.168.10.10)
WEB服务器1:(vmnet1 ip: 200.168.10.2)
WEB服务器2:(vmnet1 ip: 200.168.10.3)
本地真实机: 外网用户(vmnet1)
2.思考一个问题:
三台服务器全部在公网,用户访问时,怎么知道该访问哪一台WEB服务器 ; 即使知道要访问的是LVS服务器,那LVS怎么知道要去找哪一台WEB服务器呢?
3.写两个脚本: lvs.sh在LVS服务器执行,arp.sh在WEB服务器执行
#!/bin/bash
#lvs.sh
ifconfig tunl0 200.168.10.10 netmask 255.255.255.255 up
route add -host 200.168.10.10 dev tunl0
ipvsadm -At 200.168.10.10:80 -s rr
ipvsadm -at 200.168.10.10:80 -r 200.168.10.2:80 -i
ipvsadm -at 200.168.10.10:80 -r 200.168.10.3:80 -i
ipvsadm -L -n
#!/bin/bash
#arp.sh
ifconfig tunl0 200.168.10.10 netmask 255.255.255.255 up
route add -host 200.168.10.10 dev tunl0
echo 1 > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
当交换机问"谁是10.10",作arp忽略
echo 2 > /proc/sys/net/ipv4/conf/tunl0/arp_announce
当LVS问谁是"10.2",作arp宣告
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
4.测试: 用户访问 200.168.10.10
DR模式
1.模拟环境:
a) 在TUN模式上,把tunl0网卡都关闭,改用回环网卡,兼容性更强
b) 网络环境与TUN模式一致
2.写两个脚本:
#!/bin/bash
#lvs.sh
ifconfig eth0:0 200.168.10.10 netmask 255.255.255.255 up
route add -host 200.168.10.10 dev eth0:0
ipvsadm -At 200.168.10.10:80 -s rr
ipvsadm -at 200.168.10.10:80 -r 200.168.10.2:80 -g
ipvsadm -at 200.168.10.10:80 -r 200.168.10.3:80 -g
ipvsadm -L -n
#!/bin/bash
#arp.sh
ifconfig lo:0 200.168.10.10 netmask 255.255.255.255 up
route add -host 200.168.10.10 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
3.测试: 用户访问 200.168.10.10
1.模拟环境:
LVS服务器有两块网卡,连接外网(用户端)和内网(服务器),充当"交警"角色.
优点: 节省ip开销
缺点: LVS服务器负载过高,数据吞吐量降低
三台Linux虚拟机:
LVS服务器(vmnet1 ip: 200.168.10.10 , vmnet2 ip: 192.168.10.1)
WEB服务器1(vmnet2 ip: 192.168.10.2)
WEB服务器2(vmnet2 ip: 192.168.10.3)
本地真实机: 外网用户(vmnet1 ip: 200.168.10.2)
2.准备:
a) 关闭防火墙
# service iptables stop
# vi /etc/selinux/config (设置 SELINUX=disabled)
b) 建立网页文件
# vi /var/www/html/index.html
(两台web服务器的index.html内容要差异化...)
c) 安装 ipvsadm 软件
# yum -y install ipvsadm*
3.配置LVS/WEB服务器:
a) LVS: 开启路由转发功能
# echo 1 > /proc/sys/net/ipv4/ip_forward
b) WEB: 设置网关
# route add default gw 192.168.10.1
(因为它在内网,它的数据得经过LVS服务器到外网去!)
c) 在LVS服务器上,ping内网和外网,看是否能通?
4.设置LVS服务器的转发规则:
#!/bin/bash
#lvs.sh
ipvsadm -At 200.168.10.10:80 -s rr
ipvsadm -at 200.168.10.10:80 -r 192.168.10.2:80 -m
ipvsadm -at 200.168.10.10:80 -r 192.168.10.3:80 -m
ipvsadm
# chmod a+x lvs.sh
./lvs.sh
-s 模式 rr 轮询
-r 真实服务器 -m 模式
5.测试:
外网用户访问 200.168.10.10
(如果操作正确,每刷新一次会显示不同内容,因为web服务器有2台,它们是轮流应答的!!)
TUN模式
1.模拟环境: LVS服务器和WEB服务器都设置为公网IP(有点:web服务器的返回数据不经过LVS服务器,而是直接给外网用户,数据吞吐量较NAT模式增加10倍!)
三台Linux虚拟机:
LVS服务器:(vmnet1 ip: 200.168.10.10)
WEB服务器1:(vmnet1 ip: 200.168.10.2)
WEB服务器2:(vmnet1 ip: 200.168.10.3)
本地真实机: 外网用户(vmnet1)
2.思考一个问题:
三台服务器全部在公网,用户访问时,怎么知道该访问哪一台WEB服务器 ; 即使知道要访问的是LVS服务器,那LVS怎么知道要去找哪一台WEB服务器呢?
3.写两个脚本: lvs.sh在LVS服务器执行,arp.sh在WEB服务器执行
#!/bin/bash
#lvs.sh
ifconfig tunl0 200.168.10.10 netmask 255.255.255.255 up
route add -host 200.168.10.10 dev tunl0
ipvsadm -At 200.168.10.10:80 -s rr
ipvsadm -at 200.168.10.10:80 -r 200.168.10.2:80 -i
ipvsadm -at 200.168.10.10:80 -r 200.168.10.3:80 -i
ipvsadm -L -n
#!/bin/bash
#arp.sh
ifconfig tunl0 200.168.10.10 netmask 255.255.255.255 up
route add -host 200.168.10.10 dev tunl0
echo 1 > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
当交换机问"谁是10.10",作arp忽略
echo 2 > /proc/sys/net/ipv4/conf/tunl0/arp_announce
当LVS问谁是"10.2",作arp宣告
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
4.测试: 用户访问 200.168.10.10
DR模式
1.模拟环境:
a) 在TUN模式上,把tunl0网卡都关闭,改用回环网卡,兼容性更强
b) 网络环境与TUN模式一致
2.写两个脚本:
#!/bin/bash
#lvs.sh
ifconfig eth0:0 200.168.10.10 netmask 255.255.255.255 up
route add -host 200.168.10.10 dev eth0:0
ipvsadm -At 200.168.10.10:80 -s rr
ipvsadm -at 200.168.10.10:80 -r 200.168.10.2:80 -g
ipvsadm -at 200.168.10.10:80 -r 200.168.10.3:80 -g
ipvsadm -L -n
#!/bin/bash
#arp.sh
ifconfig lo:0 200.168.10.10 netmask 255.255.255.255 up
route add -host 200.168.10.10 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
3.测试: 用户访问 200.168.10.10
更多推荐
已为社区贡献1条内容
所有评论(0)