一.构建环境
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上测试
一.构建环境
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共享到的内容返回给用户

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
[root@localhost ~]# route add -host 192.168.2.188 dev lo: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
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
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去指定权重
                








![[国产MCU]-W801开发实例-开发环境搭建](https://img-blog.csdnimg.cn/b330f522093a4a88804f6d2bfa66b684.png#pic_center)








