一、LVS说明:
1.LVS三种模式:
(1)NAT模式:
非大并发适用,请求:外网 -> LVS虚拟IP -> 内网服务器群,响应:内网服务器群 -> LVS虚拟IP -> 外网,服务器群隐藏在内网。
(2)TUN模式:
大并发适用,请求:外网 -> LVS -> 服务器群,响应:服务器群 -> 外网,每台服务器要有独立网卡,与每个请求建立独立通道,服务器群暴露在外网。
(3)DR模式:
大并发适用,请求:外网 -> LVS虚拟IP -> 内网服务器群,响应:服务器群 -路由通道> 外网,服务器群共用一条路由通道(对外为虚拟IP),服务器群隐藏在内网。
2.ARP配置级别:
(1)arp-ignore配置ARP请求响应级别:
0: 本机配置IP,就能响应请求
1:请求的目标地址到达对应网络接口,才会响应请求
(2)arp-announce配置ARP通告级别:
0:本机上所有接口对外通告,所有网卡都能接受请求通告
1:会避免本网卡与不匹配的目标进行通告
2:只在本网卡通告
二、搭建1台LVS+2台Nginx(DR模式):
LVS主机IP: 192.168.233.130
LVS主机虚拟IP:192.168.233.150
Nginx1主机IP:192.168.233.129
Nginx2主机IP:192.168.233.131
1.LVS主机配置:
(1)关闭网络配置管理器:
[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]# systemctl disable NetworkManager
(2)增加虚拟IP配置,拷贝ifcfg-ens33并命名为ifcfg-eth0:2(cd到/etc/sysconfig/network-scripts/目录):
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:2
修改内容如下(vi ifcfg-ens33:2):
BOOTPROTO="static"
DEVICE="ens33:2"
ONBOOT="yes"
IPADDR=192.168.233.150 #本机虚拟IP
NETMASK=255.255.255.0
(3)重启网络让配置生效:
[root@localhost network-scripts]# service network restart
(4)查看效果:
[root@localhost network-scripts]# ip addr
2.Nginx1主机配置(绑定150虚拟IP):
(1)关闭网络配置管理器:
[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]# systemctl disable NetworkManager
(2)增加虚拟网络子接口(绑定150虚拟IP),拷贝ifcfg-lo并命名为ifcfg-lo:2(cd到/etc/sysconfig/network-scripts/目录):
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:2
修改内容如下(vi ifcfg-lo:2):
DEVICE=lo:2
IPADDR=192.168.233.150 #配置LVS虚拟IP
NETMASK=255.255.255.255
NETWORK=127.0.0.0
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback
(3)刷新生效:
[root@localhost network-scripts]# ifup lo
(4)ARP配置,修改sysctl.conf配置(cd到/etc目录):
[root@localhost etc]# vi sysctl.conf
内容如下:
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
(5)刷新生效sysctl.conf配置:
[root@localhost etc]# sysctl -p
(6)添加路由,连接LVS虚拟IP:
[root@localhost etc]# echo "route add -host 192.168.233.150 dev lo:2" >> /etc/rc.local
查看路由:
[root@localhost etc]# route -n
3.Nginx2主机配置(绑定150虚拟IP):
(1)关闭网络配置管理器:
[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]# systemctl disable NetworkManager
(2)增加虚拟网络子接口(绑定150虚拟IP),拷贝ifcfg-lo并命名为ifcfg-lo:2(cd到/etc/sysconfig/network-scripts/目录):
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:2
修改内容如下(vi ifcfg-lo:2):
DEVICE=lo:2
IPADDR=192.168.233.150 #配置LVS虚拟IP
NETMASK=255.255.255.255
NETWORK=127.0.0.0
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback
(3)刷新生效ifcfg-lo:2:
[root@localhost network-scripts]# ifup lo
(4)ARP配置,修改sysctl.conf配置(cd到/etc目录):
[root@localhost etc]# vi sysctl.conf
内容如下:
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
(5)刷新生效sysctl.conf配置:
[root@localhost etc]# sysctl -p
(6)添加路由,连接LVS虚拟IP:
[root@localhost etc]# echo "route add -host 192.168.233.150 dev lo:2" >> /etc/rc.local
查看路由:
[root@localhost etc]# route -n
三、利用ipvsadm工具配置集群:
1.ipvsadm工具安装:
(1)安装:
[root@localhost ~]# yum install ipvsadm
(2)查看版本号与集群列表与状态:
[root@localhost ~]# ipvsadm -Ln
[root@localhost ~]# ipvsadm -Ln --stats
(3)查看帮助文档:
[root@localhost ~]# ipvsadm -h
[root@localhost ~]# man ipvsadm
(4)查看持久化连接信息:
[root@localhost ~]# ipvsadm -Ln --persistent-conn
(5)查看请求过期时间(显示源ip和目标ip):
[root@localhost ~]# ipvsadm -Lnc
(6)查看过期时间:
[root@localhost ~]# ipvsadm -Ln --timeout
(7)重启ipvsadm:
[root@localhost ~]# service ipvsadm restart
2.添加集群(-A添加集群,-t为TCP协议,-s rr设置负载均衡为轮询):
[root@localhost ~]# ipvsadm -A -t 192.168.233.150:80 -s rr
3.为集群添加Nginx1节点与Nginx2节点:
(1)Nginx1节点(-a添加节点,-t为TCP协议,-r为Nginx1主机IP+端口,-g设为DR模式):
[root@localhost ~]# ipvsadm -a -t 192.168.233.150:80 -r 192.168.233.129:80 -g
(2)Nginx2节点(-a添加节点,-t为TCP协议,-r为Nginx2主机IP+端口,-g设为DR模式):
[root@localhost ~]# ipvsadm -a -t 192.168.233.150:80 -r 192.168.233.131:80 -g
4.保存以上规则:
[root@localhost network-scripts]# ipvsadm -S
5.浏览器访问LVS虚拟IP查看轮询打开Nginx1与Nginx2主页的效果:
(1)修改持久化超时时间(默认300秒,此处为了看效果改为2秒):
[root@localhost network-scripts]# ipvsadm -E -t 192.168.233.150:80 -s rr -p 2
(2)修改tcp、tcpfin、udp过期时间:
[root@localhost network-scripts]# ipvsadm --set 1 1 1
(3)用浏览器隔几秒访问LVS虚拟IP,能看到轮询显示Nginx1与Nginx2主页的效果
http://192.168.233.150