基于 CentOS 7 构建 LVS-DR 群集

文章目录

一、LVS-DR集群介绍

1.LVS的基本工作原理

  1. 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间
  2. PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链
  3. IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群
    服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP
    地址及端口,并将新的数据包发往POSTROUTING链
  4. POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将
    数据包最终发送给后端的服务器

2. LVS-DR模式工作原理

首先,来自客户端计算机CIP的请求被发送到Director的VIP。然后Director使用相同的VIP目的IP地址将

请求发送到集群节点或真实服务器。然后,集群某个节点将回复该数据包,并将该数据包直接发送到客

户端计算机(不经过director),并且以此回复数据包使用的目的VIP 地址作为源IP地址。因此,实际上

是客户计算机被"欺骗"了,客户计算机始终认为它正与同一台计算机对话,而实际上它正在发送请求数

据包给一台计算机(LB),并从另一台计算机(RS)接收回复的数据包。

二、 LVS-DR模式应用特点

1.所有集群节点RS必须和Director在相同的物理网段(即同一个局域网中);

2.所有客户端入站(而不是出站)请求由Director首先接收,并转发给集群节点RS;

3.集群节点RS通常来说最好带外部IP,而不使用Director及某固定机器作为默认网关,以便将数据包直

接回复给客户端计算机,且不会产生回包的瓶颈;

4.所有集群节点RS上必须在lo网卡上绑定VIP地址,以便验证通过目的IP非RS的数据包;

5.由于所有集群节点RS上必须在lo网卡上绑定VIP地址,因此,带来arp问题,即集群节点RS默认会相

应发往Director VIP的数据包。因此要对所有集群节点RS做ARP抑制处理,把响应VIP的请求交给LVS

Director;

6.很多操作系统都可以用在集群内部的RS真实服务器上只要该操作系统能够实现ARP隐藏,如:

Windows,linux,unix;

7.LVS/DR模式不需要开启调度器转发功能,这点和LVS/NAT模式是不同的。

8.LVS/DR Director(服务器数量100台)可以比LVS-NAT Director(服务器数量10-20台)承受更多的

并发请求和转发更多的服务器数量。

三、LVS -- DR 模式集群构建

1.前期环境准备

这里我准备了四台主机,一台充当lvs,两台充当web集群,还有一台客户端

在lvs上安装配置工具

bash 复制代码
yum install ipvsadm

然后这里选择使用apache工具,在web集群上安装

使用apache和nginx都可以

2.配置LVS

配置vip,即虚拟ip

配置在同一网段的即可

手工执行配置添加LVS服务并增加两台RS

bash 复制代码
 ipvsadm -C #清除lvs配置
 ipvsadm -A -t 192.168.45.200:80 -s rr
 ipvsadm -a -t 192.168.45.200:80 -r 192.168.45.141:80 -g
 ipvsadm -a -t 192.168.45.200:80 -r 192.168.45.142:80 -g

这里采用比较简单的做法,没有添加条件,方便快速测试

去查看lvs配置,可以看见两台RS已经添加上

3.配置RS

在每台RS上配置

bash 复制代码
ifconfig lo:200 192.168.45.200 netmask 255.255.255.255 
echo "web test page , ip is 'hostname -I'." > /var/www/html/index.html #用于客户端测试

添加本机访问VIP的路由

bash 复制代码
route add -host 192.168.45.200 dev lo

然后进行arp抑制

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

最后在客户端上面测试

bash 复制代码
for ((i=1;i<=6;i++))
> do
> curl 192.168.45.200
> done

如果交替出现说明配置成功

相关推荐
pk_xz1234562 小时前
Shell 脚本中变量和字符串的入门介绍
linux·运维·服务器
小珑也要变强2 小时前
Linux之sed命令详解
linux·运维·服务器
Lary_Rock4 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器
云飞云共享云桌面6 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
Peter_chq6 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
一坨阿亮7 小时前
Linux 使用中的问题
linux·运维
dsywws8 小时前
Linux学习笔记之vim入门
linux·笔记·学习
幺零九零零9 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
小林熬夜学编程10 小时前
【Linux系统编程】第四十一弹---线程深度解析:从地址空间到多线程实践
linux·c语言·开发语言·c++·算法
程思扬11 小时前
为什么Uptime+Kuma本地部署与远程使用是网站监控新选择?
linux·服务器·网络·经验分享·后端·网络协议·1024程序员节