LVS - NAT 模式集群
真实服务器
route add default gw IP地址
yum -y install httpd
service httpd start
chkconfig httpd on
网关服务器
modprobe ip_vs
cat /proc/net/ip_vs
yum -y install ipvsadm
vi /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
iptables -t nat -A POSTROUTING -s 192.168.24.0/24(内网网段) -o eth0(外网口网卡名称) -j SNAT --to-source 10.16.16.172
iptables -t nat -L
ipvsadm -A -t 172.16.16.172:80 -s rr
ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.21:80 -m
ipvsadm -Ln
service ipvsadm save
chkconfig ipvsadm on
实验具体流程
实验准备:四台虚拟机
客户端IP:192.168.108.10 GW:192.168.108.100
负载均衡调度器两张网卡:eth0:192.168.108.100
eth1:192.168.24.100
开启路由转发
开启ipvs调度器
开启snat转换
web服务器:RS1 IP:192.168.24.10 GW:192.168.24.100
RS2 IP:192.168.24.20 GW:192.168.24.100
实验流程:主要为负载均衡调度器的配置
1.开启路由转发
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p #刷新
2.安装软件
yum -y install ipvsadm
ipvsadm -Ln #-L:列出当前的调度规则
-n:以常见端口信息展现
创建集群:ipvsadm -A -t 192.168.108.100:80 -s rr
ipvsadm -Ln
指定真实服务器:
ipvsadm -a -t 192.168.108.100:80 -r 192.168.24.10:80 -m
ipvsadm -a -t 192.168.108.100:80 -r 192.168.24.20:80 -m
-m代表NAT模式
service ipvsadm save #保存,如果不保存重载会失效{因为临时在内存里}
chkconfig ipvsadm on #开机自启
3.指定防火墙规则
route -n查询网关
service iptables start # 启动防火墙
iptables -L # 查看防火墙规则
iptables -F # 清空防火墙规则
iptables -t nat -A POSTROUTING -s 192.168.24.0/24 -o eth0 -j SNAT --to-source 192.168.108.100 # 添加 SNAT 转换
-t nat表专门做路由转发
-A POSTROUTING:代表路由后做snat转换,路由前是dnat
-s:指源地址{内网地址}
-o:指出口网卡
-source:公网网卡地址
iptables -t nat -L # 查看 nat 表规则
service iptables save # 保存规则至持久化文件
4.查询信息
ipvsadm -Ln --stats
Conns:连接数
InPkts:入站数据包数量
OutPkts:出站数据包数量
InBytes:入站字节数量
OutBytes:出站字节数量
5.由于NAT工作方式支持端口映射
修改apache端口
ipvsadm -d -t 192.168.108.100:80 -r 192.168.24.10:80 #删除规则
ipvsadm -a -t 192.168.108.100:80 -r 192.168.24.10:8080 -m #继续添加规则
ipvsadm -Ln #查看规则
修改apache端口信息
清除24.20:80端口规则信息
添加24.20:8080端口规则信息
继续测试
LVS - DR 模式集群
真实服务器
service NetworkManager stop
#图形化需要关闭此服务
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
DEVICE=lo:0
IPADDR=虚拟IP
NETMASK=255.255.255.255
#四个255,代表广播地址,进一步告诉自己当访问虚拟ip时我可以接受到
vim /etc/sysctl.conf
#lvs -dr lo arp
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
#关闭arp响应级别,就可以把网卡隐藏起来了
sysctl -p
ifup lo:0
route add -host 虚拟IP dev lo:0
#添加路由规则
echo "/sbin/route add -host 虚拟IP dev lo:0" >> /etc/rc.local
#永久添加
service httpd start
负载调度器
service NetworkManager stop
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth0:0
vim ifcfg-eth0:0
DEVICE=eth0:0
IPADDR=虚拟IP
NETMASK=255.255.255.0
#漂移IP
ifup eth0:0 启动虚拟网卡
vim /etc/sysctl.conf
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
#关闭网卡重定向{重定向功能:例如,访问的是80,定向到8080},DR模式下不需要使用{因为不支持端口映射},也可以不做{相当于不优化}。
sysctl -p
modprobe ip_vs
cat /proc/net/ip_vs
yum -y install ipvsadm
ipvsadm -v
ipvsadm -A -t 虚拟IP:80 -s rr
ipvsadm -a -t 虚拟IP:80 -r 网站1:80 -g
ipvsadm -a -t 虚拟IP:80 -r 网站2:80 -g
ipvsadm -Ln
service ipvsadm save
chkconfig ipvsadm on
#查看发现:出站数据包为0,代表真实服务器和客户端直接相连,所以并发能力比NAT高,因为出站数据都由真实服务器完成,压力都分担到了真实服务器上。