LVS群集
一、构建LVS-NAT群集
1.准备工作
主机 | 操作系统 | 虚拟网卡 | IP地址 | 网关 |
---|---|---|---|---|
LVS负载均衡调度器 | Centos7 | VM1 ,2 |
192.168.1.10 ,192.168.100.10 |
充当网关 |
Web-AAA | Centos7 | VM1 | 192.168.1.3 | 192.168.1.10 |
Web-BBB | Centos7 | VM1 | 192.168.1.4 | 192.168.1.10 |
NFS共享存储 | Centos7 | VM1 | 192.168.1.110 | 192.168.1.10 |
外网客户机 | Win7 | VM2 | 192.168.100.20 | 192.168.100.10 |
2.配置LVS服务器
1)加载模块
[root@localhost ~]# modprobe ip_vs
2)确认内核对LVS的支持
[root@localhost ~]# modprobe ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
3)启用路由转发
[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@localhost ~]# sysctl -p
4)使用ipvsadm工具(LVS群集管理工具)
挂载光盘,并配置yum源
[root@localhost ~]# yum -y install ipvsadm
创建虚拟服务器,VIP必须是本机真实ip地址
[root@localhost ~]# ipvsadm -C (清除原有的策略)
[root@localhost ~]# ipvsadm -A -t 192.168.100.10:80 -s rr
- -A 添加虚拟服务器
- -t VIP地址及端口号
- -s 负载调度算法(轮询rr,加权轮询wrr,最少连接lc,加权最少连接wlc)
添加服务器节点Web-AAA,Web-BBB
[root@localhost ~]# ipvsadm -a -t 192.168.100.10:80 -r 192.168.1.3:80 -m -w 1
[root@localhost ~]# ipvsadm -a -t 192.168.100.10:80 -r 192.168.1.4:80 -m -w 1
- -a 添加真实服务器
- -t vip地址及tcp端口号
- -r rip地址及端口号
- -m 使用nat群集默认(-g DR模式,-i TUN模式)
- -w 设置权重(0是暂停节点)
保存策略,并设置开机自启
[root@localhost ~]# ipvsadm-save
[root@localhost ~]# systemctl enable ipvsadm
3.NFS共享存储服务器配置
挂载光盘,并配置yum源
1)安装nfs-utils、rpcbind软件包
[root@localhost ~]# yum -y install nfs-utils rpcbind
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbind
2)设置共享目录
[root@localhost ~]# mkdir -p /opt/web1 /opt/web2
3)设置nfs共享文件
将文件夹web1,web2分别共享给web1,web2主机 使用,允许读写操作
[root@localhost ~]# vi /etc/exports
添加:
/opt/web1 192.168.1.3(rw,sync,no_root_squash)
/opt/web2 192.168.1.4(rw,sync,no_root_squash)
注释:
rw 读写
sync 同步写入
no_root_squash 客户机以root身份访问时赋予本地root权限
4)启动NFS服务程序。注意:先启动rpcbind,再启动nfs
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# netstat -anpu | grep rpcbind
5)查看本机发布的NFS共享目录
[root@localhost ~]# showmount -e
4.Web-AAA主机
挂载光盘,并配置yum源
1)安装httpd服务
[root@Web-AAA ~]# yum -y install httpd
2)配置nfs共享存储客户端
[root@Web-AAA ~]# yum -y install rpcbind nfs-utils
[root@Web-AAA ~]# systemctl enable rpcbind
[root@Web-AAA ~]# systemctl start rpcbind
[root@Web-AAA ~]# showmount -e 192.168.1.110
[root@Web-AAA ~]# mount 192.168.1.110:/opt/web1 /var/www/html/
[root@Web-AAA ~]# echo "<h1>this is web1</h1>" > /var/www/html/index.html
[root@Web-AAA ~]# echo "192.168.1.110:/opt/web1 /var/www/html nfs defaults,_netdev 0 0" > /etc/fstab
[root@Web-AAA ~]# tail -1 /etc/fstab
[root@Web-AAA ~]# systemctl enable httpd
[root@Web-AAA ~]# systemctl start httpd
5.Web-BBB主机
挂载光盘,并配置yum源
1)安装httpd服务
[root@Web-BBB ~]# yum -y install httpd
2)配置nfs共享存储客户端
[root@Web-BBB ~]# yum -y install rpcbind nfs-utils
[root@Web-BBB ~]# systemctl enable rpcbind
[root@Web-BBB ~]# systemctl start rpcbind
[root@Web-BBB ~]# showmount -e 192.168.1.110
[root@Web-BBB ~]# mount 192.168.1.110:/opt/web2 /var/www/html/
[root@Web-BBB ~]# echo "<h1>this is web2</h1>" > /var/www/html/index.html
[root@Web-BBB ~]# echo "192.168.1.110:/opt/web2 /var/www/html nfs defaults,_netdev 0 0" > /etc/fstab
[root@Web-BBB ~]# tail -1 /etc/fstab
[root@Web-BBB ~]# systemctl enable httpd
[root@Web-BBB ~]# systemctl start httpd
6.外网客户机测试
访问:http://192.168.100.10
多访问几次,不然看不到效果
二、直接路由模式(LVS-DR)
1.准备工作
可以继续使用上面实验环境,不过要做以下修改
将调度器的外网网卡删掉,就是VM2那块网卡
将Win客户机的VM2改为VM1,IP改为:192.168.1.88
2.配置负载调度器
1)配置虚拟IP地址(VIP)
采用虚接口的方式,为ens33绑定VIP地址,以便响应群集访问
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# rm -rf ifcfg-ens37
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
[root@localhost network-scripts]# vi ifcfg-ens33:0
首先删除UUID配置项,然后如下配置项改成如下
NAME="ens33:0"
DEVICE="ens33:0"
IPADDR="192.168.1.188"
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ifconfig ens33:0
2)调整/proc响应参数
对于DR群集模式来说,用于LVS负载调度器和各节点需要公用VIP地址,应该关闭linux内核重定向参数
[root@localhost ~]# vi /etc/sysctl.conf
删除原有的:net.ipv4.ip_forward = 1
添加:
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
3)配置负载分配策略
[root@localhost ~]# ipvsadm -C
[root@localhost ~]# ipvsadm -A -t 192.168.1.188:80 -s rr
[root@localhost ~]# ipvsadm -a -t 192.168.1.188:80 -r 192.168.1.3 -g -w 1
[root@localhost ~]# ipvsadm -a -t 192.168.1.188:80 -r 192.168.1.4 -g -w 1
[root@localhost ~]# ipvsadm-save
3.配置Web节点服务器
Web-AAA和WebBBB服务器操作都如下:
1)配置虚拟ip地址VIP
使用DR模式,节点服务器,也需要配置VIP地址,使用这个地址做web响应的源地址
[root@Web-AAA ~]# cd /etc/sysconfig/network-scripts/
[root@Web-AAA network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@Web-AAA network-scripts]# vi ifcfg-lo:0
修改:
修改DEVICE=lo:0
NETMASK=255.255.255.255 \\子网掩码必须为255.255.255.255
IPADDR=192.168.1.188 \\改为VIP地址
[root@Web-AAA network-scripts]# systemctl restart network
[root@Web-AAA network-scripts]# ip a
为本机添加一台路由记录,将VIP的数据限制在本地,避免通信混乱
[root@Web-AAA ~]# yum -y install net-tools
[root@Web-AAA ~]# vi /etc/rc.local
添加:
/sbin/route add -host 192.168.1.188 dev lo:0
[root@Web-AAA ~]# route add -host 192.168.1.188 dev lo:0
2)调整内核参数
[root@Web-AAA ~]# vi /etc/sysctl.conf
添加:
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@Web-AAA ~]# sysctl -p
3)安装httpd创建测试网页,然后挂载NFS共享
4)启用httpd服务
由于使用的是图一实验,已经做过,就不再做3,4步
测试LVS群集
在win7客户机上将VM2改为VM1,并设置IP为192.168.1.88
测试时频繁刷新页面
也可以用脚本测试:
5)在LVS调度器上查看LVS策略
- Masq----地址伪装NAT模式
- Route—DR模式
- Weight—权重