[集群架构]部署使用LVS集群架构,两种主要的集群架构工作模式:LVS-NAT、LVS-DR。
LVS术语:
Director Server:调度服务器
Real Server:真实服务器
VIP:虚拟IP地址
RIP:真实IP地址
DIP:调度器连接节点服务器的IP地址
常见的LVS工作模式:
一、VS/NAT:
通过网络地址转换实现的虚拟服务器
大并发网络时会有性能瓶颈
web服务器<-->交换机<-->调度服务器(承担路由器的作用)<-->互联网<-->用户
二、VS/DR:(推荐)
直接使用路由技术实现虚拟服务器
节点服务器需要配置VIP,且注意MAC地址广播
web服务器、调度服务器(调度服务器在其中实现调度分配,调度完成后web服务器直接与用户沟通)<->-交换机<-->路由器<-->互联网<-->用户
三、VS/TUN:
通过隧道方式实现虚拟服务器
web服务器<-->交换机<-->互联网<-->调度服务器<-->互联网<-->用户
LVS工作模式一:NAT集群
配置环境:
一台双网卡LVS调度器:
192.168.4.5 //互联网通讯
192.168.2.5 //局域网通讯
四台web服务器:
最少两台!
(网关设置为192.168.2.5)
web1:192.168.2.100
web2:192.168.2.150
web3:192.168.2.200
web4:192.168.2.250
web服务器需要配置好能正常访问的http服务!
开启调度服务器的NAT路由转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward //临时生效
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf //永久生效
安装ipvsadm参考:https://teddyou.com/?id=47
yum -y install ipvsadm //安装软件包
ipvsadm -A -t 192.168.4.5:80 -s wrr //添加虚拟主机
ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.100 -m //添加真实主机
ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.150 -m
ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.200 -m
ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.250 -m
ipvsadm-save -n > /etc/sysconfig/ipvsadm //保存配置
配置完成,访问测试。
[root@7 ~]# curl 192.168.4.5 web444 192.168.2.250 [root@7 ~]# curl 192.168.4.5 web333 192.168.2.200 [root@7 ~]# curl 192.168.4.5 web222 192.168.2.150 [root@7 ~]# curl 192.168.4.5 web111 192.168.2.100 |
LVS工作模式二:DR集群
每台主机需要两个IP。(其中一个是VIP)
要求如下:
LVS调度器:
DIP : 192.168.4.5
VIP : 192.168.4.15 //公网IP地址
WEB集群服务器:
web1 :
RIP : 192.168.4.100
VIP : 192.168.4.15
web2 :
RIP : 192.168.4.150
VIP : 192.168.4.15
web3 :
RIP : 192.168.4.200
VIP : 192.168.4.15
web4 :
RIP : 192.168.4.250
VIP : 192.168.4.15
调度服务器配置方法:
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:0 //拷贝配置文件
vim /etc/sysconfig/network-scripts/ifcfg-eth0:0 //修改配置文件,多余删掉,按照如下修改!
TYPE=Ethernet BOOTPROTO=none //IP获取方式(手动) NAME=eth0:0 DEVICE=eth0:0 ONBOOT=yes //开机自动激活 IPADDR=192.168.4.15 PREFIX=24 |
systemctl restart network //重新载入所有配置文件
ifup eth0:1 //载入失败使用此命令,指定网卡激活
web服务器配置方法:
以下操作均需要在四台web服务器上实现。
cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:0 //拷贝配置文件
vim /etc/sysconfig/network-scripts/ifcfg-lo:0 //修改配置文件,多余删掉,按照如下修改!
DEVICE=lo:0 IPADDR=192.168.4.15 NETMASK=255.255.255.255 NETWORK=192.168.4.15 BROADCAST=192.168.4.15 ONBOOT=yes NAME=lo:0 |
vim /etc/sysctl.conf //修改配置文件
net.ipv4.conf.all.arp_ignore = 1 //不回应询问lo的信息 net.ipv4.conf.lo.arp_ignore = 1 //不向外公告本机的lo信息 net.ipv4.conf.lo.arp_announce = 2 //不向外公告本机的lo信息 net.ipv4.conf.all.arp_announce = 2 //不回应询问lo的信息 |
#以上配置文件参数解释:
# arp_ignore = 0 回应所有的本地地址ARP广播,本地地址可用配置在任意网络接口。(默认)
# arp_ignore = 1 只回应配置在入站网卡借口上的任意IP地址的ARP广播
# arp_announce = 0 使用配置在任意网卡接口上的本地IP地址
# arp_announce = 2 对查询目标使用最适当的本地地址。在此模式下将忽略这个IP数据包的源地址,并尝试选择能与该地址通信的本地地址。首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址。如果没有合适的地址被发现,将选择当前的发送网络接口或者其他的有空你接收到该ARP回应的网络接口来进行发送。
配置原理:
利用RIP来进行来进行内部通讯,真实IP用来在集群内部做调度的机器定位。web服务器接收到数据请求后,利用VIP伪装自身IP信息为调度服务器的IP地址,利用伪装IP直接回复客户端所需要的信息。若无VIP证明自己的身份,那么客户端将直接拒绝web服务器发来的信息。
在这个过程中,客户发送信息到LVS,LVS转发数据到web集群服务器,web服务器直接伪装成LVS的IP,不经过调度服务器发送到客户。
完成上述过程后,web服务器配置完成,重启服务。
systemctl restart network //重新载入所有配置文件
(我这里是做对了,但仍然载入配置文件报错,排查出来的原因是其他网卡配置有问题,那么我们就只能使用其他命令激活)
ifup lo0:1 //载入失败使用此命令,指定网卡激活
网卡配置完成:
ipvsadm -A -t 192.168.4.15:80 -s wrr //添加虚拟主机
ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.100 -g //添加真实主机
ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.150 -g
ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.200 -g
ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.250 -g
ipvsadm-save -n > /etc/sysconfig/ipvsadm //保存配置
最后验证:
[root@7 ~]# curl 192.168.4.15 <h>web444 192.168.2.250 [root@7 ~]# curl 192.168.4.15 <h>web333 192.168.2.200 [root@7 ~]# curl 192.168.4.15 <h>web222 192.168.2.150 [root@7 ~]# curl 192.168.4.15 <h>web111 192.168.2.100 |
验证成功,DR服务器搭建完成!
延伸问题:LVS不支持健康检查,若有一台集群主机瘫痪,那么连接会失败,而LVS服务器会继续给瘫痪的web主机发送信息,导致部分用户访问会出现问题,影响用户体验。如何解决?
参考脚本:
#!/bin/bash VIP=192.168.4.15:80 RIP1=192.168.4.100 RIP2=192.168.4.200 while : do for IP in $RIP1 $RIP2 do curl -s http://$IP &>/dev/vnull if [ $? -eq 0 ];then ipvsadm -Ln |grep -q $IP || ipvsadm -a -t $VIP -r $IP else ipvsadm -Ln |grep -q $IP && ipvsadm -d -t $VIP -r $IP fi done sleep 1 done |
发表评论