Nginx作為負載均衡服務
隨著企業的業務增長,面對客戶端海量的請求訪問,對服務端造成大量的併發,服務的響應速度就會減慢。為了解決這個問題,企業往往會增加服務的數量,同時也會在前端設定一個負載均衡,來均分這些服務的請求,以提升服務的吞吐率和服務的效能。如果其中一個服務因為併發請求過高而無法繼續提供服務,負載均衡就會剔除該服務,其他服務還是會正常執行。
服務端(IP:172.25.0.1)
1、啟動Nginx服務(先啟動Nginx程序服務,否則後面重新載入Nginx服務時會報錯)
systemctl start nginx
2、複製三份Nginx配置檔案,分別命名為 server1.conf,server2.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埠”的介面了