11.4.5 LVS负载均衡常见工作模式总结以及ipvsadm
NAT | TUN | DR | |
RS | any | Tunneling | Non-arp device |
RS network | private | LAN/WAN | LAN |
RS number | low(10-20) | High(100) | High(100) |
RS gateway | load balancer | own router | Own router |
优点 | 端口转换 | WAN | 性能最好 |
缺点 | 性能瓶颈 | 支持隧道 | 不支持跨网段 |
lvs-nat与lvs-fullnat:
请求和响应报文都经由Director
lvs-nat:RIP的网关要指向DIP
lvs-fullnat:RIP和DIP未必在同一IP网络,但要能通信
lvs-dr与lvs-tun:
请求报文要经由Director,但响应报文由RS直接发Client
lvs-dr:通过封装新的MAC首部实现,通过MAC网络转发
lvs-tun:通过在原IP报文外封装新IP头实现转发,支持远距离通信
LVS 调度算法
ipvs scheduler:根据其调度时是否考虑各RS当前的负载状态
分为两种:静态方法 动态方法
静态方法
仅根据算法本身进行调度
1.RR:roundrobin 轮训
2.WRR:weighted RR 加权轮训
3.SH:Source Hashing 源地址hash 可以实现session sticky
将来自于同一个IP地址的请求始终转发往第一次跳中的RS,从而实现会话绑定
4.DH:Destination Hashing 目标地址hash,
第一次轮训调度至RS,后续将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型应用场景:Web缓存
动态方法
主要根据每台RS当前的负载状态及调度算法进行调度Overhead=value较小的RS将被调度
1.LC Least connections 适用于长连接应用
overhead=activeconns*256+inactiveconns
2.WLC weighted LC 默认调度算法,比较常用
overhead=(activeconns*256+inactiveconns)/weight
3.SED shortest expection delay 初始连接高权重优先,只检查活动连接,而不考虑非活动连接
overhead=(activeconns+1)*256/weight
4.NQ Never Queue 第一轮rr,后续SED
5.LBLC locality-based lc 动态的DH算法,使用场景:根据负载均衡状态实现正向代理,实现Web cache等
6.LBLCR LBLC with replication ,带复制功能的LBLC,解决LBLC负载不均衡问题,从负载中的复制到负载轻的RS,实现web cache
其它调度算法
内核4.15版本后新增调度算法:FO OVF
LVS软件包组成
ipvsadm:
程序包:ipvsadm(LVS管理工具)
Unit File: ipvsadm.service
主程序:/usr/sbin/ipvsadm
规则保存工具:/usr/sbin/ipvsadm-save
规则重载工具:/usr/sbin/ipvsadm-restore
配置文件:/etc/sysconfig/ipvsadm-config
grep -i -C 10 "ipvs" /boot/config-3.10.0-957.el7.x86_64
#查看内核是否支持IPVS
ipvsadm
yum install ipvsadm -y
lvs命令使用
-t 表示为tcp服务
-u 表示为udp服务
-s --scheduler 使用的调度算法, rr | wrr | lc | wlc | lblb | lblcr | dh | sh |
sed | nq 默认调度算法是 wlc
ipvsadm -A -t 192.168.1.2:80 -s wlc
-a --add-server #在服务器表中添加一条新的真实主机记录
-t --tcp-service 说明虚拟服务器提供tcp服务
-u --udp-service 说明虚拟服务器提供udp服务
-r --real-server 真实服务器地址
-m --masquerading 指定LVS工作模式为NAT模式
-w --weight 真实服务器的权值
-g --gatewaying 指定LVS工作模式为直接路由器模式(也是LVS默认的模式)
-i --ip 指定LVS的工作模式为隧道模式
-p 会话保持时间,定义流量呗转到同一个realserver的会话存留时间
ipvsadm -a -t 192.168.1.2:80 -r 192.168.2.10:80 -m -w 1
-E –edit-service 编辑内核虚拟服务器表中的一条虚拟服务器记录。
-D –delete-service 删除内核虚拟服务器表中的一条虚拟服务器记录。
-C –clear 清除内核虚拟服务器表中的所有记录。
-R –restore 恢复虚拟服务器规则
-S –save 保存虚拟服务器规则,输出为-R 选项可读的格式
-e –edit-server 编辑一条虚拟服务器记录中的某条真实服务器记录
-d –delete-server 删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l –list 显示内核虚拟服务器表
--numeric, -n:以数字形式输出地址和端口号
--exact:扩展信息,精确值
--connection,-c:当前IPVS连接输出
--stats:统计信息
--rate :输出速率信息
参数也可以从/proc/net/ip_vs*映射文件中查看
-Z –zero 虚拟服务表计数器清零(清空当前的连接数量等)
ipvsadm -A|E -t|u|f virutal-service-address:port [-s scheduler] [-p [timeout]]
[-M netmask]
修改VIP为192.168.1.2的LVS中 http服务的调度算法为Round Robin
ipvsadm –E –t 192.168.1.2:80 –s rr
ipvsadm -D -t|u|f virtual-service-address
删除VIP为192.168.1.2的Service
ipvsadm -D -t 192.168.1.2:80
ipvsadm -a|e -t|u|f service-address:port -r real-server-address:port [-g|i|m]
[-w weight]
修改RS权重为3 ipvsadm -e -t 192.168.1.2:80 -r 192.168.1.3 –g -w 3
ipvsadm -d -t|u|f service-address -r server-address
删除一个RS:ipvsadm -d -t 192.168.1.2:80 -r 192.168.1.3:80
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
LVS规则保存和加载
保存:建议保存至/etc/sysconfig/ipvsadm
ipvsadm-save > /PATH/TO/IPVSADM_FILE
ipvsadm -S > /PATH/TO/IPVSADM_FILE
systemctl stop ipvsadm.service
重载:
ipvsadm-restore < /PATH/FROM/IPVSADM_FILE
ipvsadm -R < /PATH/FROM/IPVSADM_FILE
systemctl restart ipvsadm.service
11.4.5 LVS负载均衡常见工作模式总结以及ipvsadm的更多相关文章
- LVS负载均衡DR工作流程
LVS负载均衡DR工作流程 (a) 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链. 此时报文的源IP为CIP,目标IP为VIP (b) PRE ...
- LVS负载均衡之DR模式原理介绍
LVS基本原理 流程解释: 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间 PREROUTING 链首先会接收到用户请求,判断目标 IP 确定是本机 IP ...
- 20.LVS负载均衡群集—NAT模式实例
LVS负载均衡群集-NAT模式实例 目录 LVS负载均衡群集-NAT模式实例 群集引用概述 群集的含义 问题 解决方法 企业群集分类 群集的三种类型 负载均衡群集(Load Balance Clust ...
- LVS负载均衡IP隧道模式原理介绍以及配置实战
LVS 基本工作原理 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间 PREROUTING 链首先会接收到用户请求,判断目标 IP 确定是本机 IP,将数 ...
- LVS负载均衡之DR模式部署
1.LVS的DR模式介绍 参考自官网:http://www.linuxvirtualserver.org/zh/lvs3.html VS/DR利用大多数Internet服务的非对称特点,负 ...
- LVS负载均衡之NAT模式部署
1.LVS的NAT模式介绍 参考自官网:http://www.linuxvirtualserver.org/zh/lvs3.html 由于IPv4中IP地址空间的日益紧张和安全方面的原因,很多网络使用 ...
- LVS负载均衡三种模式的实现
何为lvs负载均衡? lvs负载均衡(linux virtual server)又名linux虚拟服务器.由章文嵩博士主导的负载均衡项目,目前LVS已经被集成到Linux内核模块中.该项目在Linux ...
- LVS 负载均衡——直接路由模式DR
一.配置的网络拓扑结构图 二.配置lvs服务器 配置虚拟网卡地址(VIP地址) [root@localhost ~]# ifconfig eno16777728: 192.168.200.253 ne ...
- 实现基于LVS负载均衡集群的电商网站架构
背景 上一期我们搭建了小米网站,随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,网站已经不堪重负,响应缓慢,面对此场景,单纯靠单台LNMP的架构已经无法 ...
随机推荐
- 设置Sublime插件快捷键--实现CSS颜色选取
安装插件ColorPicker 如果你经常要查看或设置颜色值,这个插件可以很方便地调用你本机的调色板应用.(译者扩充:)这是一个双向的功能,你既可以在调色板中选择一个颜色,然后按"确定&qu ...
- python创建字典多种方式
1.创建空字典 >>> dic = {} >>> type(dic) <type 'dict'> 2.直接赋值创建 >>> dic = ...
- ThreadLocal 的应用
ThreadLocal set() 的只能是当前线程能使用的值 public class TestTreadLocal{ public static final ThreadLocal threadS ...
- Go版本管理--处理不兼容
目录 1. 简介 2.能否引起不兼容的包 3.如何处理incompatible 1. 简介 Go module的版本选择机制,其中介绍了一个Module的版本号需要遵循v<major>.& ...
- spring-data-redis 动态切换数据源
最近遇到了一个麻烦的需求,我们需要一个微服务应用同时访问两个不同的 Redis 集群.一般我们不会这么使用 Redis,但是这两个 Redis 本来是不同业务集群,现在需要一个微服务同时访问. 其实我 ...
- go语言 切片表达式
切片表达式 切片的底层就是一个数组,所以我们可以基于数组通过切片表达式得到切片. 切片表达式中的low和high表示一个索引范围(左包含,右不包含),得到的切片长度=high-low,容量等于得到的切 ...
- Redis笔记(一)
redis:1.什么是缓存? mybatis一级缓存和二级缓存 mybatis的一级缓存存在哪? SqlSession,就不会再走数据库 什么情况下一级缓存会失效? 当被更新,删除的时候sqlsess ...
- Learning ROS: Running ROS across multiple machines
Start the master ssh hal roscore Start the listener ssh hal export ROS_MASTER_URI=http://hal:11311 r ...
- 批量修改Linux密码脚本(Python)
搭建环境 centos 7.4 使用脚本 python 批量修改connect用户的密码 生成密码为随机密码 保存为xls文档 #!/usr/bin/env python # -*- coding: ...
- Eclipse开发Java的简单配置
目录 Eclipse配置Java开发环境 1.配置JDK 2.切换项目的JDK版本 3.配置maven 4.配置lombok Eclipse配置Java开发环境 时隔N年重新使用Eclipse,对一些 ...