实验:实现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服务器上配置策略:
[root@centos7 ~]#echo 1 > /proc/sys/net/ipv4/ip_forward[root@centos7 ~]#vim /etc/sysctl.conf 为了方便可以直接修改配置文件永久保存net.ipv4.ip_forward=1[root@centos7 ~]#ipvsadm -A -t 172.18.77.77:80 -s rr 加的vs的VIP地址[root@centos7 ~]#ipvsadm -a -t 172.18.77.77:80 -r 192.168.77.7 -m 管理集群服务[root@centos7 ~]#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最后测试:[root@centos6 ~]#curl 172.18.77.77这是rs2机器[root@centos6 ~]#curl 172.18.77.77这是rs-1机器[root@centos6 ~]#curl 172.18.77.77这是rs2机器[root@centos6 ~]#curl 172.18.77.77这是rs-1机器现在修改策略:采用权重[root@centos7 ~]#ipvsadm -C 清空策略[root@centos7 ~]#ipvsadm -Ln 查看定义的策略IP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn[root@centos7 ~]#ipvsadm -A -t 172.18.77.77:80 -s wrr 加权轮询[root@centos7 ~]#ipvsadm -a -t 172.18.77.77:80 -r 192.168.77.6 -m -w 3 权重为3,默认不写就是1次[root@centos7 ~]#ipvsadm -a -t 172.18.77.77:80 -r 192.168.77.7 -m [root@centos7 ~]#ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 172.18.77.77:80 wrr-> 192.168.77.6:80 Masq 3 0 0 -> 192.168.77.7:80 Masq 1 0 0 测试:[root@centos6 ~]#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/ipvsadmipvsadm-save -n > /etc/sysconfig/ipvsadmipvsadm -S > /etc/sysconfig/ipvsadmsystemctl stop ipvsadm.service 停止服务也会保存定义的策略,同时清空策略重载:ipvsadm-restore < /etc/sysconfig/ipvsadmipvsadm -R < /etc/sysconfig/ipvsadmsystemctl restart ipvsadm.service 当服务开启时,定义的策略会打开用ipvsadm -Ln查看
NAT模型实现https负载均衡集群
注意:RS: 都要提供同一个私钥和同一个证书
在real server实现自签名证书
[root@ZhangLin ~]#cd /etc/pki/tls/certs/[root@ZhangLin certs]#make httpd.crt 为了将私钥和证书分开可以这样做,不分开的话是.pem结尾[root@ZhangLin certs]#mv httpd.* /etc/httpd/conf.d/[root@ZhangLin certs]#cd /etc/httpd/conf.d/[root@ZhangLin conf.d]#yum install -y mod_ssl 安装模块 注意:这里的安装可能有epel源的干扰,可先关闭epel源root@ZhangLin conf.d]#vim ssl.conf ×××和私钥路径,其他默认不变SSLCertificateFile /etc/httpd/conf.d/httpd.crtSSLCertificateKeyFile /etc/httpd/conf.d/httpd.key [root@ZhangLin conf.d]#systemctl restart httpd现在可以测试:[root@ZhangLin conf.d]#curl -k https://192.168.77.7这是rs-1机器[root@centos6 ~]#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服务[root@centos7 ~]#ipvsadm -A -t 172.18.77.77:443 -s rr[root@centos7 ~]#ipvsadm -a -t 172.18.77.77:443 -r 192.168.77.7 -m[root@centos7 ~]#ipvsadm -a -t 172.18.77.77:443 -r 192.168.77.6 -m测试:[root@centos6 ~]#curl -k https://172.18.77.77这是rs2机器[root@centos6 ~]#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