1. 程式人生 > 其它 >centos nginx重啟_Nginx+Keepalived 實現 Nginx 高可用負載均衡

centos nginx重啟_Nginx+Keepalived 實現 Nginx 高可用負載均衡

技術標籤:centos nginx重啟centos 重啟nginxkeepalive+nginx實現負載均衡高可用nginx 負載均衡 404nginx 負載均衡 找不到cssnginx代理網絡卡

猿碼利劍

出處 :http://dwz.date/a85w
一、說明

在架構設計中,可以利用 Nginx 的反向代理和負載均衡實現後端應用的高可用性,同時我們還需要考慮 Nginx 的單點故障。真正做到架構高可用性。 主要考慮以下幾點: 1、Nginx 服務因為意外現象掛掉 2、伺服器宕機導致Nginx 不可用 二、環境準備

準備四臺機器,兩臺 Nginx 主備,兩臺 Web
環境名稱IP地址
環境介紹
nginx備+keepalived 主

192.168.182.128

反向代理 nginx高可用主;VIP:192.168.182.230

nginx 主+keepalived主

192.168.182.129

反向代理 nginx高可用備;VIP:192.168.182.230

web 應用伺服器

192.168.182.130

web應用(apache)

web 應用伺服器192.168.182.131web應用(apache)
三、安裝配置相關服務 1、安裝 Nginx(192.168.182.128,192.168.182.129) 新增 Nginx 到 YUM 源
rpm -Uvhhttp://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
安裝 Nginx
yuminstall-y nginx
啟動服務
systemctlstartnginx.service
2、安裝 Web 服務,Apache(192.168.182.130,192.168.182.131)
# 關閉防護牆
systemctl stop firewalld.service
systemctlenablefirewalld.service

# 安裝
yum -y install httpd
# 修改預設頁(192.168.182.130)
echo'192.168.182.130'> /usr/share/httpd/noindex/index.html

# 修改預設頁(192.168.182.131)
echo'192.168.182.131'> /usr/share/httpd/noindex/index.html


# 啟動服務
systemctl start httpd.service
3、配置 Nginx 反向代理,實現負載均衡 配置檔案
usernginx;
worker_processesauto;
error_log/var/log/nginx/error.log;
pid/run/nginx.pid;
include/usr/share/nginx/modules/*.conf;
events{
worker_connections1024;
}
http{
log_formatmain'$remote_addr-$remote_user[$time_local] "$request" '
'$status$body_bytes_sent"$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log/var/log/nginx/access.log main;
sendfileon;
tcp_nopushon;
tcp_nodelayon;
keepalive_timeout65;
types_hash_max_size2048;
include/etc/nginx/mime.types;
default_typeapplication/octet-stream;
#include /etc/nginx/conf.d/*.conf;
upstreammyServer {
server192.168.182.130:80weight=1;
server192.168.182.131:80weight=1;
}
server{
listen80default_server;
listen[::]:80default_server;
server_name_;
# root /usr/share/nginx/html;
# include /etc/nginx/default.d/*.conf;
location/ {
proxy_passhttp://myServer;
indexindex.html index.htm;
}
error_page404/404.html;
location= /40x.html {
}
error_page500502503504/50x.html;
location= /50x.html {
}
}
}
重啟Nginx 伺服器
systemctlrestartnginx.service
測試
C:\Users\29209>curl192.168.182.128
192.168.182.130

C:\Users\29209>curl192.168.182.128
192.168.182.131

C:\Users\29209>curl192.168.182.128
192.168.182.130

C:\Users\29209>curl192.168.182.128
192.168.182.131
3、安裝配置keepalived,實現高可用(192.168.182.130,192.168.182.131)
yuminstall-y keepalived
配置主
! Configuration Fileforkeepalived

global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server192.168.200.1
smtp_connect_timeout30
router_id nginx01# router_id 唯一識別符號
vrrp_skip_check_adv_addr
# vrrp_strict # 如果訪問不了VIP,就去掉,這裡我註釋掉了
vrrp_garp_interval0
vrrp_gna_interval0
}

vrrp_script check_nginx {
script"/etc/keepalived/chknginx.sh"#nginx服務檢查指令碼
interval1
weight-2
}

vrrp_instance VI_1 {
state MASTER
interface ens33# 網絡卡名
virtual_router_id52# 預設為51 配置完發現主備切換有問題 更改為52 發現好了 原因未知
priority150# 主備的優先順序priority,數字越大,優先順序越高
advert_int1# 檢查時間1秒
authentication {
auth_type PASS
auth_pass1111
}
track_script {
check_nginx
}

virtual_ipaddress {
192.168.182.230/24dev ens33 label ens33:7#vip地址
}
}
}
檢測指令碼檔案/etc/keepalived/chknginx.sh
#!/bin/bash
# auto check nginx process
# 20200425 by zxg

killall -0 nginx
if[[ $? -ne 0 ]];then
systemctl stop keepalived.service#這個這裡應該有問題,yum安裝的怎麼停掉服務那?
fi
配置備
! Configuration Fileforkeepalived

global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server192.168.200.1
smtp_connect_timeout30
router_id nginx01# router_id 唯一識別符號
vrrp_skip_check_adv_addr
# vrrp_strict # 如果訪問不了VIP就去掉,這裡我註釋掉了
vrrp_garp_interval0
vrrp_gna_interval0
}

vrrp_script check_nginx {
script"/etc/keepalived/chknginx.sh"#nginx服務檢查指令碼
interval1
weight-2
}

vrrp_instance VI_1 {
state BACKUP
interface ens33#網絡卡
virtual_router_id52#預設為51 配置完發現主備切換有問題 更改為52 發現好了 原因未知
priority100#主備的優先順序priority
advert_int1#檢查時間1秒
authentication {
auth_type PASS
auth_pass1111
}
track_script {
check_nginx
}

virtual_ipaddress {
192.168.182.230/24dev ens33 label ens33:7#vip地址
}
}
}
重啟 keepalived 服務
systemctlrestartkeepalived.service
測試負載均衡 訪問 VIP:192.168.182.230
C:\Users\29209>curl192.168.182.230
192.168.182.130

C:\Users\29209>curl192.168.182.230
192.168.182.131

C:\Users\29209>curl192.168.182.230
192.168.182.130

C:\Users\29209>curl192.168.182.230
192.168.182.131
測試高可用
#停掉nginx,因為有檢測指令碼,自然也會停掉keepalived服務
systemctl stop nginx
#當然也可以直接stopkeepalived服務
systemctl stop keepalived.service

#接下來就檢視VIP是否飄逸到備機器上,但是對客戶而已,是沒有任何影響,依舊是訪問VIP
ifconfig ens33:7

掃碼關注我們

專注於運維開發

5edec75b61a49fe202622c02f95ef462.png 231b27e5d9d41e44b794a3150e552dfa.gif

●招人(內推崗)

●資料分享

●zhao'ren

●停課不停學,線上免費課程在家也能輕鬆學習