当前位置: 移动技术网 > 科技>操作系统>Linux > LVS的使用

LVS的使用

2018年10月30日  | 移动技术网科技  | 我要评论

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]

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网