lvs 应用

lvs:根据请求报文的目标 地址端口协议,调度转发到后端主机real server ,根据调度算法挑选rs。

ipvs是用户空间命令行工具,用于管理集群服务,及real server,      在调度器上安装ipvs     yum install   ipvs

vip:接收客户端的请求。                 dip:与rip通信的私网地址。            rip:后端真实的server。。

cip:客户ip。。            

lvs集群类型:1.lvs-nat:修改请求报文的的目标ip多目标ip,的dnat。

   2,  lvs-dr:操作封装请求新的mac地址。

3,lvs-tun:在请求ip报文之外新加一个新的IP首部,

4,lvsfullnat:修改请求源和目标ip。。


lvs-nat:多目标的DNAT,通过将请求的报文目标地址和目标端口修改为某天选的rip和port实现转发。

rip和dip必须在同一网络,且应该使用私网地址,rs网关指向dip

请求和响应报文经由directory转发,directory义形成系统瓶颈,

支持端口映射可修改请求报文的目标port,vs是linux系统,rs可是任意系统。。。


lvs-dr: 通过请求报文重新封装mac首部,进行转发,源mac是dip所在的接口mac,目标mac是某挑选的rs的rip所在mac地址,        源ip端口和目标端口均保持不变,,

directory和各rs都得配置vip:

在内核修改参数以限制arp通告和应答,,arp_announce限制通报为2,,,aip_ignore限制应答为1,,,

rip可使用公网地址和私网地址,单rip和dip要在同一网络,rip网关不能指向dip,以确保响应报文不经由directory。 请求报文经由directory,  不支持端口映射,,



lvs-tun:转发方式;不修改请求报文的ip首部,而在ip报文之外在封装一个ip首部,(源ip为dip,目标ip为rip)

将报文发往挑选出的rs,      rs直接响应给客户端,,,

dip,vip,rip 都应该是公网地址,,,

rs网关不能指向dip,           请求报文经由directory,但响应报文不能经由directory

不支持端口映射,,,rs的os得支持隧道功能,,




lvs-fullnat:通过同时修改请求报文的源ip地址和目标ip地址进行转发,

vip是公网地址rip和dip是私网地址,且通常不在同一ip网络,rip网关通常不会指向dip

rs收到的请求报文源地址是dip,只响应给dip但directory还就将其转发给client,

请求报文和响应报文都经由directory


总结:lvs-nat和lvs-fullnat请求报文和响应报文都经由directory,

lvs-nat网关要指向directory,

lvs-fullnat:rip和dip未必能在同一网络,但要能通信,

lvs-dr,lvs-tun;请求报文要经由directory但响应报文由rs直接发往client,

lvs-dr:通过封装通过封装新的mac首部实现,通往mac网络转发,

lvs-tun:通过源ip报文之外封装新的ip首部实现转发支持远距离通信,


lvs的调度算法:

静态调度算法:rr轮询:  wrr加权轮询,,

sh:来自同一ip地址的请求,将其转发调度第一次匹配到的rs

dh:发往同一地址的请求,将其调度转发至第一次匹配的rs,

动态方法:

lc:最少链接;                             wlc:加权最少链接。

sed:最短期望延迟,,                                        lblc:动态dh算法。      lblcr:带复制功能的lblc算法。。


集群的定义:  ipvsadm                     在directory安装ipvsadm

ipvsadm  -A     -E  |  -t    -f   -s   -p                    (定义集群类型)

-A 添加;;;               -E:编辑修改集群,,     -t;指定类型 t是tcp协议类型      -u:指定udp协议类型。

-s:指定调度算法  默认wlc 加权最少链接。         -p:启动持久链接功能 默认为65秒,,,

-f:指定防火墙标记。。。

示列: ipvsadm -A  -t 192.168.0.99:80 -s rr


管理集群的rs:;;

ipvsadm  -a   |-e    -t     |-u   -f    -r  server-address     -g(dr类型)      -m(nat类型)     -i(tun类型)   -w(权重)

示列:   ipvsadm -a -t 192.168.0.99:80 -r 192.168.0.6 -m


查看:ipvsadm     -Ln

-n:地址和端口输出                                       --exact:展示数字显示精确值。。。

-c:显示链接状态。。                                 --stats:统计数据

--rate:速率数据。。。

ipvsadm  -ln --stats:   查看统计数据                   conns:链接数。                        inpkts:入站报文数

outpkts:出站报文数,                     inbytes:入站字节数,,,          outbytes:出站字节数。。

ipvsadm   -ln   -c :查看谁请求链接过。

ipvsadm -ln   --rate:查看速率:           cps是每秒建立的连接数,                 inpps:每秒入站的报文数

inbps:每秒入站的字节数,,,                               outbps:每秒出站的字节数。。。

ipvsadm -S -n  >  /etc/sysconfig/ipvsadm       保存规则;

ipvsadm  -R   <   /etc/sysconfig/ipvsadm        还原


lvs- nat类型:配置                sysctl  -w    net.ipv4.ip_forward=1     打开核心转发。。。

rip和dip在同一网络。 rs网关指向dip,vs主机打开核心转发。。()

vs主机可来自外网的客户端访问,-t  tcp协议地址指向vs的外网地址。

ipvsadm -A -t 192.168.1.5:80  -s rr      指定调度类型为轮询。 -s   wrr 加权轮询。。。。-t指定外网地址tcp协议。。

ipvsadm -a  -t  192.168.1.5:80  -r 192.168.237.6 -m      指定后端主机  -m 类型为nat类型。。

ipvsadm -a  -t  192.168.0.5:80  -r  192.168.237.9  -m        

如果rs都宕了指定本机接收请求:ipvsadm -a -t 192.168.0.5:80 -r 127.0.0.1 -g




dr类型配置:   dr模型每个主机需要配置vip, ,在各rs限制arp广播通告,出站和入站经过lo:0。。在lvs调度器上配置虚拟网卡接口为  ens33:0。(arp_ignore忽略应答为1,, arp_announce忽略通告为2,)。各rs请求经过vs主机。。。应答不需要经过vs主机。。   rs的rip可使用私网地址,也可使用公网地址。rip与dip在同一网络。rip网关不能指向dip。

rs主机IP为:192.168.0.5                   虚拟ip为:192.168.0.99

rs主机为:192.168.0.6 和 192.168.0.9

1.先在个主机配置虚拟ip,,

lvs主机:;     ifconfig ens33:0 192.168.0.99 netmask 255.255.255.255 broadcast 192.168.0.99 up

rs主机:ifconfig lo:0 192.168.0.99 netmask 255.255.255.255 broadcast 192.168.0.99 up

2. 在每个real server上配置禁止应答和禁止通告。。/proc/sys/net/ipv4/conf/all/(arp_announce为1和arp_ignore为2)

3.  在lvs主机配置集群调度:

ipvsadm -A  -t  192.168.0.99:80  -s  rr    配置-t指定tcp协议虚拟ip。 -s 指定调度算法轮询。。

ipvsadm -a -t 192.168.0.99:80  -g     指定虚拟ip    -g类型为dr类型。

ipvsadm -a   -t   192.168.0.99:80   -g        



配置80和443端口绑定:

ipvs代理指定80端口和443一块代理请求。基于防火墙mangle表打标功能.。。

配制ssl加密,没有ssl.conf 配置文件安装mod_ssl模块。。

在ca上配置创建公钥,切换到1 、/etc/pki/CA目录。。(umask 077; openssl genrsa -out  private/cakey.pem  2048)

 openssl req -new  -x509   -key  private/cskey.pem -out  cacert.pem -days 365     配置公钥

创建文件:touch  index.txt                  echo 01 >  serial

2.在rs上配置私钥,(umask 077; openssl genrsa -out httpd.key 2048)

openssl req -new -key httpd.key -out httpd.csr   

把配置的私钥httpd.csr  传给 ca让签署:scp   httpd.csr   192.168.0.5:/tmp   

3,CA签署:openssl ca -in htpd.csr  -out httpd.crt  -days  365


配置完成后把ca的签署的证书httpd.crt 发给rs:        后端服务器httpd.crt和自己的httpd.key放置自己的网页目录,然后配置/etc/httpd/conf.d/ssl.conf 文件。。


配置ssl.conf文件。。


指定签署的证书和私钥位置。。


在vs配置防火墙标记。

iptables -t mangle -A PREROUTING -d 192.168.0.99 -p tcp -m multiport --dport 80,443 -j MARK --set-mark 3

然后配置集群类型:   ipvsadm -A  -f  3   -s   rr    防火墙标记指定三。调度类型为轮询。。

ipvsadm -a  -f  3  -r  192.168.0.6  -g     添加真实的server,指定类型为dr    -g

ipvsadm -a  -f  3  -r  192.168.0.9   -g   



lvs  persistence:  持久链接。。  实现无论使用任何调度算法,在一段时间内能够实现将,来自同一ip的主机,始终发往同一个rs。。   -p    就是启用持久链接功能。。

ipvsadm -A |E  -t  |u  | -f   server-address | [-s  scheduler]  [-p  ]



基于防火墙的持久链接:   ipvsadm -A  -f   3  -s   rr  -p       持久链接默认为360秒。

每个客户端持久链接,0端口定义集群服务,客户端对所有的请求统统调度后端主机,,

ipvsadm -A  -t   192.168.0.99:0  -s rr  -p     

你可能感兴趣的:(lvs 应用)