【LVS】nat模式+dr模式+防火墙标签解决轮询错误

++集群:++同一个业务系统,部署在多台服务器上,集群中,每一台服务器实现的功能没有差别,数据 和代码都是一样的

++分布式:++ 一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式 中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起 来,才是完整的业务
分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数
来提升效率。
对于大型网站,访问用户很多,实现一个群集,在前面部署一个负载均衡服务器,后面几台服务器
完成同一业务。如果有用户进行相应业务访问时,负载均衡器根据后端哪台服务器的负载情况,决
定由给哪一台去完成响应,并且台服务器垮了,其它的服务器可以顶上来。分布式的每一个节点,
都完成不同的业务,如果一个节点垮了,那这个业务可能就会失败 。

一.LVS--负载调度器

  • VS: Virtual Server ,负责调度
  • RS:RealServer,负责真正提供服务

lvs概念
VS : Virtual Server
RS : Real Server
CIP : Client IP
VIP: Virtual serve IP VS 外网的 IP
DIP: Director IP VS 内网的 IP
RIP: Real server IP
访问流程:CIP <--> VIP == DIP <--> RIP
lvs****集群的类型
lvs-nat :
修改请求报文的目标 IP, 多目标 IP 的 DNAT
lvs-dr : 操纵封装新的 MAC 地址
lvs-tun :
在原请求 IP 报文之外新加一个 IP 首部
lvs-fullnat : 修改请求报文的源和目标 IP


案例:NAT模式

图形:

四台服务器都是采用的rhel9

webserver1//rs1

仅主机模式

准备环境:

安装软件编写html


webserver2//rs2

仅主机模式

准备环境:

安装软件编写html


lvs配置

2块网卡:/nat/仅主机

准备环境:

内核路由功能配置

复制代码
#vim /etc/sysctl.conf
net.ipv4.ip_forward=1
#sysctl -p   #生效
net.ipv4.ip_forward=1

下载软件

后端调用主机

测试rs:

在lvs虚拟机上ping并且访问他的内容


客户机:172.25.254.200

总的测试:



案例:DR模式

图形:

lvs webserver1 webserver2处于同一个vlan里面都是仅主机模式

client route 处于同一个vlan里面都是nat模式

解决 vip 响应问题
DR 模型中各主机上均需要配置 VIP ,解决地址冲突的方式有三种:
(1) 在前端网关做静态绑定
(2) 在各 RS 使用 arptables
(3) 在各 RS 修改内核参数,来限制 arp 响应和通告的级别
限制响应级别 :arp_ignore
0: 默认值,表示可使用本地任意接口上配置的任意地址进行响应
1: 仅在请求的目标 IP 配置在本地主机的接收到请求报文的接口上时,才给予响应
限制通告级别 :arp_announce
0: 默认值,把本机所有接口的所有信息向每个接口的网络进行通告
1: 尽量避免将接口信息向非直接连接网络进行通告
2: 必须避免将接口信息向非本网络进行通告

rs主机1

仅主机模式

准备环境:

安装软件编写html

静态绑定:

检查:

添加vip


rs主机2

仅主机模式

准备环境:

安装软件编写html

静态绑定:

检查:

添加vip


路由器route

2块网卡:/nat/仅主机

准备环境

内核路由功能配置

复制代码
#vim /etc/sysctl.conf
net.ipv4.ip_forward=1
#sysctl -p   #生效
net.ipv4.ip_forward=1

lvs配置

仅主机模式

准备环境

添加vip

在lvs虚拟机上ping并且访问他的内容

后端调动rs1和rs2


客户端

nat模式

准备环境

测试:



案例:防火墙标签解决轮询错误

以http和https为例,当我们在RS中同时开放80和443端口,那么默认控制是分开轮询的,这样我们就出 现了一个轮询错乱的问题
当我第一次访问80被轮询到RS1后下次访问443仍然可能会被轮询到RS1上

复制代码
在RS1和RS2中安装mod_ssl并重启apache
]# yum install mod_ssl -y
]# systemctl restart httpd
在lvs中设置调度,因为我们要调度80和443两个端口所以我们需要设定两组策略
]# ipvsadm -C
[root@lvs ~]# ipvsadm -A -t 192.168.0.100:80 -s rr
[root@lvs ~]# ipvsadm -A -t 192.168.0.100:443 -s rr
[root@lvs ~]# ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.101:80 -g
[root@lvs ~]# ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.102:80 -g
[root@lvs ~]# ipvsadm -a -t 192.168.0.100:443 -r 192.168.0.102:80 -g
[root@lvs ~]# ipvsadm -a -t 192.168.0.100:443 -r 192.168.0.101:80 -g
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.100:80 rr
-> 192.168.0.101:80 Route 1 0 0
-> 192.168.0.102:80 Route 1 0 0
TCP 192.168.0.100:443 rr
-> 192.168.0.101:443 Route 1 0 0
-> 192.168.0.102:443 Route 1 0 0
测试问题
[root@node10 ~]# curl http://192.168.0.100;curl -k https://192.168.0.100
RS1 server - 192.168.0.101
RS1 server - 192.168.0.101
当访问vip时两次调度都到了

为了解决此问题:
以下实验将会实现以下功能
环境准备(以上即可)
RS1和RS2

  • 安装mod_ssl模块让rs支持https

重启httpd

查看端口

在lvs进行多端口标记

多端口自动识别

在客户端client

测试

相关推荐
七牛云行业应用18 小时前
DeepSeek Harness(dsh)安装完整指南:Windows、macOS、Linux 三平台 + 桌面端与 Web 端全覆盖
linux·windows·macos·ai·ai编程
~城南花已开~18 小时前
Intel E810 SR-IOV VF Spoofcheck 防伪造测试-KVM3
服务器·网络·笔记·学习·ubuntu·etl工程师
乌恩大侠18 小时前
Supermicro 发布六款 NVIDIA ARC 服务器:从 1U 边缘基站到 4U 八卡 AI-RAN 平台,全面对比
运维·服务器·人工智能
十年磨一剑~19 小时前
APT 仓库包查看方法文档
linux·ubuntu
DYWorker00119 小时前
第 1-1 课:启动编排:内核如何把自己装配起来
linux
谢白羽19 小时前
从传统运维到 AI Infra: K8s 上调度 100 张 GPU踩坑笔记
运维·人工智能·缓存·kubernetes·vllm·sglang·vllm-omni
ai_coder_ai19 小时前
使用Web IDE边写自动化脚本
运维·前端·自动化
wacsii19 小时前
【Linux基础开发工具(五)】Git版本控制器从入门到实战:核心操作三板斧与新手避坑指南
linux·运维·服务器
水饺编程19 小时前
第2章:Linux 基础,解压缩【.tar.gz】压缩包
linux·c语言·汇编
zhongben123_19 小时前
从零开发一个打车APP:技术选型、系统架构与成本评估指南
大数据·运维·ios·系统架构·uni-app·web app