实现NAT模式的LVS
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现NAT模式的LVS相关的知识,希望对你有一定的参考价值。
环境:先将网咯拓扑图搭建好,关闭iptables和selinux,在vs服务器上和real server上确定能访问web服务(httpd)
四台主机,两台real server服务器,一台客户端机,一台vs机器
客户端的地址:172.18.77.66
vs服务器地址:VIP地址:172.18.77.77
DIP地址:192.168.77.77
网路拓扑:
在vs服务器上配置策略:
[[email protected] ~]#echo 1 > /proc/sys/net/ipv4/ip_forward [[email protected] ~]#vim /etc/sysctl.conf 为了方便可以直接修改配置文件永久保存 net.ipv4.ip_forward=1 [[email protected] ~]#ipvsadm -A -t 172.18.77.77:80 -s rr 加的vs的VIP地址 [[email protected] ~]#ipvsadm -a -t 172.18.77.77:80 -r 192.168.77.7 -m 管理集群服务 [[email protected] ~]#ipvsadm -a -t 172.18.77.77:80 -r 192.168.77.6 -m RS服务器地址:rs1 : 192.168.77.7 rs2 : 192.168.77.6 在rs服务器上都配有返回数据的网关是vs调度器的内网地址 DIP: route add default gw 192.168.77.77 最后测试: [[email protected] ~]#curl 172.18.77.77 这是rs2机器 [[email protected] ~]#curl 172.18.77.77 这是rs-1机器 [[email protected] ~]#curl 172.18.77.77 这是rs2机器 [[email protected] ~]#curl 172.18.77.77 这是rs-1机器 现在修改策略:采用权重 [[email protected] ~]#ipvsadm -C 清空策略 [[email protected] ~]#ipvsadm -Ln 查看定义的策略 IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn [[email protected] ~]#ipvsadm -A -t 172.18.77.77:80 -s wrr 加权轮询 [[email protected] ~]#ipvsadm -a -t 172.18.77.77:80 -r 192.168.77.6 -m -w 3 权重为3,默认不写就是1次 [[email protected] ~]#ipvsadm -a -t 172.18.77.77:80 -r 192.168.77.7 -m [[email protected] ~]#ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.18.77.77:80 wrr -> 192.168.77.6:80 Masq 3 0 0 -> 192.168.77.7:80 Masq 1 0 0 测试: [[email protected] ~]#for i in {1..10};do curl 172.18.77.77;done 这是rs-1机器 这是rs2机器 这是rs2机器 这是rs2机器 这是rs-1机器 这是rs2机器 这是rs2机器 这是rs2机器 这是rs-1机器 这是rs2机器
测试结果表明,由于加了权重rs2的服务器处理的数据是rs1处理数据的三倍(3:1)
保存及重载规则:
cat /usr/lib/systemd/system/ipvsadm.service 保存:建议保存至/etc/sysconfig/ipvsadm ipvsadm-save -n > /etc/sysconfig/ipvsadm ipvsadm -S > /etc/sysconfig/ipvsadm systemctl stop ipvsadm.service 停止服务也会保存定义的策略,同时清空策略 重载: ipvsadm-restore < /etc/sysconfig/ipvsadm ipvsadm -R < /etc/sysconfig/ipvsadm systemctl restart ipvsadm.service 当服务开启时,定义的策略会打开用ipvsadm -Ln查看
NAT模型实现https负载均衡集群
注意:RS: 都要提供同一个私钥和同一个证书
在real server实现自签名证书
[[email protected] ~]#cd /etc/pki/tls/certs/ [[email protected] certs]#make httpd.crt 为了将私钥和证书分开可以这样做,不分开的话是.pem结尾 [[email protected] certs]#mv httpd.* /etc/httpd/conf.d/ [[email protected] certs]#cd /etc/httpd/conf.d/ [[email protected] conf.d]#yum install -y mod_ssl 安装模块 注意:这里的安装可能有epel源的干扰,可先关闭epel源 [email protected] conf.d]#vim ssl.conf 修改证书和私钥路径,其他默认不变 SSLCertificateFile /etc/httpd/conf.d/httpd.crt SSLCertificateKeyFile /etc/httpd/conf.d/httpd.key [[email protected] conf.d]#systemctl restart httpd 现在可以测试: [[email protected] conf.d]#curl -k https://192.168.77.7 这是rs-1机器 [[email protected] ~]#curl -k https://192.168.77.7在客户端也可以直连测试 这是rs-1机器
上述是一台rs服务器,如果是同一版本系统(centos 7或centos 6)可以直接复制到其他机器;
由于做实验没在同一操作系统上所以还得在做一次
scp httpd.key httpd.crt 192.168.77.6:/etc/httpd/conf.d/
在centos 6上也要安装ssl_mod模块,和上述一样修改证书和私钥文件路径,重启服务测试
在vs服务器上添加real server服务 [[email protected] ~]#ipvsadm -A -t 172.18.77.77:443 -s rr [[email protected] ~]#ipvsadm -a -t 172.18.77.77:443 -r 192.168.77.7 -m [[email protected] ~]#ipvsadm -a -t 172.18.77.77:443 -r 192.168.77.6 -m 测试: [[email protected] ~]#curl -k https://172.18.77.77 这是rs2机器 [[email protected] ~]#curl -k https://172.18.77.77 这是rs-1机器
httpd和https 是同类型的服务,实现统一调度,集群为一个服务,所以将他们不同的端口打包成一个服务,需要使用mark标记
借助于防火墙标记来分类报文,而后基于标记定义集群服务;可将多个不同的应用使用同一个集群服务进行调度
实现方法:
在Director主机打标记:
iptables -t mangle -A PREROUTING -d 172.18.77.77 -p tcp –m multiport --dports 80,443 -j MARK --set-mark 18
-d 后面是目标地址,vip的地址
在Director主机基于标记定义集群服务:
ipvsadm -A -f 18 默认是wlc算法,也可以指定:后面加上 -s wrr
然后将rs服务加进来
ipvsadm -a -f 18 -r 192.168.77.7 -g -w 3 加权重 ipvsadm -a -f 18 -r 192.168.77.6
本文出自 “13147090” 博客,谢绝转载!
以上是关于实现NAT模式的LVS的主要内容,如果未能解决你的问题,请参考以下文章