首页 > 其他分享 >1.负载均衡服务LVS及三种模型实战案例

1.负载均衡服务LVS及三种模型实战案例

时间:2023-07-24 13:04:03浏览次数:47  
标签:实战 10.0 负载 LVS ipvsadm ipv4 80 root net

知识小课堂

1.负载均衡会话保持
session sticky:同一用户调度固定服务器
session replication:每台服务器拥有全部session
session server:专门的session服务器

2.LVS集群工作模式
NAT:
DR:(必须在同一网络,用改内核参数)
TUNNEL:(可以跨网络,不用改内核参数,需要单独增加tunnel网卡)
FULLNAT:

3.调度算法
静态:RR,WRR,SH,DH
动态:LC,WLC,SED,NQ,LBLC,LBLCR

LVS

LVS:负载调度器,可以一个端口对多个端口

LVS集群类型中的术语
VS:虚拟服务器
RS:真实服务器
CIP:客户端IP
VIP:虚拟服务器网卡的IP
DIP:连内网网卡的IP
RIP:真正服务器的IP
访问流程:CIP-VIP-DIP-RIP
DR模型需要关闭arp广播(修改内核参数)
all/arp_announce
all/arp_ignore
lo/arp_announce
lo/arp_ignore
LVS调度算法
静态算法和动态算法
静态:
RR:轮询,雨露均沾
WRR:加权轮询,加优先级
SH:session sticky,访问一次就绑定IP,以后一直访问这个服务器
DH:目标地址哈希,将目标地址进行缓存
动态:(根据后端服务器负载情况进行调度,cost,越小,优先级越高)六种算法区别在于怎么算cost值
LC:最少连接数
WLC:默认调度算法,考虑了权重 
SED:初始连接高权重优先,不公平
NQ:第一轮轮询,后续SED
LBLC:动态DH算法,根据负载调度
LBLCR:带复制功能的LBLC

新增调度算法三种MH,SH,FO
LVS相关软件
ipvsadm
安装:apt -y install ipvsadm
save  保存规则
restore  恢复规则
命令:
 ipvsadm      
 -A  创建集群
 -a  增加集群服务器成员
 -L  查看集群,一般跟n一起使用,显示IP,不转换主机名,-Ln,顺序不能变
 -D  清空集群
 -t  tcp协议  -u udp协议
 -r  后端服务器
 -d  删除某个后端服务器
 -C  清空规则
 -e  改权重后端服务器
 -w  权重比例
 -p  会话保持  默认360秒
 -f  根据防火墙标签建集群

 创建格式:ipvsadm  -A -t 本机IP和端口号
 添加格式:ipvsadm -a -t 集群端口号(10.0.0.100:80) -r 添加的主机IP和端口号
 不指定工作模式,默认DR模式
 不指定调度算法,默认wlc算法
 route  DR模式    直接路由   -g
  Masq  NAT模式             -m
TUNNEL  TUNNEL模式          -i


ubuntu
vim /etc/default/ipvsadm
auto=true    #修改为开机自启
ipvsadm-save -n >>  /etc/ipvsadm.rulers    #将集群规则保存至文件内,永久实现
ipvsadm-restore > 文件名            #恢复集群

rocky
systemctl enable ipvsadm.service

缺点:如果有服务器挂了,依然会往坏的服务器上调度

实战案例-NAT模式

环境准备:
四台实例
client:192.168.10.123                   (仅主机模式)
LVS:    10.0.0.100   VIP:192.168.10.100  (仅主机模式)
RS1:    10.0.0.8     GW:10.0.0.100
RS2:    10.0.0.18    GW:10.0.0.100
LVS服务器:
安装:apt -y install ipvsadm

创建集群,添加集群
[root@ubuntu2004 ~]#ipvsadm -A -t 192.168.10.100:80 -s rr     #rr指定算法
[root@ubuntu2004 ~]#ipvsadm -a -t 192.168.10.100:80 -r 10.0.0.128:80 -m  #m指定模式
[root@ubuntu2004 ~]#ipvsadm -a -t 192.168.10.100:80 -r 10.0.0.129:80 -m

开启IP转发
[root@ubuntu2004 ~]#vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@ubuntu2004 ~]#sysctl -p
net.ipv4.ip_forward = 1

改成wrr模式,比例为3:1
[root@ubuntu2004 ~]#ipvsadm -E -t 192.168.10.100:80 -s wrr
[root@ubuntu2004 ~]#ipvsadm -e -t 192.168.10.100:80 -r 10.0.0.128:80 -w 3 -m
RS1:RS2:
安装相关服务软件:httpd  mysql-server 等

实战案例-DR模式

单网段

环境准备:
五台实例
client:192.168.10.123      GW:192.168.10.200               (仅主机模式)
Router: eth0:10.0.0.200     eth1:192.168.10.200(仅主机模式)
LVS:    10.0.0.10    VIP: lo: 10.0.0.100/32               GW:10.0.0.200(必须有)
RS1:    10.0.0.8     VIP: lo: 10.0.0.100/32               GW:10.0.0.200
RS2:    10.0.0.18    VIP: lo: 10.0.0.100/32               GW:10.0.0.200
Router服务器:
开启IP转发
[root@route ~]#vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@route ~]#sysctl -p
net.ipv4.ip_forward = 1
LVS服务器:
关闭IP转发
[root@lvs ~]#sysctl -w net.ipv4.ip_forward=0
net.ipv4.ip_forward = 0

创建集群,添加集群
[root@lvs ~]#ipvsadm -A -t 10.0.0.10:80 -s rr 
[root@lvs ~]#ipvsadm -a -t 10.0.0.10:80 -r 10.0.0.128:80 -g
[root@lvs ~]#ipvsadm -a -t 10.0.0.10:80 -r 10.0.0.129:80 -g   

#修改内核参数:修改后将不用添加网关,不做反向校验
echo "0" > /proc/sys/net/ipv4/conf/all/rp_filter
echo "0" > /proc/sys/net/ipv4/conf/eth0/rp_filter
RS1:RS2:
配置VIP时需将以下配置关闭,以免产生冲突
echo 1 >   /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 >   /proc/sys/net/ipv4/conf/all/arp_announce 
echo 1 >   /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 >   /proc/sys/net/ipv4/conf/lo/arp_announce
永久修改需修改配置文件:
[20:48:03 root@rs1 ~]# vim /etc/sysctl.conf

多网段

环境准备:
五台实例
client:192.168.10.101      GW:192.168.10.200               (仅主机模式)
Router: eth0:10.0.0.200   eth0:1:172.16.0.200        eth1:192.168.10.200(仅主机模式)
LVS:    10.0.0.10    VIP: lo: 172.16.0.100/32               GW:10.0.0.200(必须有)
RS1:    10.0.0.8     VIP: lo: 172.16.0.100/32               GW:10.0.0.200
RS2:    10.0.0.18    VIP: lo: 172.16.0.100/32               GW:10.0.0.200

实战案例-TUNNEL模式

环境准备:
五台实例
client:192.168.10.123      GW:192.168.10.200               (仅主机模式)
Router: eth0:10.0.0.200     eth1:192.168.10.200(仅主机模式)
LVS:    10.0.0.10    VIP: tunl0: 10.0.0.100/32             GW:10.0.0.200(必须有)
RS1:    10.0.0.8     VIP: tunl0: 10.0.0.100/32               GW:10.0.0.200
RS2:    10.0.0.18    VIP: tunl0: 10.0.0.100/32               GW:10.0.0.200
lvs和rs中间可以跨广域网,加路由
TUNNEL有专用的网卡,不能绑定在会环网卡上
开启tunnel网卡并配置tunnel网卡:ifconfig tunl0 10.0.0.100 netmask 255.255.255.255 up
lvs服务器
创建集群,添加集群
[root@lvs ~]#ipvsadm -A -t 10.0.0.10:80 -s rr 
[root@lvs ~]#ipvsadm -a -t 10.0.0.10:80 -r 10.0.0.128:80 -i
[root@lvs ~]#ipvsadm -a -t 10.0.0.10:80 -r 10.0.0.129:80 -i

如果是在同一网络,则不用加内核参数,如果在同一网段,需要修改内核参数
echo 1 >   /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 >   /proc/sys/net/ipv4/conf/all/arp_announce 
echo 1 >   /proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo 2 >   /proc/sys/net/ipv4/conf/tunl0/arp_announce

不做反向校验,修改内核参数
echo "0" > /proc/sys/net/ipv4/conf/all/rp_filter
echo "0" > /proc/sys/net/ipv4/conf/tunl0/rp_filter

防火墙标签

将两个端口贴一个标签,同时访问时,会识别到是同一个服务,就会分别调度,mangle贴标签 
iptables -t mangle -A PREROUTING -d 10.0.0.100 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 66
创建集群,添加集群
ipvsadm -A -f 66 -s rr     #-f 根据防火墙标签建集群
ipvsadm -a -f 66 -r 10.0.0.8 -i
ipvsadm -a -f 66 -r 10.0.0.18 -i


标签:实战,10.0,负载,LVS,ipvsadm,ipv4,80,root,net
From: https://blog.51cto.com/lmm01/6834173

相关文章

  • AI识别检验报告 -PaddleNLP UIE-X 在医疗领域的实战
    目录UIE-X在医疗领域的实战1.项目背景2.案例简介3.环境准备数据转换5.模型微调6.模型评估7.Taskflow一键部署UIE-X在医疗领域的实战PaddleNLP全新发布UIE-X......
  • Java 诊断工具 Arthas 常见命令(超详细实战教程)
    基本概念  云原生这么多微服务,当然需要一个诊断利器来排查问题。  Arthas是阿里开源的Java诊断工具,深受开发者喜爱。在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。Arthas支持JDK6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的Tab......
  • 成都站丨阿里云 Serverless 技术实战营邀你来玩!
    活动简介“Serverless技术实战与创新沙龙”是一场以Serverless为主题的开发者活动,活动受众以关注Serverless技术的开发者、企业决策人、云原生领域创业者为主,活动形式为演讲、动手实操,让开发者通过一个下午的时间增进对Serverless技术的理解,快速上手Serverless,拥抱云......
  • Python爬虫实战之提高CSDN访问量
    python爬虫之建立代理池(一)_CodingInCV的博客-CSDN博客python爬虫之建立代理池(二)_CodingInCV的博客-CSDN博客前面2篇分别介绍了从2个免费代理网站爬取免费代理来构建我们自己的代理池。这一篇我们从实战的角度来将我们的代理池用起来,通过代理的方式访问我们的CSDN博客(CSDN会认为......
  • 十四、消费模式和负载均衡策略
    消费模式RocketMQ消费者都是以消费组去消费消息。如果多个消费者设置了相同的ConsumerGroup,我们认为这些消费者在同一个消费组内。在ApacheRocketMQ有两种消费模式,分别是:集群消费模式:当使用集群消费模式时,RocketMQ认为任意一条消息只需要被消费组内的任意一个消费者处理即......
  • 头歌平台移动云启 —— HBase从入门到实战第1关:伪分布式环境搭建先按照上次实训
    头歌平台移动云启——HBase从入门到实战第1关:伪分布式环境搭建HBase是一个分布式的非关系型数据库,广泛应用于大数据领域。本文将介绍如何在头歌平台上搭建HBase的伪分布式环境,并提供相应代码示例。什么是伪分布式环境?伪分布式环境是指在单机上运行HBase的分布式模式,虽然只有......
  • OpenResty 入门实战(1)--简介及安装
    本文介绍的 OpenResty为开源版本OpenResty,官网地址为:https://openresty.org/cn/,如需了解商业版本,可访问商业官网:https://openresty.com.cn/cn/;文中所使用到的软件版本:OpenResty 1.21.4.2、pcre8.43、opnessl1.1.1s、zlib1.2.11、CentOS 7.9.2009。1、简介OpenResty®是......
  • 《Maven实战》笔记(长文警告⚠️
    本文是《Maven实战》的读书笔记,实战代码仓库:https://github.com/goSilver/mvn_in_action第五章坐标和依赖5.1坐标的定义Maven定义了这样一组规则:世界上任何一个构件都可以使用Maven坐标唯一标识,Maven坐标的元素包括groupId、artifactId、version、packaging、classifier。只......
  • quarkus实战之三:开发模式(Development mode)
    欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos本篇概览前文咱们曾提到过几种启动方式,有一种用maven命令启动的,可以进入开发模式,命令如下:mvnquarkus:dev当时只提到此模式能看到详细系统信息,并未展开说明更多信息......
  • QT从入门到实战完整版 P36
    绘图事件widget.h#ifndefWIDGET_H#defineWIDGET_H#include<QWidget>QT_BEGIN_NAMESPACEnamespaceUi{classWidget;}QT_END_NAMESPACEclassWidget:publicQWidget{Q_OBJECTpublic:Widget(QWidget*parent=nullptr);~Widget();......