[集群架构]部署使用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              //保存配置


配置完成,访问测试。

[[email protected] ~]# curl 192.168.4.5

web444 192.168.2.250

[[email protected] ~]# curl 192.168.4.5

web333 192.168.2.200

[[email protected] ~]# curl 192.168.4.5

web222 192.168.2.150

[[email protected] ~]# 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              //保存配置


最后验证:


[[email protected] ~]# curl 192.168.4.15

<h>web444 192.168.2.250

[[email protected] ~]# curl 192.168.4.15

<h>web333 192.168.2.200

[[email protected] ~]# curl 192.168.4.15

<h>web222 192.168.2.150

[[email protected] ~]# 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

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。