1. 程式人生 > >Nginx作為負載均衡服務

Nginx作為負載均衡服務

隨著企業的業務增長,面對客戶端海量的請求訪問,對服務端造成大量的併發,服務的響應速度就會減慢。為了解決這個問題,企業往往會增加服務的數量,同時也會在前端設定一個負載均衡,來均分這些服務的請求,以提升服務的吞吐率和服務的效能。如果其中一個服務因為併發請求過高而無法繼續提供服務,負載均衡就會剔除該服務,其他服務還是會正常執行。

服務端(IP:172.25.0.1

1、啟動Nginx服務(先啟動Nginx程序服務,否則後面重新載入Nginx服務時會報錯)

systemctl start nginx

2、複製三份Nginx配置檔案,分別命名為 server1.confserver2.conf

server3.conf

cd /etc/nginx/conf.d/
#切換到Nginx預設配置檔案目錄

cp default.conf server1.conf
#複製一份配置檔案,改名為server1.conf
 
cp default.conf server2.conf
#複製一份配置檔案,改名為server2.conf

cp default.conf server3.conf
#複製一份配置檔案,改名為server3.conf

3、修改server1.conf配置檔案,將埠號改為8001,訪問路徑改為 /opt/server1

vim /etc/nginx/conf.d/server1.conf
server {
    listen       8001;     #修改埠號為8001
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /opt/server1;  #設定訪問路徑為/opt/server1
        index  index.html index.htm;
    }

   修改serve2.conf配置檔案,將埠號改為8002,訪問路徑改為 /opt/server2

vim /etc/nginx/conf.d/server2.conf
server {
    listen       8002;        #設定監聽埠為8002
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /opt/server2;      #設定訪問路徑為/opt/server2
        index  index.html index.htm;
    }

   修改server3.conf配置檔案,將埠號改為8003,訪問路徑改為 /opt/server3

vim /etc/nginx/conf.d/server3.conf
server {
    listen       8003;      #設定監聽埠為8003
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {  
        root   /opt/server3;      #設定訪問路徑為/opt/server3
        index  index.html index.htm;
    }

4、在三個訪問路徑下建立內容不同的HTML檔案

mdkir /opt/server1   #在/opt目錄下建立server1目錄
vim /opt/server1/index.html
<html>
<head>
        <meta charset="utf-8">
        <title>server1</title>
</head>
<h1>8001埠</h1>
</body>
</html>
mdkir /opt/server2   #在/opt目錄下建立server2目錄
vim /opt/server2/index.html
<html>
<head>
        <meta charset="utf-8">
        <title>server2</title>
</head>
<h1>8002埠</h1>
</body>
</html>
mdkir /opt/server3   #在/opt目錄下建立server3目錄
vim /opt/server3/index.html
<html>
<head>
        <meta charset="utf-8">
        <title>server3</title>
</head>
<h1>8003埠</h1>
</body>
</html>

5、檢查Nginx配置語法

nginx -tc /etc/nginx/nginx.conf 

6、過載入Nginx服務並且重新啟動Nginx服務

nginx -s reload -c /etc/nginx/nginx.conf
#重新載入Nginx服務


systemctl restart nginx
#重新啟動Nginx服務

7、檢查對應的8001,8002,8003埠是否開啟

ss -luntp | grep nginx         #檢視Nginx服務的埠程序
tcp    LISTEN     0      128       *:80                    *:*                   users:(("nginx",pid=2025,fd=6),("nginx",pid=2024,fd=6))
tcp    LISTEN     0      128       *:8001                  *:*                   users:(("nginx",pid=2025,fd=7),("nginx",pid=2024,fd=7))
tcp    LISTEN     0      128       *:8002                  *:*                   users:(("nginx",pid=2025,fd=8),("nginx",pid=2024,fd=8))
tcp    LISTEN     0      128       *:8003                  *:*                   users:(("nginx",pid=2025,fd=9),("nginx",pid=2024,fd=9))

上面看到服務已經開啟,可以在瀏覽器端訪問  172.25.0.1:8001(8002、8003)/index.conf 

 

負載均衡配置端(IP:172.25.0.5

1、啟動Nginx程序服務

systemctl start nginx

2、修改Nginx配置檔案

vim /etc/nginx/conf.d/default.conf
upstream vincen{               #負載均衡配置,名為vincen的服務池
	server 172.25.0.1:8001;
	server 172.25.0.1:8002;
	server 172.25.0.1:8003;
}

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
	proxy_pass http://vincen;     # 跳轉配置,訪問跳轉到vincen的服務池裡
	include proxy_params;         #常用的代理引數選項

    }
vim /etc/nginx/proxy_params  #將proxy_params存放在/etc/nginx目錄下
proxy_redirect default;  
#跳轉重定向配置
            
proxy_set_header Host $http_host;     
#新增host的頭資訊,並設定http_host變數

proxy_set_header X-Real-IP $remote_addr;   
#在前段將ip資訊帶到後端

proxy_connect_timeout 30;
#預設的請求超時配置,TCP請求超時30s

proxy_send_timeout 60;
#服務端請求完後,響應給客戶端的時間

proxy_read_timeout 60;
#已經建立好連線的情況下,伺服器接收請求後在處理請求的時間

proxy_buffer_size 32k;
#設定緩衝區的大小為32k 

proxy_buffering on;
#Nginx在緩衝區等待後端相應的資訊再發送給前端

proxy_buffers 4 128k;
#設定緩衝區的數量以及總大小

proxy_busy_buffers_size 256k;
#設定緩衝區最大為256k

proxy_max_temp_file_size 256k;
#臨時檔案的最大為256k

 3、檢查Nginx配置語法

nginx -tc /etc/nginx/nginx.conf 

4、重新載入Nginx服務

nginx -s reload -c /etc/nginx/nginx.conf 

5、在瀏覽器訪問 172.25.0.5  就會出現剛剛訪問172.25.0.1:8001(8002、8003)/index.conf一樣的情況(這是訪問本機伺服器的時候跳轉到那三個訪問埠

這時候回到服務端的Linux中,使用iptables規則關掉Nginx的其中一個埠

iptables -I INPUT -p tcp --dport 8002 -j DROP

然後再在瀏覽器重新整理,就不會在出現內容為“8002埠”的介面了