LVS-DR模式集群构建过程演示

一、工作原理

LVS的工作原理

1.当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间

2.PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链

3.IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址及端口,并将新的数据包发往POSTROUTING链

4.POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送给后端的服务器

LVS-DR模式的工作原理

首先,来自客户端计算机CIP的请求被发送到Director的VIP。然后Director使用相同的VIP目的IP地址将请求发送到集群节点或真实服务器。然后,集群某个节点将回复该数据包,并将该数据包直接发送到客户端计算机(不经过director),并且以此回复数据包使用的目的VIP 地址作为源IP地址。因此,实际上是客户计算机被"欺骗"了,客户计算机始终认为它正与同一台计算机对话,而实际上它正在发送请求数据包给一台计算机(LB),并从另一台计算机(RS)接收回复的数据包。

二、构建过程

1.环境准备

准备四台主机

分别作为客户机、LVS调度器、RS服务器web1、RS服务器web2

|-----------|--------|-----------------|
| | 主机名 | IP |
| 客户机 | client | 192.168.198.140 |
| LVS调度器 | lvs | 192.168.198.141 |
| RS服务器web1 | web1 | 192.168.198.100 |
| RS服务器web2 | web2 | 192.168.198.200 |

关闭防火墙和selinux服务

分别将四个主机的防火墙和selinux服务都关闭

下载httpd软件包

在web1和web2服务器上安装httpd软件包,便于后续测试

然后分别在这两个主机上都编写测试页面,并启动服务

在客户机上检测

2.配置虚拟IP(VIP)

配置lvs的虚拟IP

选择一个同网段的,且未被占用的IP做为VIP

我的网卡名和IP网段如上,所以自己根据自己的实际情况来配置

ens33后面跟的是子接口编号,自己取

这里我选择192.168.198.111做为我的VIP

要保证客户端能ping通你的VIP

配置RS服务器的VIP

将虚拟IP绑定到web1和web2的loopback接口上

注意:这里RS服务器的VIP掩码必须是32位!!

并添加本机访问虚拟IP的路由

web2别忘了,也是一样

3.抑制ARP响应

我们之所以做ARP抑制,是因为如果不做就会发生如下图的情况

真实服务器RS也有VIP这个IP,所以也会去响应,那么就会和负载调度器一起去响应客户端的请求,所以我们需要去抑制ARP响应

复制代码
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/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

在RS服务器上抑制ARP响应

web1

web2

4.下载ipvsadm工具并使用

在lvs负载调度器上下载ipvsadm工具

yum install ipvsadm

|----------------|-------------------------|
| ipvsadm常用参数 | 相关参数说明 |
| -A | 添加虚拟服务器 |
| -t | 设置集群地址(VIP) |
| -s | 设置负载调度算法 |
| -a | 添加真实服务器 |
| -d | 删除真实服务器 |
| -r | 指定真实服务器 |
| -m | -g | -i | 分别使用NAT | DR | TUN 模式 |
| -w | 为节点服务器设置权重,默认为1 |

在lvs负载调度器上,配置添加LVS服务并增加两台RS

采用最简单的轮询算法演示(rr)

查看配置

5.测试

在客户机上测试

最终效果就如图

相关推荐
bloglin999994 小时前
scp、rsync远程文件同步
linux·运维·服务器
克莱因3584 小时前
思科 Cisco 标准ACL
网络·路由
迦南的迦 亚索的索4 小时前
LINUX环境
linux·运维·服务器
yuanjj884 小时前
linux下调试域格CLM920 NC5等9x07平台模块 QMI拨号
linux·运维·服务器
IMPYLH4 小时前
Linux 的 printenv 命令
linux·运维·服务器·bash
SilentSamsara4 小时前
SSH 远程管理:密钥登录 + 隧道转发,一次性配置好
linux·运维·服务器·ubuntu·centos·ssh
资深数据库专家5 小时前
总账EBS 应用服务器1 的监控分析
java·网络·数据库
2501_945837435 小时前
OpenClaw:开启 “行动 AI“ 新纪元,从聊天机器人到自主智能体的范式革命
服务器
阿正的梦工坊5 小时前
拦截网络请求:一种更优雅的数据获取方式
网络·okhttp
阿巴~阿巴~5 小时前
Git版本控制完全指南:从入门到实战(简单版)
linux·服务器·git