LVS的使用
lvs:
Linux Virtual Server
l4:四层交换;四层路由;
根据请求报文的目标IP和PORT将其转发至后端主机集群中的某一台主机(根据挑选算法);
netfilter:
PREROUTING --> INPUT
PREROUTING --> FORWARD --> POSTROUTING
OUTPUT --> POSTROUTING
ipvsadmin/ipvs
ipvsadmin:用户空间的命令行工具,用于管理集群服务;
ipvs:工作内核中netfileter INPUT钩子上;
支持 TCP, UDP, AH, EST, AH_EST, SCTP 等诸多协议;
lvs arch
调度器:director,dispatcher,balancer
RS:Real Server
Client IP:CIP
Director Virtual IP:VIP
Director IP:DIP
Real Server:RIP
lvs type:
lvs-nat MASQUERADE
lvs-dr(direct routing) GATEWAY
lvs-tun(ip tunneling) IPIP
lvs-fullnat
lvs-nat: 隐藏内网主机
多目标的DNAT,通过修改请求报文的目标IP地址(端口)至挑选出的某RS的RIP地址实现转发;
(1)RS和DIP应该使用私有地址,且RS的网关要指向DIP;
(2)请求和响应报文都要经由Director转发; 极高负载场景中,Director可能会成为系统瓶颈;
(3)支持端口映射;
(4)RS可使用任意操作系统;
(5)RS的RIP和Director的DIP必须在同一IP网络;
lvs-dr:direct routing
通过修改请求报文的目标MAC地址进行转发;
Director:VIP,DIP
RS:VIP,RIP
(1)保证前端路由器将目标IP为VIP的请求报文发送给Director;
解决方案:
静态绑定
arptables
修改RS主机内参数
(2)RS的RIP可以使用私有地址;但也可以使用公网地址;
(3)RS和Director必须在同一物理网络中;
(4)请求报文经由Director调度,但响应报文一定不能经由Director;
(5)不支持端口映射;
(6)RS可以是大多数OS;
(7)RS的网关不能指向DIP;
lvs-tun:
不修改请求报文的IP首部,而是通过在原有的IP首部之外(cip <--> vip),再封装一个IP首部;(dip <--> rip);
(1)RIP,DIP,VIP 全需要是公网地址;
(2)RS的网关不能指向DIP;
(3)请求报文必须经由Director调度,响应报文不能经由Director;
(4)不支持端口映射;
(5)RS的OS必须支持隧道功能;
lvs-fullnat:
Director通过同时修改请求报文的目标地址和源地址进行转发;
(1)VIP是公网地址;RIP和DIP尽量使私网地址,二者无需在同一网络中;
(2)RS接收到的请求报文的源地址为DIP,因此要响应给DIP;
(3)请求把稳的响应报文都必须经由Director;
(4)RS可以使用任意OS;
(5)支持端口映射;
http: stateless
session保持:
session绑定:
source ip hash
cookie hash
session集群:
在所以服务器中维护所有的session
session服务器
lvs scheduler:
静态方法:仅根据算法本身进行调度;
RR: round robin,轮调
WRR: weighted rr,加权轮调
SH: source hash,实现 session 保持; 来自同一个IP的请求将始终被调度至同一RS;
DH: destination hash,将对同一个目标的请求始终发往同一个RS;
动态方法:根据算法以及各RS的当前负载状态进行调整;
Overhead
LC: Least Connection
Overhead = Active*256+Inactive
WLC: Weighted LC
Overhead = (Active*256+Inactive)/weight
SED: Shortest Expection Delay
Overhead=(Active+1)*256/we ight
NQ: Never Queue
SED 的改进,将请求优先调度至没有被调度过的Server,之后再用 SED 算法调度
LBLC: Locality-Based LC,动态的DH 算法;
正向代理情形下的cache server的调度;
LBLCR: LBLC with Repication,带复制功能的LBLC算法;
ipvs的集群服务:
(1)一个ipvs主机可以同时定义多个cluster service;
tcp,udp
(2)一个cluster server 上至少应该有一个 real server;
定义时:指明lvs-type,以及lvs scheduler;
ipvsadm的用法:
管理集群服务
ipvsadm -A|E -t|u|f service-address [-s scheduler]
service-address:
tcp: -t ip:port
udp: -u ip:port
fwm: -f mark
-s scheduler:
默认为 WLC
ipvsadm -D -t|u|f service-address
ipvsadm -L|l [options]
ipvsam -C
管理集群服务中的RS
ipvsadm -a|e -t|u|f service-address -r server-address
[-g|i|m] [-w weight] [-x upper] [-y lower]
server-address:
ip[:port]
lvs-type:
-g: gateway,dr
-i: ipip
-m: masquerade,nat
ipvsadm -d -t|u|f service-address -r server-address
查看和清理:
ipvsadm -L|l [options]
-n: number, 基于数字格式显示地址和端口;
-c: connection, 显示ipvs连接;
--stats: 进出站字节统计
--rate: 进出站字节数速率
--exact:显示精确值
ipvsadm -C
保存和重载:
ipvsadm -R
ipvsadm -S [-n]
清空计数器:
ipvsadm -Z [-t|u|f service-address]
LVS的使用的更多相关文章
- 【大型网站技术实践】初级篇:借助LVS+Keepalived实现负载均衡
一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务 ...
- [原]一个针对LVS的压力测试报告
LVS 测试报告 测试计划 基本功能测试 流量压力测试 响应时间测试 配置正确性测试 灾难恢复测试 测试点 基本功能测试 客户端IP地址正确性 RealServer 访问Internet测试(包括Ip ...
- 负载均衡之LVS集群
h3 { color: rgb(255, 255, 255); background-color: rgb(30,144,255); padding: 3px; margin: 10px 0px } ...
- Keepalived+LVS+nginx双机热备
Keepalived简介 什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了, 也就是所谓的高可用或热备,用来防止单点故障的发生. Keepalived采 ...
- 基于keepalived双主模型的高可用LVS
背景知识: keepalived:Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web 服务器从系统中剔除, ...
- LVS原理详解
一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算 ...
- 配置LVS + Keepalived高可用负载均衡集群之图文教程
负载均衡系统可以选用LVS方案,而为避免Director Server单点故障引起系统崩溃,我们可以选用LVS+Keepalived组合保证高可用性. 重点:每个节点时间都同步哈! C++代码 [r ...
- lvs+keepalived
一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2.6.32-279.el6.i686 LVS版本:ipvsadm-1.26 keepalive ...
- CentOS7 编译安装LVS 互为主备 (实测 笔记 Centos 7.0 + ipvsadm 1.27 + keepalived 1.2.15 )
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) LVS服务器(两台): 系统:Centos7.0 64位(LVS+keepalived) LvsMaster:1 ...
- LVS DR模式 RealServer 为 Windows 2008 R2配置
有3篇文档详细介绍 http://kb.linuxvirtualserver.org/wiki/Windows_Servers_in_LVS/DR_and_LVS/TUN_Clusters http: ...
随机推荐
- winform设置超时时间
); //设置超时时间 var completedTask = await Task.WhenAny(new Task(async () => { );//执行的方法示例这里用延迟代替 }), ...
- POJ3190 Stall Reservations 贪心
这是个典型的线程服务区间模型.一些程序要在一段时间区间上使用一段线程运行,问至少要使用多少线程来为这些程序服务? 把所有程序以左端点为第一关键字,右端点为第二关键字从小到大排序.从左向右扫描.处理当前 ...
- Eclipse-Error:笔记-1
ylbtech-Eclipse-Error:笔记-1 1.返回顶部 1. Whitelabel Error PageThis application has no explicit mapping f ...
- js设计模式-组合模式
组合模式是一种专为创建web上的动态用户界面而量身定制的模式.使用这种模式,可以用一条命令在多个对象上激发复杂的或递归的行为.这可以简化粘合性代码,使其更容易维护,而那些复杂行为则被委托给各个对象. ...
- 09-JavaScript高级
今日知识 1. Dom(文档对象模型) 2. Bom(浏览器对象模型) 3. 总结 Dom 1. 获取id为div1的元素对象. * var result=document.getElementByI ...
- BZOJ 1485 卡特兰数 数学
思路: 通过打表观察 这是个卡特兰数 但是它mod的数不是质数 怎么办呢 把所有数分解质因数好了 线性筛出mindiv 顺着mindiv分解质因数 复杂度$O(nlogn)$ //By Sirius ...
- 移动端 fixed 固定按钮在屏幕下方,然后按钮被键盘顶上来...顶上来了有没有~
在移动端 H5 页面开发中,我使用了 fixed 固定某个元素在屏幕的最下方, 这时点击输入框,接着非常非常自然地出现了元素被系统键盘顶起来的情况,如下图. 解决方案: 首先,给页面最外层包裹一层 d ...
- ubuntu16 mysql 远程连接
打开配置文件: sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 将下面一行注释掉: # bind-address = localhost 重启服务 sudo s ...
- 【Five-Minute Share】数据库内存分配设置
对于数据库分配的内存,经常会看到的一条准则是:将服务器75-80%的内存分配给数据库.这是一条比较常见的准则,但并不是绝对的.首先,我们需要保障操作系统运行本身所需的充足内存后,才能去考虑数据库所分配 ...
- 三维重建:深度相机方案对比-KinectFusion的基本原理(尺度)
算法原理请参考此文: kinect fusion 3D重建基本算法 http://log.csdn.net/xiaohu50/article/details/51592503 三维重建为三维空间实 ...