1. 程式人生 > 其它 >NAT模式·LVS搭建(nginx安裝)

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)

rs2(192.168.200.132)上要把內網的閘道器設定為dir的內網IP(192.168.200.130),否則實驗無法成功。

安裝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

這樣就做到了均衡訪問。