NAT模式·LVS搭建(nginx安裝)
NAT模式·LVS搭建
NET模式下,排程器需要有兩個IP,一個公網IP一個內網IP,真實伺服器只需要內網IP。此架構需要準備三臺虛擬機器。三臺虛擬機器的IP分配如下:
排程器dir:192.168.233.83(內網IP,vmware為NAT模式),192.168.133.0(公網IP,vmware僅主機模式)。
真實伺服器rs1:192.168.233.84(內網IP)
真實伺服器rs2:192.168.233.85(內網IP)
其中排程器上有兩塊網絡卡,作為內網的這塊網絡卡使用的是NAT的網路,而作為“公網”的網絡卡使用的是僅主機網路。需要注意,所謂的公網其實僅僅是模擬的,並不是真正意義上的公網。在配置LVS之前,需要做一些準備工作。首先,真實伺服器rs1(192.168.200.131)
安裝nginx
關閉防火牆、關閉SELinux、配置yum源
nginx安裝
nginx官網地址:nginx: download
這兩個隨便下載一個,傳到你的伺服器上
yum這幾個包
[root@nginx ~]# yum -y install pcre-devel openssl openssl-devel gcc gcc-c++
開啟nginx
[root@nginx ~]# ll 總用量 1056 -rw-------. 1 root root 1311 12月 20 22:36 anaconda-ks.cfg -rw-r--r-- 1 root root 1073364 2月 28 17:32 nginx-1.21.6.tar.gz [root@nginx ~]# tar -zxvf nginx-1.21.6.tar.gz [root@nginx ~]# cd nginx-1.21.6 [root@nginx nginx-1.21.6]# ./configure [root@nginx nginx-1.21.6]# make && make install [root@nginx nginx-1.21.6]# cd /usr/local/nginx/sbin/ [root@nginx sbin]# ./nginx [root@nginx sbin]# netstat -lntp |grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4539/nginx: master
訪問伺服器
用瀏覽器訪問伺服器,然後是這樣的話,那麼你成功了。 192.168.233.83:80埠
把三臺伺服器上的iptables規則清空並儲存,命令如下:
# iptables -F; iptables -t nat -F; service iptables save //三臺機器上都要執行
在dir上安裝ipvsadm,這是實現LVS的核心工具:
[root@dir ~]# yum install -y ipvsadm
繼續在dir上編寫一個指令碼:
[root@dir ~]# vim /usr/local/sbin/lvs_nat.sh #! /bin/bash # director 伺服器上開啟路由轉發功能 echo 1 > /proc/sys/net/ipv4/ip_forward # 關閉icmp的重定向 echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects # 注意區分網絡卡名字 echo 0 > /proc/sys/net/ipv4/conf/ens33/send_redirects echo 0 > /proc/sys/net/ipv4/conf/ens34/send_redirects # director 設定nat防火牆 iptables -t nat -F iptables -t nat -X iptables -t nat -A POSTROUTING -s 192.168.233.0/24 -j MASQUERADE # director設定ipvsadm IPVSADM='/usr/sbin/ipvsadm' $IPVSADM -C $IPVSADM -A -t 192.168.233.83:80 -s wlc -p 300 $IPVSADM -a -t 192.168.233.84:80 -r 192.168.200.131:80 -m -w 1 $IPVSADM -a -t 192.168.233.85:80 -r 192.168.200.132:80 -m -w 1
指令碼編寫完成後,直接執行,命令如下:
[root@dir ~]# bash /usr/local/sbin/lvs_nat.sh
下面測試LVS的效果,如果dir上有Nginx伺服器,需要先把它關閉,否則會影響實驗效果:
[root@dir ~]# killall nginx
為了更容易方便區分,分別需要給84、85設定一個預設主頁,命令如下:
[root@rs1 ~]# echo "rs1" > /usr/share/nginx/html/index.html //84上執行
[root@rs2 ~]# echo "rs2" > /usr/local/nginx/html/index.html //85上執行
在dir上分別訪問兩個rs,如下所示:
[root@dir ~]# curl 192.168.233.84
rs1
[root@dir ~]# curl 192.168.233.85
rs2
這樣就區分了rs1和rs2,然後直接在dir上訪問dir的外網(192.168.147.144),結果如下:
[root@dir ~]# curl 192.168.200.100
rs2
[root@dir ~]# curl 192.168.200.100
rs2
[root@dir ~]# curl 192.168.200.100
rs2
[root@dir ~]# curl 192.168.200.100
rs2
[root@dir ~]# curl 192.168.200.100
rs2
[root@dir ~]# curl 192.168.200.100
rs2
[root@dir ~]# curl 192.168.200.100
rs2
連續多次訪問,一直請求在rs2上,是因為指令碼中有設定-p引數,理論上在300秒內會一直請求在rs2上。重新編輯/usr/local/sbin/lvs_nat.sh指令碼把-p引數刪除,然後再次測試,結果如下:
[root@dir ~]# curl 192.168.200.100
rs2
[root@dir ~]# curl 192.168.200.100
rs1
[root@dir ~]# curl 192.168.200.100
rs2
[root@dir ~]# curl 192.168.200.100
rs1
[root@dir ~]# curl 192.168.200.100
rs2
[root@dir ~]# curl 192.168.200.100
rs1
這樣就做到了均衡訪問。