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