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: ...
随机推荐
- 基于Dynamic Proxy技术的方法AOP拦截器开发
在面向对象编程中,会用到大量的类,并且会多次调用类中的方法.有时可能需要对这些方法的调用进行一些控制.如在权限管理中,一些用户没有执行某些方法的权限.又如在日志系统中,在某个方法执行完后,将其执行的结 ...
- UVA 10888 - Warehouse(二分图完美匹配)
UVA 10888 - Warehouse option=com_onlinejudge&Itemid=8&page=show_problem&category=562& ...
- NYOJ_268_荷兰国旗问题
荷兰国旗问题 时间限制:3000 ms | 内存限制:65535 KB 难度:1 描写叙述 荷兰国旗有三横条块构成,自上到下的三条块颜色依次为红.白.蓝.现有若干由红.白.蓝三种颜色的条块序列.要 ...
- Windows下Go语言 幽灵蛛的配置
这里是环境变量 目录结构 在这其中,我主要需要观察src
- 聚类(三)FUZZY C-MEANS 模糊c-均值聚类算法——本质和逻辑回归类似啊
摘自:http://ramsey16.net/%E8%81%9A%E7%B1%BB%EF%BC%88%E4%B8%89%EF%BC%89fuzzy-c-means/ 经典k-均值聚类算法的每一步迭代中 ...
- java.sql.SQLException: Field 'id' doesn't have a default value解决方案
转自:https://blog.csdn.net/xinghuo0007/article/details/51810867 自增长:java.sql.SQLException: Field 'id' ...
- 如何提升SQL语句的查询性能
在对数据库进行操作时,如果SQL语句书写不当,对程序的效率会造成很大影响. 提高SQL效率可以从一下几个方面入手: 1,数据库设计与规划 Primary Key字段的长度尽量小,能用small int ...
- Mybatis中resultMap的作用-解决实体类属性名和数据库字段不一致
解决实体类属性名和数据库字段不一致
- 28. Implement strStr()[E]实现strStr()
题目 Implement strStr(). Return the index of the first occurrence of needle in haystack, or -1 if need ...
- 134. Gas Station leetcode
134. Gas Station 不会做. 1. 朴素的想法,就是针对每个位置判断一下,然后返回合法的位置,复杂度O(n^2),显然会超时. 把这道题转化一下吧,求哪些加油站不能走完一圈回到自己,要求 ...