1. 程式人生 > >實現NAT模式的LVS

實現NAT模式的LVS

lvs-nat模式

實驗:實現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 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 
測試:
[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/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實現自簽名證書

[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.crt
SSLCertificateKeyFile /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

技術分享

本文出自 “13147090” 博客,謝絕轉載!

實現NAT模式的LVS