lvs DR模式负载均衡实操

简介:

ps:做 dr 模式 之前,先把之前做过的操作清空掉

1、ipvsadm -ln 查看规则

2、ipvsadm -C 清空规则

3、ipvsadm -ln 确认

4、iptables -t nat -F: 清空iptables的nat规则

5、master和slave把网卡所对应的网关(GATEWAY)改回来

vim /etc/sysconfig/network-scripts/ifcfg-ens33

6、dr用不到ens37这个网卡(192.168.56.128)

ifdown ens37

[root@www ~]# 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.133:80 rr

 -> 192.168.0.134:80             Route   1      0          4        

 -> 192.168.0.140:80             Route   1      0          4      

[root@www ~]# ipvsadm -C      //清空规则

[root@www ~]# ipvsadm -ln      //确认是否清空

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

 -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

[root@www ~]# iptables -t nat -F    //清空iptables的nat规则

5、master和slave把网卡所对应的网关(GATEWAY)改回来

vim /etc/sysconfig/network-scripts/ifcfg-ens33

[root@master ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

[root@master ~]# systemctl restart network

[root@slave ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

[root@slave ~]# systemctl restart network

一、DR  模式 VS  NAT 模式

缺点:比较浪费公网ip,每一个rs都必须要有一个独立的公网 ip

优点:用户的请求直接吐给客户端,不借助于分发器dir

 

实验环境:

(1)lvs_dir:192.168.0.139

(2)master:192.168.0.134

(3)slave:192.168.0.140

都看成对外的公网 ip

   另外,

   (a)还需要一个虚拟ip(192.168.0.133)

   (b)测试机器:192.168.0.130

二、分发器 dir 设置

1、编辑脚本

vim  /usr/local/sbin/lvs_dr.sh

#打开端口转发

echo 1 > /proc/sys/net/ipv4/ip_forward

ipv=/sbin/ipvsadm

vip=192.168.0.133

dengserver1=192.168.0.134

dengserver2=192.168.0.140

ifconfig ens33:0 $vip broadcast $vip netmask 255.255.255.255 up

#增加一条路由

route add -host $vip dev ens33:0

$ipv -C

$ipv -A -t $vip:80 -s rr

$ipv -a -t $vip:80 -r $dengserver2:80 -g -w 1

$ipv -a -t $vip:80 -r $dengserver1:80 -g -w 1

参数说明:

-g:表示 dr 模式

-m:表示 nat 模式

2、执行脚本 sh !$

3、ipvsadm -ln  多出一个vip 192.168.0.133

[root@www ~]# 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.133:80 rr

 -> 192.168.0.134:80             Route   1      0          0        

 -> 192.168.0.140:80             Route   1      0          0    

三、真实服务器 real server 设置

1、rs1,rs2都写脚本: vim /usr/local/sbin/lvs_rs.sh

(1)配置vip,绑定的网卡不是eth0,而是在回环地址 lo 上

(2)增加路由,调整arp相关的内核参数

写入:

#!/bin/bash

vip=192.168.0.133

ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up

route add -host $vip lo:0

#调整内核参数

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

调整arp内核参数的意义:

百度:

(a)ARP广播会产生的问题

 

当客户端发起访问VIP 对应的域名的请求(curl 192.168.131.100)时,根据网络通信原理会产生ARP 广播,因为负载均衡器dir和真实的服务器rs在同一网络并且VIP设置在集群中的每个节点上,此时集群内的真实服务器会尝试回答来自客户端计算机的查找VIP的ARP广播,这就会产生问题,大家都说我是"VIP"。

 

(b)为了达到负载均衡的目的,必须想法办让真实服务器忽略来自客户端计算机的ARP广播请求 ——》 调整arp内核参数

 

问题:lvs有vip,real server也有vip,但client请求只访问lvs的vip?

 ——》 在所有real server上要关闭所有arp请求,导致不能响应client发出的arp请求(相当于哑巴),只有lvs可以响应,这样请求就会传到lvs的vip中,这就是为什么要禁止real server 的 arp请求和响应

 

 

##############################

 

2、rs1,rs2执行脚本: sh  /usr/local/sbin/lvs_rs.sh

 

四、测试

1、浏览器访问vip :192.168.0.133 ——》 不精准(刷新无数次都是master,然后等一段时间,刷新无数次也是slave = =,所以才说不精准咯~~)

2、在另外一台linux服务器上进行测试:

[root@dengserver2 ~]# curl 192.168.0.133

this is master server

[root@dengserver2 ~]# curl 192.168.0.133

this is slave server

[root@dengserver2 ~]# curl 192.168.0.133

this is master server

[root@dengserver2 ~]# curl 192.168.0.133

this is slave server

[root@dengserver2 ~]# curl 192.168.0.133

this is master server

[root@dengserver2 ~]# curl 192.168.0.133

this is slave server



本文转自 IT_外卖小哥  51CTO博客,原文链接:http://blog.51cto.com/jinlong/1956187
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
486 11
|
负载均衡 网络协议 Linux
LVS,软负载均衡
LVS(Linux Virtual Server)是一项广泛应用的负载均衡技术,由章文嵩博士于1998年发起,自Linux 2.4.24版本起成为官方内核的一部分。LVS通过四层负载均衡技术实现高性能、高可用的服务器集群,支持多种调度算法和工作模式(如D-NAT、full-NAT、IP隧道、DR),适用于HTTP、数据库等应用。相比7层负载均衡器(如Nginx、HAProxy),LVS具有更高的并发处理能力和更低的资源消耗,适合大规模流量分发。本期文章详细介绍了LVS的工作原理、优势与不足,并对比了常见的负载均衡产品,帮助读者根据具体需求选择合适的解决方案。
2581 6
LVS,软负载均衡
|
负载均衡 IDE Java
SpringBoot整合XXL-JOB【04】- 以GLUE模式运行与执行器负载均衡策略
在本节中,我们将介绍XXL-JOB的GLUE模式和集群模式下的路由策略。GLUE模式允许直接在线上改造方法为定时任务,无需重新部署。通过一个测试方法,展示了如何在调度中心配置并使用GLUE模式执行定时任务。接着,我们探讨了多实例环境下的负载均衡策略,确保任务不会重复执行,并可通过修改路由策略(如轮训)实现任务在多个实例间的均衡分配。最后,总结了GLUE模式和负载均衡策略的应用,帮助读者更深入理解XXL-JOB的使用。
1122 9
SpringBoot整合XXL-JOB【04】-  以GLUE模式运行与执行器负载均衡策略
|
负载均衡 算法 Linux
LVS+Keepalived:实现高效软负载均衡的利器
本文介绍了如何使用LVS(Linux Virtual Server)和Keepalived搭建高可用负载均衡集群。LVS通过不同调度算法将请求转发给后端服务器,而Keepalived基于VRRP协议实现服务高可用,避免IP单点故障。具体步骤包括环境准备、安装配置ipvsadm和Keepalived、启动服务及测试。文中还详细解释了配置文件中的关键参数,并提供了故障转移测试方法。最后,文章简要对比了软件、硬件和云负载均衡方案的特点,帮助读者选择合适的负载均衡策略。
2136 4
|
运维 负载均衡 网络协议
LVS+Keepalived 负载均衡
LVS+Keepalived 负载均衡
520 8
LVS+Keepalived 负载均衡
|
缓存 负载均衡 算法
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
Nginx 是一款高性能的 HTTP 和反向代理服务器,也是一个通用的 TCP/UDP 代理服务器,以及一个邮件代理服务器和通用的 HTTP 缓存服务器。
792 0
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
|
域名解析 运维 负载均衡
LVS+Keepalived 负载均衡(二)28-1
【8月更文挑战第28天】LVS+Keepalived 负载均衡 配置 LVS VIP
367 6
|
负载均衡 网络协议 Linux
在Linux中, LVS三种模式的工作过程是什么?
在Linux中, LVS三种模式的工作过程是什么?
|
负载均衡 算法 Linux
在Linux中,LVS-NAT模式的原理是什么?
在Linux中,LVS-NAT模式的原理是什么?
|
负载均衡 网络协议
使用LVS搭建集群实现负载均衡(二)安装使用
【8月更文挑战第8天】使用LVS搭建集群实现负载均衡(二)安装使用
328 5