LVS负载均衡集群服务搭建详解(一)
1.LVS:Linux Virtual Server
四层交换(路由):根据请求报文的目标IP和目标PORT将其转发至后端主机集群中的某台服务器(根据调度算法);
不能够实现应用层的负载均衡
lvs(又称ipvs)是基于内核中的防火墙netfilter实现
2.lvs集群术语:
vs:Virtual Server | 虚拟服务,可称为Director、Dispatcher分发器、Balancer负载均衡器 |
rs:Real Server | 真实服务器 |
CIP:Client IP | 客户端IP |
VIP:Director Virtual IP | 等同于FIP(流动IP),负载均衡器虚拟IP |
DIP:Director IP | 调度IP(第二张网卡IP地址) |
RIP:Real Server IP | 真实服务器IP |
3.LVS:ipvsadm/ipvs
(1)ipvsadm: CLI工具
用户空间的命令行工具,用于管理集群服务及集群服务上的RS等;# yum install -y ipvsadm
(2)ipvs:内核存在(CentOS默认支持)
工作于内核上的netfilterINPUT钩子之上的程序代码;其集群功能依赖于ipvsadm定义的集群服务器规则;
支持基于TCP、UDP、SCTP、AH、EST、AH_EST等协议的众多服务;
4.负载均衡集群中设计时的要点:
(1)session保持
session sticky (iphash):IP地址绑定,来源IP记录在ip hash表作统一调度
session cluster(multicast/broadcast/unicast):广播集群同步(复制)session,只适用于小规模场景
session server ():session服务器
(2)数据共享(提供一致性存储)
1) 共享存储;
NAS:Network Attached Storage (文件级别),网络附加存储,文件服务器
SAN:Storage Area Network (块级别),存储区域网络
DS:Distributed Storage,分布式春初
2) 数据同步:rsync … ...
1.lvs-nat:地址伪装模型
多目标的DNAT:通过将请求报文的目标地址和目标端口修改为挑选出某RS的RIP和PORT来实现;
客户端主机发起请求报文CIP指向VIP,通过内核的核心网卡间转发功能,VIP会将请求交给DIP进行调度,DIP根据设定的算法进行负载均衡给后端的RS主机的RIP,在这个过程中DIP调度功能会将目标IP地址重写为RIP。请求和返回请求读要调度DIP来进行转换操作。
(1)RIP和DIP应该使用私网地址,RS的网状应该指向DIP;
(2)请求和响应报文都要经由director转发;极高负载的场景中,Director可能会成为系统瓶颈(响应报文大);
(3) 支持端口映射(转发);
(4) VS必须为Linux,RS可以为任意操作系统;
(5)RS的RIP与Director的DIP必须在同一IP网络;
2.lvs-dr(direct routing直接路由):网关模型
通过修改请求报文的MAC地址进行转发;IP首部不会发生变化(源IP为CIP,目标IP始终为VIP)
客户端发起请求,经过层层路由到达离VS服务器最近的交换机,通过交换机转发给VS服务器,由VS服务器负载均衡转发请求给RS服务器。在此过程中VIP修改MAC地址调度请求给真实主机。在此过程中通过ARP协议在一个局域网中广播寻找真实主机的MAC地址。每个RS真实主机的网卡会一个别名地址VIP,实现全过程源地址为CIP,目标地址为VIP不变。调度基于寻找MAC。网关模型中的所有主机均要能与外网通信。这样RS主机就能够直接响应客户机。
(1)确保前端路由器将目标IP为VIP的请求报文一定会发送给Director;
解决方案:
1)静态绑定;
2)禁止RS响应VIP的ARP请求;
a) arptables上定义;
b) 修改各RS的内核参数,并把VIP配置在特定的接口上实现禁止其响应;
(2)RS的RIP可以使用私有地址,也可以使用公网地址;
RIP使用私有地址可以通过在之前加一个路由器的方式和外网通信,直接响应客户机
(3)RS跟Director必须在同一物理网络中;
(4)请求报文必须由Director调度,但响应报文必须不能经由Director;
(5) 不支持端口映射;
(6) 各RS可以使用大多数的操作系统;
3.lvs-tun(ip tunneling):IP隧道模型
转发方式:不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而是在原有的IP首部这外再次封装一个IP首部(源IP为DIP,目标IP为RIP);
(1)RIP,DIP,VIP全得是公网地址;
(2)RS的网关不能也不可能指向DIP;
(3)请求报文经由Director调度,但响应报文将直接发给CIP;
(4) 不支持端口映射;
(5)RS的OS必须支持IP隧道功能;
4.lvs-fullnat:完整模型(同时改变请求报文的源IP和目标IP)
通过同时修改请求报文的源IP地址(cip-->dip)和目标IP地址(vip--> rip)实现转发;
注意:前三种为标准类型,第四种为后添加类型,内核默认可能不支持,需自编译内核
(1)VIP是公网地址;RIP和DIP是私网地址,且可以不在同一IP网络中,但需要通过路由互相通信;
(2)RS收到的请求报文的源IP为DIP,因此其响应报文将发送给DIP;
(3)请求报文和响应报文都必须经由director;
(4) 支持端口映射;
(5) RS可使用任意OS;
1.静态方法:仅根据算法本身进行调度
(1)RR :round robin,轮询机制,依次分配请求,方式简单但时负载均衡的效果一般
(2)WRR :weighted rr,加权轮询,权重越大承担负载越大
(3)SH :source ip hash,源地址哈希,将来自同一个ip请求通过记录在ip hsash表中绑定在同一个服务器,实现session保持
缺点:调度粒度大,对负载均衡效果差;session黏性不同,连接时长保持不同
(4)DH :desination ip hash,目标地址哈希。能实现连接追踪,但不考虑负载均衡效果
正向web代理,负载均衡内网用户对互联网的请求;
Client--> Director --> Web Cache Server(正向代理)
2.动态方法:根据算法及各RS当前的负载状态进行评估
Overhead | 负载值,VS转发时记录每个RS的Active和Inactive数量(甚至权重)进行算法计算 |
Active | 活动链接值,当发起新请求后保持在ESTABLISHED状态时,仍有请求响应 |
Inactive | 非活动链接值,在ESTABLISHED状态时,尚未断开保持空闲等待状态 |
(1)LC:least connection,最少连接
Overhead=Active*256+Inactive
后端的RS谁的连接少就分发请求至那台RS,若overhead一样则自上而下轮询列表中的RS
(2)WLC:weighted least connection,加权最小连接
Overhead=(Active*256+Inactive)/weight,计算结果小的将为选中的下一跳RS服务器
缺点:当Overhead一样时,自上而下轮询响应,权重小的若在列表上方则其会响应
(3)SED:Shortest Expection Delay,最短期望延迟
Overhead=(Active+1)*256/weight
缺点:解决WLC问题,但时无法确保权重小的主机一定响应
(4)NQ:never Queue,永不排队,SED算法改进
RS权重大小排列,每台RS服务器先分配一个请求,其余的按照权重大小计算分配
(5)LBLC:Locality-Based LC,基于本地的最少连接,动态的 DH连接算法
(6)LBLCR:LBLC with Replication,带复制功能的LBLC
1.管理集群服务:
ipvsadm -A|E -t|u|f service-address [-s scheduler][-p [timeout]]
ipvsadm -D -t|u|f service-address
-A:添加
-E:修改
-D:删除
-t, tcp, vip:port TCP的ip和port
-u, udp, vip:port UDP的ip和port
-f, fwm, MARK 防火墙标记
-s scheduler:默认为WLC调度算法,可省;
-p [timeout] :超出时长,持久连接相关,默认时长为300秒
2.管理集群服务上的RS:
ipvsadm-a|e -t|u|f service-address -rserver-address [-g|i|m] [-w weight]
ipvsadm -d -t|u|f service-address -rserver-address
-a:添加一个RS
-e:修改一个RS
-d:删除一个RS
server-address指的是rip[:port],端口可省表示与之前的service-address相同,只有nat模式支持端口映射才会使用
[-g|i|m]
-g:GATEWAY (默认),lvs-dr模型
-i: IPIP, lvs-tun隧道模型
-m: MASQUERADE,lvs-nat模型
3.查看
ipvsadm -L|l[options]
-n:numeric,数字格式显示地址和端口;
-c:connection,显示ipvs连接;
--stats:显示统计数据;
--rate:速率
--exact:精确值,不经过单位换算的数值
4.清空规则:
ipvsadm -C
5.数器清零:
ipvsadm -Z [-t|u|f service-address]
6.保存和重载:
保存:
ipvsadm-S > /PATH/TO/SOME_RULE_FILE
ipvsadm-save > /PATH/TO/SOME_RULE_FILE
重载:
ipvsadm -R < /PATH/FROM/SOME_RULE_FILE
ipvsadm-restore< /PATH/FROM/SOME_RULE_FILE
注意:需要结合重定向一起使用,从自定义的规则文件中导入导出
附录(ipvsadm -h):
ipvsadm-A|E -t|u|f service-address [-s scheduler]
[-p[timeout]] [-M netmask] [-b sched-flags]
ipvsadm-D -t|u|f service-address
ipvsadm-C
ipvsadm-R
ipvsadm-S [-n]
ipvsadm-a|e -t|u|f service-address -r server-address
[-g|i|m][-w weight] [-x upper] [-y lower]
ipvsadm-d -t|u|f service-address -r server-address
ipvsadm-L|l [options]
ipvsadm-Z [-t|u|f service-address]
ipvsadm--set tcp tcpfin udp
ipvsadm-h
LVS负载均衡集群服务搭建详解(一)的更多相关文章
- LVS负载均衡集群服务搭建详解(二)
lvs-nat模型构建 1.lvs-nat模型示意图 本次构建的lvs-nat模型的示意图如下,其中所有的服务器和测试客户端均使用VMware虚拟机模拟,所使用的CentOS 7 VS内核都支持ipv ...
- Nginx+Tomcat+Memcached负载均衡集群服务搭建
操作系统:CentOS6.5 本文档主要讲解,如何在CentOS6.5下搭建Nginx+Tomcat+Memcached负载均衡集群服务器,Nginx负责负载均衡,Tomcat负责实际服务,Memc ...
- 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群
高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...
- 项目实战2—实现基于LVS负载均衡集群的电商网站架构
负载均衡集群企业级应用实战-LVS 实现基于LVS负载均衡集群的电商网站架构 背景:随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,网站已经不堪重负,响 ...
- LVS之2---基于LVS负载均衡集群架构
LVS之2---基于LVS负载均衡集群架构实现 目录 LVS之2---基于LVS负载均衡集群架构实现 ipvsadm software package Options 常用命令 保存及重载规则 内存映 ...
- 高可用,多路冗余GFS2集群文件系统搭建详解
高可用,多路冗余GFS2集群文件系统搭建详解 2014.06 标签:GFS2 multipath 集群文件系统 cmirror 实验拓扑图: 实验原理: 实验目的:通过RHCS集群套件搭建GFS2集群 ...
- LVS负载均衡集群
回顾-Nginx反向代理型负载 负载均衡(load balance)集群,提供了一种廉价.有效.透明的方法,来扩展网络设备和服务器的负载.带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用 ...
- 实现基于LVS负载均衡集群的电商网站架构
背景 上一期我们搭建了小米网站,随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,网站已经不堪重负,响应缓慢,面对此场景,单纯靠单台LNMP的架构已经无法 ...
- Linux 笔记 - 第十八章 Linux 集群之(二)LVS 负载均衡集群
一.前言 Linux 集群从功能上可以分为两大类:高可用集群和负载均衡集群.上一篇已经讲解了 HA 高可用集群,此节讲解负载均衡集群. 负载均衡集群(Load Balance Cluseter,简称 ...
随机推荐
- spring+mybatis实现读写分离
springmore-core spring+ibatis实现读写分离 特点 无缝结合spring+ibatis,对于程序员来说,是透明的 除了修改配置信息之外,程序的代码不需要修改任何东西 支持sp ...
- 【Moqui业务逻辑翻译系列】--UBPL Introduction同意的商业处理文库介绍
h1. UBPL Introduction 通用的商业处理文库介绍h4. Why a Universal Business Process Library? 为什么需要通用的商业处理文库? The g ...
- C语言浮点数除法可以精确到多少位小数
double型的两个数相除,得到的浮点数能精确到多少位呢..用我家电脑做了个实验,编译器是Code::Blocks 13.12. 然后用电脑自带的计算器算的结果和C语言算的结果比较如图. 第一例里a= ...
- BZOJ-2756 奇怪的游戏 黑白染色+最大流+当前弧优化+二分判断+分类讨论
这个题的数据,太卡了,TLE了两晚上,各种调试优化,各种蛋疼. 2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec Memory Limit: 128 MB Submit ...
- 洛谷P2015 二叉苹果树
题目描述 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 我们用一根树枝两端连接的结点的编号来 ...
- HYSBZ - 2152 聪聪和可可
Description 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一般情况下石头剪刀布就好 ...
- HDU2096 小明A+B
入门级都没到的水题!看到顺便就做了,AC记录喜+1 Description 小明今年3岁了, 现在他已经能够认识100以内的非负整数, 并且能够进行100以内的非负整数的加法计算. 对于大于等于100 ...
- Linux数据包路由原理、Iptables/netfilter入门学习
相关学习资料 https://www.frozentux.net/iptables-tutorial/cn/iptables-tutorial-cn-1.1.19.html http://zh.wik ...
- java订电影票系统
public class Test { public static void main(String[] args) { BookTicket bookTicket = new BookTicket( ...
- 五种开源协议的比较(BSD_Apache_GPL_LGPL_MIT)
现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种(http://www.opensource.org/licenses/alphabetic ...