问题:
路由器根据ARP表项,会将新来的请求报文转发给RealServer,导致Director的VIP失效
解决:
对节点服务器进行处理,设置内核参数arp_announce=2:系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址
DR模式的特点 1)Director Server和Real Server必须在同一个物理网络中;
2)Real Server可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对RIP进行直接访问;
3)Director Server作为群集的访问入口,但不作为网关使用;
4)所有的请求报文经由Real Server,但回复响应报文不能经过Director Server;
5)Real Server的网关不允许指向Director Server IP,即Real Server发送的数据包不允许经过Director Server;
6)Real Server上的lo接口配置VIP的IP地址。
一 实验环境:
- 为了提高网站负载能力,需要构建web群集平台;
- 网页文档存放在内网,各web节点公用;
二 . 实验架构图
三. 实验操作内容
DR服务器:192.168.47.100
Web服务器1:192.168.42.102 Web服务器2:192.168.47.103
VIP服务器:192.168.47.200
nfs服务器:192.168.47.104
1.nfs共享服务器配置 192.168.47.
先共享服务初始化操作
bash
vim /etc/selinux/confing
查看nfs文件共享需要查看是否安装了 rpcbind,nfs-utile
css
rpm -q rpcbind nfs-utils
如果没安装使用yum install安装
开始创建共享目录
csharp
cd opt
[root@localhost opt]# mkdir yhy1 yhy2
[root@localhost opt]# echo "yhy1" > yhy1/test.html
[root@localhost opt]# echo "yhy2" > yhy2/test.html
#创建两个目录并输入内容进去
[root@localhost opt]# ls yhy1
test.html
[root@localhost opt]# ls yhy2
test.html
添加共享策略
bash
vim /etc/exports
/opt/yhy1 192.168.47.0/24(rw,sync,no_root_squash)
/opt/yhy2 192.168.47.0/24(rw,sync,no_root_squash)
systemctl enable --now rpcbind nfs
#从左往右一次启动
showmount -e
#查看是否共享完成
去节点服务器刷新共享nfs 7-2 7-3
2. 配置节点服务器7-2,7-3
7-2 7-3安装nginx前面有安装过程
ini
cd /etc/yum.repos.d/
vim nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
yum -y install nginx
去7-2设置vip网卡
ini
cd /etc/sysconfig/network-scripts/
vim ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.47.200
NETMASK=255.255.255.255
ifup lo:0
#重启网卡
ifconfig查看
7-3做以上同样的操作
7-2添加路由信息
csharp
route add -host 192.168.47.200 dev lo:0
#添加路由信息
route -n
#查看
7-3同样操作添加路由信息
7-2开机自动添加添加路由信息
bash
cd /etc/rc.d
vim rc.local
[root@localhost rc.d]# which route
/usr/sbin/route
/usr/sbin/route add -host 192.168.47.200 dev lo:0
#添加信息
7-3作上述同样操作
7-2 7-3 需要给rc.d文件权限
7-2,7-3添加内核参数
ini
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
bash
sysctl -p
#加载
7-1,7-2做永久挂载操作
bash
vim /etc/fstab
如果不确定挂载位置可以查看:cat /etc/nginx/conf.d/default.conf
192.168.47.104:/opt/yhy2 /usr/share/nginx/html nfs defaults,_netdev 0 0
bash
mount -a
#刷新挂载
去挂载目录下查看
web节点服务器准备好了 上面
3 . 配置负载调度器
bash
#关闭防火墙和selinux
systemctl stop firewalld
setenforce 0
#安装ipvsadm
yum install -y ipvsadm
bash
#先保存一下路径
ipvsadm-save > /etc/sysconfig/ipvsadm
#开启ipvsadm
systemctl start ipvsadm.service
systemctl enable ipvsadm.service
加载模块
modprobe ip_vs
cat /proc/net/ip_vs
ifconfig
配置虚拟IP地址
ini
cd /etc/sysconfig/network-scripts
cp ifcfg-ens33 ifcfg-ens33:0
#若是隧道模式,复制为ifcfg-tun10
vim ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.122.188
NETMASK=255.255.255.255
ifup ens33:0
#开启网卡
[root@director network-scripts]# ifconfig ens33:0
ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.47.188 netmask 255.255.255.255 broadcast 192.168.47.188
ether 00:0c:29:59:be:be txqueuelen 1000 (Ethernet)
🍔
调整proc响应参数
ini
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
sysctl -p
配置负载均衡分配策略
bash
先开启两个nginx ,web服务
systemctl enable --now nginx
ipvsadm -ln
ipvsadm -C
ipvsadm -A -t 192.168.47.200:80 -s rr
ipvsadm -a -t 192.168.47.200:80 -r 192.168.47.102:80 -g
ipvsadm -a -t 192.168.47.200:80 -r 192.168.47.103:80 -g
ipvsadm
ipvsadm -ln
编写nginx配置文件
bash
cd /etc/nginx/
vim nginx.conf
systemctl restart nginx
4.去网页测试
192.168.47.200/test.
🍟
四.总结 LVS-DR 模式配置步骤:
-
1)配置NFS共享存储
-
2)节点服务器安装Web服务,在 lo:0按口配置VIP,修改内核参数 arp ignore=1 arp announce=2,添加路由 route add -host dev lo:0
-
3)调度服务器在ensXX:0接口配置vI,修改内核参数关闭IP路由转发功能和重定向功能―ip forward=0 send redirects=0
-
4)调度服务器安装 ipvsadm 工具,配置虚拟服务器和真实节点服务器相关配置(-g选择DR模式)
-
5)客户端测试
-
注意项:如果客户端与调度服务器、节点服务器不在同一个网段,调度服务器、节点服务器的默认网关要指向网关路由器的IP地址