LVS-DR集群(一台LVS,一台CIP,两台web,一台NFS)的构建

目录

一.LVS-DR工作模式原理和特点

1.工作模式

2.模式特点

二.构建环境

1.五台关闭防火墙,关闭selinux,拥有固定IP,部署有http服务的虚拟机,LVS设备下载ipvsadm工具,NFS 设备需要下载rpcbind和nfs-utils

2.实现功能

3.ipvsadm命令部分参数介绍

三.配置和测试

1.LVS设备

(1)配置VIP,并清除原有的虚拟服务规则

(2)为两台web服务器配置算法和服务规则,并启用保存ipvsadm配置

(3)调整proc响应参数,关闭ICMP重定向并重新读取

2.NFS服务器

(1)配置共享目录并写入html内容

(2)调整NFS共享配置,允许两台web服务器所在网段进行共享

3.web服务器1

(1)绑定VIP并开通到达VIP的路由

(2)屏蔽ARP响应

(3)也可以临时设置

(4)进行NFS共享文件夹挂载,挂载到httpd的页面默认目录

4.web服务器2

(1)绑定VIP并开通到达VIP的路由

(2)屏蔽ARP响应

(3)同上,也可以临时设置

(4)进行NFS共享文件夹挂载,挂载到httpd的页面默认目录

5.CIP上测试


一.LVS-DR工作模式原理和特点

1.工作模式

用户通过路由器等网络设备访问VIP向负载均衡调度器发出数据请求;VIP将其发送到内核空间中的PREROUTING链,此链判断目标IP是本机以后将包发给INPUT链;此链中的IPVS会将用户请求与自己定义好的集群服务进行对比,匹配成功将会改变数据包的目标mac地址为RS的mac地址,后发给POSTROUTING链;此链确认目标mac地址与RSmac地址匹配后将包发给RS组;RS组处理完直接将结果返还给用户。

badc3670ddef4578bbeacf724aeaa528.png

2.模式特点

(1)所有集群节点RS必须和director server位于同一局域网。

(2)所有客户端入站流量由director server首先接收,再判断是否转发给RS。

(3)集群节点RS最好带有外部IP,为便于将数据包直接返还用户,不使用固定机器作为默认网关。

(4)所有集群节点RS必须以环回(lo)网卡设备上绑定VIP,便于验证。

(5)集群节点RS需要进行ARP抑制来把相应VIP的请求交给LVS director server。

(6)LVS-DR不需要开启调度转发器功能。

(7)LVS-DR可以承受比LVS-NAT更多的并发数据请求和服务器数量。

二.构建环境

1.五台关闭防火墙,关闭selinux,拥有固定IP,部署有http服务的虚拟机,LVS设备下载ipvsadm工具,NFS 设备需要下载rpcbind和nfs-utils

[root@localhost ~]# yum install -y ipvsadm.x86_64

[root@localhost ~]# yum install -y rpcbind nfs-utils

2.实现功能

CIP用户通过网络向LVS集群发出数据请求,LVS经过算法将请求分配给web1或web2,这两台web服务器将从nfs共享到的内容返回给用户

0c34728aeab746c88bb1f965c391fb3a.png

3.ipvsadm命令部分参数介绍

-A添加一条新的虚拟服务
-a在一个虚拟服务中添加一个新的真实服务器
-E编辑虚拟服务
-e编辑某个真实服务器
-D删除虚拟服务
-d删除某个真实服务器
-C清除所有的虚拟服务规则
-c显示IPVS中目前存在的连接,分析调度情况
-R恢复虚拟服务规则
-L显示内核中的虚拟服务规则
-n以数字形式显示IP端口
-Z将转达消息的统计清零
-p配置持久化时间
-t,-u配置tcp或udp协议的虚拟服务
-g,-m,i设置LVS模块为DR,NAT,TUN
-w配置真实服务器的权重
-s配置负载均衡算法,建议使用rr,wrr,lc,wlc等几个常用的算法
--stats

显示历史转发消息累计统计

Conns表示已经转发过的连接数
InPkts表示入包个数
OutPkts表示出包个数
nBytes表示入流量(字节)
OutBytes表示出流量(字节)
--rate

显示转发速率信息,瞬时值

CPS表示每秒连接数
InPPS表示每秒的入包个数
OutPPS表示每秒的出包个数
InBPS表示每秒入流量(字节)
OutBPS表示每秒入流量(字节)

三.配置和测试

1.LVS设备

(1)配置VIP,并清除原有的虚拟服务规则

[root@localhost ~]# ifconfig ens33:188 192.168.2.188 netmask 255.255.255.0 up

[root@localhost ~]# ipvsadm -C

(2)为两台web服务器配置算法和服务规则,并启用保存ipvsadm配置

[root@localhost ~]# ipvsadm -A -t 192.168.2.188:80 -s rr  #指定使用tcp协议和rr调度算法

[root@localhost ~]# ipvsadm -a -t 192.168.2.188:80 -r 192.168.2.191 -g  #添加真实服务器,指定tcp协议和DR模式

[root@localhost ~]# ipvsadm -a -t 192.168.2.188:80 -r 192.168.2.192 -g

[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.2.188:80 rr
  -> 192.168.2.191:80             Route   1      0          0         
  -> 192.168.2.192:80             Route   1      0          0

[root@localhost ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  localhost.localdomain:http rr
  -> 192.168.2.191:http           Route   1      0          0         
  -> 192.168.2.192:http           Route   1      0          0     
[root@localhost ~]# ipvsadm --save > /etc/sysconfig/ipvsadm      

(3)调整proc响应参数,关闭ICMP重定向并重新读取

[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost ~]# sysctl -p

2.NFS服务器

(1)配置共享目录并写入html内容

[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# mkdir /share/{191,192} -pv
mkdir: created directory ‘/share’
mkdir: created directory ‘/share/191’
mkdir: created directory ‘/share/192’
[root@localhost ~]# cat /share/191/index.html 
share191
[root@localhost ~]# cat /share/192/index.html 
share192
[root@localhost ~]# chmod -R 777 /share/

(2)调整NFS共享配置,允许两台web服务器所在网段进行共享

[root@localhost ~]# vim /etc/exports
/share/191 192.168.2.0/24(rw,sync)
/share/192 192.168.2.0/24(rw,sync)
[root@localhost ~]# exportfs -rv
exporting 192.168.2.0/24:/share/192
exporting 192.168.2.0/24:/share/191

3.web服务器1

(1)绑定VIP并开通到达VIP的路由

[root@localhost ~]# ifconfig lo:188 192.168.2.188 netmask 255.255.255.255 up    #real server绑定vip时需要使用广播掩码
[root@localhost ~]# route add -host 192.168.2.188 dev lo:188
#route del -host 192.168.2.188   #删除路由时可以使用这个命令

(2)屏蔽ARP响应

[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@localhost ~]# sysctl -p
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1   #all是可以改为你网卡名称的,如eth0或ens33等
net.ipv4.conf.all.arp_announce = 2

(3)也可以临时设置

[root@localhost ~]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@localhost ~]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@localhost ~]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@localhost ~]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
[root@localhost ~]# sysctl -p
或者
[root@servera ~]# bash arp.sh 
[root@servera ~]# cat arp.sh 
#!/bin/bash 
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/ens33/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/ens33/arp_announce

arp_ignore——定义对目标地址为本地IP的ARP询问不同的应答模式
0 (默认值):回应任何网络接口上对任何本地IP地址的arp查询请求。
1 只回答目标IP地址是来访网络接口本地地址的ARP查询请求。
2 只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内。
3 不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应。
4-7 保留未使用。
8 不回应所有(本地地址)的arp查询

arp_announce——对网络接口上,本地IP地址发出的ARP回应,做出相应级别的限制
0 (默认)在任意网络接口(eth0,eth1,lo)上的任何本地地址
1 尽量避免不在该网络接口子网段的本地地址做出arp回应,当发起ARP请求的源IP地址是被设置应该经路由到达此网络接口的时候很有用,此时会检查来访IP是否为所有接口上的子网段内ip之一。如果该来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理。
2 对查询目标是要最适当的本地地址,在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通 信的本地地址。首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址。如果没有合适的地址被发现,将选择当前的网络发送接口或其他的有可能接受到该ARP回应的网络接口来进行发送。限制了使用本地的vip地址作为优先的网络接口。

(4)进行NFS共享文件夹挂载,挂载到httpd的页面默认目录

[root@localhost ~]# mount 192.168.2.193:/share/191 /var/www/html/
[root@localhost ~]# df -h
Filesystem                Size  Used Avail Use% Mounted on
devtmpfs                  5.1G     0  5.1G   0% /dev
tmpfs                     5.1G     0  5.1G   0% /dev/shm
tmpfs                     5.1G   12M  5.1G   1% /run
tmpfs                     5.1G     0  5.1G   0% /sys/fs/cgroup
/dev/mapper/centos-root    44G  4.9G   40G  11% /
/dev/sda1                1014M  151M  864M  15% /boot
/dev/sr0                  4.4G  4.4G     0 100% /cdrom
tmpfs                     1.1G     0  1.1G   0% /run/user/0
192.168.2.193:/share/191   44G  3.2G   41G   8% /var/www/html


#开机自动挂载
[root@localhost ~]# vim /etc/fstab
192.168.2.193:/share/191 /var/www/html nfs defaults,_netdev 0 0

4.web服务器2

(1)绑定VIP并开通到达VIP的路由

[root@localhost ~]# ifconfig lo:188 192.168.2.188 netmask 255.255.255.255 up
[root@localhost ~]# route add -host 192.168.2.188 dev lo:188

(2)屏蔽ARP响应

[root@localhost ~]# vim /etc/sysctl.conf 
[root@localhost ~]# sysctl -p
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

(3)同上,也可以临时设置

(4)进行NFS共享文件夹挂载,挂载到httpd的页面默认目录

[root@localhost ~]# mount 192.168.2.193:/share/192 /var/www/html/
[root@localhost ~]# df -h
Filesystem                Size  Used Avail Use% Mounted on
devtmpfs                  5.1G     0  5.1G   0% /dev
tmpfs                     5.1G     0  5.1G   0% /dev/shm
tmpfs                     5.1G   12M  5.1G   1% /run
tmpfs                     5.1G     0  5.1G   0% /sys/fs/cgroup
/dev/mapper/centos-root    44G  3.2G   41G   8% /
/dev/sda1                1014M  151M  864M  15% /boot
/dev/sr0                  4.4G  4.4G     0 100% /cdrom
tmpfs                     1.1G     0  1.1G   0% /run/user/0
192.168.2.193:/share/192   44G  3.2G   41G   8% /var/www/html


#开机自动挂载
[root@localhost ~]# vim /etc/fstab
192.168.2.193:/share/192 /var/www/html nfs defaults,_netdev 0 0

5.CIP上测试

[root@localhost ~]# for ((i=1;i<=10;i++));  
> do
> curl 192.168.2.188
> done
share191
share192
share191
share192
share191
share192
share191
share192
share191
share192
#我调度算法设置的是rr,均值轮询也就是服务器一次获得分配任务,交替返回结果,若是需要一些差别,可以设置为wrr权重轮询,那么在添加规则时就要使用-w去指定权重

 其他调度方式可以自己尝试测试效果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

树下一少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值