当前位置: 首页 > news >正文

LVS部署DR模式集群

1.实验环境

配置实验环境

 #在客户端主机中为nat模式网卡
[root@client ~]# vim/etc/NetworkManager/system-connections/eth0.nmconnection[connection]id=eth0type=ethernetinterface-name=eth0[ipv4]method=manualaddress1=172.25.254.10/24,172.25.254.100#在路由主机中设定双网卡,eth0为nat网卡,eth1为仅主机网卡
#对于eth0的设定
[root@DR-server ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection[connection]id=eth0type=ethernetinterface-name=eth0[ipv4]method=manualaddress1=172.25.254.100/24
#对于eth1的设定
[root@DR-server ~]# vim  /etc/NetworkManager/system-connections/eth1.nmconnection[connection]id=eth1type=ethernetinterface-name=eth1[ipv4]method=manualaddress1=192.168.0.10/24#对于dr调度器设定网卡为仅主机模式
[root@dr-server ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection[connection]id=eth0type=ethernetinterface-name=eth0[ipv4]method=manualaddress1=192.168.0.200/24,192.168.0.10[root@dr-server ~]# route  -nKernel IP routing tableDestination     Gateway         Genmask         Flags Metric Ref    Use Iface0.0.0.0         192.168.0.10    0.0.0.0         UG    100    0        0 eth0192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0#################################################################################################################################################################################对于RS1的设定网卡为仅主机模式
[root@webserver1 ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection[connection]id=eth0type=ethernetinterface-name=eth0[ipv4]method=manualaddress1=192.168.0.101/24,192.168.0.10#对于RS2中的网络设定
[root@webserver2 ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection[connection]id=eth0type=ethernetinterface-name=eth0[ipv4]method=manualaddress1=192.168.0.102/24,192.168.0.10

5.2.2解决vip响应问题

DR模型中各主机上均需要配置VIP,解决地址冲突的方式有三种:

(1)在前端网关做静态绑定

(2)在各RS使用arptables

(3)在各RS修改内核参数,来限制arp响应和通告的级别

限制响应级别:arp_ignore

        0:默认值,表示可使用本地任意接口上配置的任意地址进行响应

        1:仅在请求的目标IP配置在本地主机的接收到请求报文的接口上时,才给予响应

限制通告级别:arp_announce

0:默认值,把本机所有接口的所有信息向每个接口的网络进行通告

1:尽量避免将接口信息向非直接连接网络进行通告

2:必须避免将接口信息向非本网络进行通告

3.配置要点

1.Director服务器采用双IP桥接网络,一个是VPP,一个DIP

2.Web服务器采用和DIP相同的网段和Director连接

3.每个Web服务器配置VIP 4.每个web服务器可以出外网

配置内容如下:

在lvs 和 rs 中设定vip[root@lvs ~]# ip addr add dev lo 192.168.0.100/32[root@rs1 ~]# ip addr add dev lo 192.168.0.100/32[root@rs2 ~]# ip addr add dev lo 192.168.0.100/32
在RS1和RS2中解决响应问题
[root@rs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore[root@rs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore[root@rs1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce[root@rs1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce[root@rs2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore[root@rs2 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore[root@rs2 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce[root@rs2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
在lvs中配置策略
[root@lvs ~]# ipvsadm -A -t 192.168.0.100:80 -s wrr[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 -Ln测试:
[root@RS1 ~]#echo "RS1 server -192.168.0.101" > /var/www/html/index.html
[root@RS2 ~]#echo "RS2 server -192.168.0.102" > /var/www/html/index.html[root@node10 ~]# for N in {1..6};do curl 192.168.0.100;doneRS2 server - 192.168.0.102RS1 server - 192.168.0.101RS2 server - 192.168.0.102RS1 server - 192.168.0.101RS2 server - 192.168.0.102RS1 server - 192.168.0.101

3.防火墙标签解决轮询错误

以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测试问题
[root@node10 ~]# curl  http://192.168.0.100;curl -k https://192.168.0.100RS1 server - 192.168.0.101      
RS1 server - 192.168.0.101
当访问vip时两次调度都到了101

测试结果

4..防火墙标记解决轮询调度问题

防火墙标记(FireWall Mark, FWM)是Linux内核网络子系统提供的一种报文分类机制,通过给特定数据包打上数字标记,实现流量的灵活控制。

MARK target 可用于给特定的报文打标记,

--set-mark value

其中:value 可为0xffff格式,表示十六进制数字借助于防火墙标记来分类报文,而后基于标记定义集群服 务:可将多个不同的应用使用同一个集群服务进行调度

实现方法:

在Director主机打标记:

iptables -t mangle -A PREROUTING -d $vip -p $proto -m multiport --dports $portl,$port2,..-i MARK --set-mark NUMBER

在Director主机基于标记定义集群服务

ipvsadm -A -f NUMBER [options]

示例如下:

在vs调度器中设定端口标签,人为80和443是一个整体
# iptables -t mangle -A PREROUTING -d 192.168.0.100 -p tcp -m multiport --dports 
80,443 -j MARK --set-mark  6666
设定调度规则
[root@lvs ~]# ipvsadm -A -f 6666 -s rr[root@lvs ~]# ipvsadm  -a -f 6666 -r 192.168.0.101 -g[root@lvs ~]# ipvsadm  -a -f 6666 -r 192.168.0.102 -g

测试结果

5.lvs持久链接

在我们客户上网过程中有很多情况下需要和服务器进行交互,客户需要提交响应信息给服务器,如果单纯的进行调度会导致客户填写的表单丢失,为了解决这个问题我们可以用sh算法,但是sh算法比较简单 粗暴,可能会导致调度失衡
解决方案
在进行调度时,不管用什么算法,只要相同源过来的数据包我们就把他的访问记录在内存中,也就是把 这个源的主机调度到了那个RS
如果在短期(默认360S)内同源再来访问我仍然按照内存中记录的调度信息,把这个源的访问还调度到 同一台RS上。 如果过了比较长的时间(默认最长时间360s)同源访问再次来访,那么就会被调度到其他的RS
ipvsadm -AlE -tlulf service-address [-s scheduler] [-p [timeout]]默认360秒
在lvs调度器中设定
[root@lvs ~]# ipvsadm -E -f 6666 -s rr -p [3000]
[root@lvs ~]# ipvsadm -LnC

http://www.dtcms.com/a/284262.html

相关文章:

  • @Linux搭建DNS-主从服务器
  • Spring原理揭秘--Spring的AOP
  • cuda编程笔记(8)--线程束warp
  • Cookie 与 Session概述
  • AI编程实战:如何让AI生成带参数和返回值的Python函数——以PDF文本提取为例
  • 【橘子分布式】gRPC(理论篇)
  • 要实现在调用  driver.get()  后立即阻止页面自动跳转到 Azure 登录页,可通过以下几种方法实现:
  • Redis完全指南:从基础到实战(含缓存问题、布隆过滤器、持久化及Spring Boot集成)
  • 前端 cookie 使用
  • 独家|理想汽车放弃华为PBC模式,回归OKR理想汽车
  • 自动化测试工具 Selenium 入门指南
  • 大带宽服务器对于高流量网站的作用
  • Kubernetes v1.33:容器生命周期管理的重要演进
  • 断网情况下,网线直连 Windows 笔记本 和Ubuntu 服务器
  • python的抗洪救灾管理系统
  • 分布式系统中脑裂问题
  • 数据结构入门 (二):挣脱连续空间的束缚 —— 单向链表详解
  • LiteCloud超轻量级网盘项目基于Spring Boot
  • 大模型AI制作svg流程图过分简单粗糙单调的问题及修改调整方法
  • AI大模型教程 Langchain AI原生应用开发 Milvus AnythingLLM Dify 仿京东《京言》AI实战解析
  • 【赵渝强老师】Redis的主从复制集群
  • mongodb-org-server_8.0.11_amd64.deb 这个文件怎么安装
  • Java爬虫与正则表达式——用正则来爬取数据
  • 二刷 黑马点评 秒杀优化
  • 板凳-------Mysql cookbook学习 (十二--------1)
  • 医院各类不良事件上报,PHP+vscode+vue2+element+laravel8+mysql5.7不良事件管理系统源代码,成品源码,不良事件管理系统
  • React事件处理
  • 【FFmpeg 快速入门】本地播放器 项目
  • c++:explicit关键字
  • Python枚举技巧:轻松获取索引与值