CentOS 7 搭建 LVS集群 DR模式
2023-09-14 09:06:42 时间
工作原理
- 客户端发送请求到 Director Server (负载均衡器 DS),请求的数据报文(源IP是CIP,目标IP是VIP)到达内核空间,Director Server 和 Real Server 在同一个网络中,数据通过二层数据链路层来传输
- 内核空间判断数据包的目标IP是本机IP,此时LVS比对数据包请求的服务是否是集群服务,是集群服务就重新封装数据包。修改源 MAC 地址为 Director Server 的 MAC 地址,修改目标 MAC 地址为 Real Server 的 MAC 地址,源IP地址与目标IP地址没有改变,然后将数据包发送给 Real Server 1
- 到达 Real Server 的请求报文的 MAC 地址是自身的 MAC 地址,就接收此报文。数据包重新封装报文(源IP地址为VIP,目标IP 为CIP),将响应报文通过IO接口传送给物理网卡然后向外发出,Real server 1 直接将响应报文传送到客户端
环境
IP | 服务 |
---|---|
192.168.2.200 | 虚拟IP(VIP) |
192.168.2.100 | lvs调度器(DS) |
192.168.2.111 | web服务器1(RS) |
192.168.2.112 | web服务器2(RS) |
一、lvs 调度器安装
1、安装ipvsadm工具
# 安装
yum install ipvsadm
# 启动
systemctl start ipvsadm
2、创建IP别名,一个网卡配置多个IP
# 临时创建
ifconfig ens33:0 192.168.2.200 netmask 255.255.255.0
# 永久创建
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
# 修改NAME,DEVICE名称,删除UUID,DNS,网关
vim ifcfg-ens33:0
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.2.200
NETMASK=255.255.255.0
3、重启网络服务
systemctl restart network
4、调整 proc 响应参数
# 对于 DR 群集模式来说,由于 LVS 负载调度器和各节点需要共用 VIP 地址
# 需要关闭 ICMP 的重定向,不充当路由器
cat <<EOF > /etc/sysctl.d/lvs-dr.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
EOF
# 动态加载ip_vs模块
modprobe ip_vs
# 刷新配置
sysctl -p /etc/sysctl.d/lvs-dr.conf
5、配置策略
# 清空策略
ipvsadm -C
-A: 添加虚拟服务器
-a:添加节点
-t:指定vip及tcp端口
-s:指定算法
rr:轮询
-r:指定节点ip及端口
-g:表示使用DR模式
-w:设置权重
ipvsadm -A -t 192.168.2.200:80 -s rr
ipvsadm -a -t 192.168.2.200:80 -r 192.168.2.111:80 -g -w 1
ipvsadm -a -t 192.168.2.200:80 -r 192.168.2.112:80 -g -w 1
# 保存
ipvsadm-save > /etc/sysconfig/ipvsadm
# 查看策略
ipvsadm -ln
二、Web 服务器安装(2台都要安装)
1、安装并启动 httpd
yum install httpd -y
systemctl start httpd
2、修改主页内容
# 修改 web 服务器 1
vim /var/www/html/index.html
this is 192.168.2.111
# 修改 web 服务器 2
vim /var/www/html/index.html
this is 192.168.2.112
3、添加回环网卡
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
# 修改回环网卡名,IP地址,子网掩码
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.2.200
NETMASK=255.255.255.255
NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
#BROADCAST=127.255.255.255
ONBOOT=yes
#NAME=loopback
# 重启网络服务
systemctl restart network
4、设置路由
route add -host 192.168.2.200 dev lo:0
route -n
# 开机启动
vim /etc/rc.d/rc.local
/usr/sbin/route add -host 192.168.2.200 dev lo:0
chmod +x /etc/rc.d/rc.local
5、调整 proc 响应参数
# 系统只响应目的IP为本地IP的ARP请求
# 系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址
cat <<EOF > /etc/sysctl.d/lvs-dr.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
EOF
# 刷新配置
sysctl -p /etc/sysctl.d/lvs-dr.conf
6、访问
相关文章
- Centos 7 图形化界面安装
- 2-Kubernetes入门之CentOS安装部署集群
- centos部署ftp服务_文件服务器搭建
- Golang语言情怀--第94期 区块链技术-centos安装部署IPFS
- 微系列:6、在Centos系统中,搭建RabbitMQ集群
- CentOS添加路由表
- CentOS 8退役倒计时,开发者们又吵起来了
- 在 CentOS 8 上安装Jenkins的方法
- CentOS 8设置自动更新的完整步骤
- centos 7笔记详解程序员
- centos安装redis详解大数据
- Centos步骤简明教程:安装Oracle 11g(centos安装oracle11g)
- 查看CentOS系统下mysql版本:从运维的角度(centos查看mysql版本)
- Centos与Linux:一段友谊(centos和linux的关系)
- CentOS下安装MySQL步骤指南(centos下安装mysql)
- 【CentOS】重启MySQL:一步一步教程(centos重启mysql)
- 如何在CentOS 8上安装ExpressionEngine CMS
- 之一centos探索CentOS:Linux的另一分支(linux的分支)
- CentOS进驻MySQL轻松让您拥有数据库管理权(centos进mysql)
- CentOS下搭建MySQL环境小贴士(centos下mysql)
- centOS安装MySQL更为稳定便捷的选择(centos-mysql)
- CentOS服务器下安装Webmin管理系统的步骤