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: ...
随机推荐
- bootstrap-table 表头和内容对不齐
问题: bootstrap-table.js 找到 BootstrapTable.prototype.resetView if (this.options.showHeader && ...
- Dockerfile分离构建LNMP环境部署wordpress
最近忙着写自己的项目,也把一个站点的bbs论坛打算迁移到Docker中,测试没发现啥大问题.在单台上面的架构如下:(往后我们也是要讲到compose和swarm调度的慢慢来) 1.首先我们先安装一下d ...
- Java经典线程同步问题------生产者与消费者
先上代码 class Test { public static void main(String []args) { Queue q=new Queue(); Producer p=new Produ ...
- Map 遍历取值及jstl的取值
Map 遍历取值及jstl的取值 学习了:http://blog.csdn.net/yanjiaye520/article/details/17354239 1.Java map的便利取值 Java代 ...
- 歌乐电子一道非常easy的笔试题目居然搞错了!!!
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjI0NzQ2Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...
- 不使用系统自带的button
// // LKTitleBtn.m // 01-彩票 // // Created by Lenny on 3/17/15. // Copyright (c) 2015 Lenny. All ...
- Node.js:函数
ylbtech-Node.js:函数 1.返回顶部 1. Node.js 函数 在JavaScript中,一个函数可以作为另一个函数的参数.我们可以先定义一个函数,然后传递,也可以在传递参数的地方直接 ...
- 当使用Spring MVC @Valid对输入框进行验证的时候,可能会遇到以下的异常:Neither BindingResult nor plain target object for bean name ‘mybean’ available as request attribute
转自:https://www.cnblogs.com/wenhulu/p/5555457.html 当使用Spring MVC @Valid对输入框进行验证的时候,可能会遇到以下的异常: Neithe ...
- 随时随地日志Debug
对于一个应用程序而言,Log必不可少,但是有些时候仅仅想看下输出,如果加log的话就显得比较麻烦,这个时候就用到了Debug.WriteLine("测试下,你好,非常棒,牛叉!") ...
- 20. Valid Parentheses[E]有效的括号
题目 Given a string containing just the characters '(',')','[',']','{' and '}',determine if the input ...