欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

keepalived+nginx實(shí)現(xiàn)雙服務(wù)器主備方案

 更新時(shí)間:2024年12月27日 09:22:46   作者:Should·L  
本文主要介紹了使用keepalived和nginx實(shí)現(xiàn)雙服務(wù)器主備方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、keepalived + nginx 主備方案

1. 架構(gòu)圖

服務(wù)器為CentOS 7系統(tǒng)

在這里插入圖片描述

2. nginx 部署

兩臺(tái)服務(wù)器應(yīng)用同樣的配置,僅HTML文件不一樣。

2.1 服務(wù)器環(huán)境初始化

(1)時(shí)間同步

# 安裝時(shí)間同步工具ntpdata
yum -y install ntp ntpdate

# 同步網(wǎng)絡(luò)時(shí)間
ntpdate cn.pool.ntp.org

(2)創(chuàng)建一個(gè)cron任務(wù),設(shè)置每天同步服務(wù)器時(shí)間

# 打開cron作業(yè)任務(wù)列表的編輯器
crontab -e
# 每天0點(diǎn)同步一次
* 00 * * *  /usr/sbin/ntpdate cn.pool.ntp.org 

(3)關(guān)閉防火墻

在 windows 系統(tǒng)中訪問 linux 中 nginx,默認(rèn)不能訪問的,因?yàn)榉阑饓栴} (1)關(guān)閉防火墻 (2)開放訪問的端口號(hào).

iptables和firewalld是兩種不同的防火墻,兩個(gè)都關(guān)閉,有哪個(gè)關(guān)哪個(gè)。

systemctl stop iptables    
systemctl stop firewalld

# 兩種防火墻,個(gè)人比較習(xí)慣使用iptables,后面做策略也是使用iptables;沒有的話可以安裝一個(gè);
yum install iptables-services   #安裝這個(gè)比較方便管理。

或者,設(shè)置開放訪問端口號(hào)

# 查看開放的端口號(hào)
firewall-cmd --list-all

# 設(shè)置開放的端口號(hào)
firewall-cmd --add-service=http –permanent 
firewall-cmd --add-port=80/tcp --permanent 

# 重啟防火墻
firewall-cmd -reload

2.2 安裝 nginx

(1)安裝依賴包

pcre-8.3.7.tar.gz, openssl-1.0.1t.tar.gz, zlib-1.2.8.tar.gz

  • nginx的http模塊使用pcre來解析正則表達(dá)式,需要在linux上安裝pcre
  • nginx使用zlib對(duì)http包的內(nèi)容進(jìn)行g(shù)zip,需要在linux上安裝安裝zlib
  • 安裝openssl庫,讓 nginx 支持 https(即在ssl協(xié)議上傳輸http)
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

(2)下載并解壓安裝包

# 創(chuàng)建一個(gè)nginx文件夾
cd /usr/local
mkdir nginx
cd nginx

# 下載tar包
wget http://nginx.org/download/nginx-1.22.1.tar.gz

# 解壓
tar -xvf nginx-1.22.1.tar.gz

# 進(jìn)入nginx-1.22目錄
cd nginx-1.22.1

(2)添加 ssl 證書模塊

./configure --with-http_stub_status_module --with-http_ssl_module

(3)編譯安裝

  • -j 4 : 此參數(shù)代表用4核心編譯
make -j 4 && make install

(4)配置 nginx.conf

  • 如果可以正常啟動(dòng),正常訪問頁面的話可以忽略此步驟
# root html; 改成自己的路徑 /usr/local/nginx/html;
# index 后面加一個(gè) index.php 否則無法顯示網(wǎng)頁內(nèi)容,報(bào)403錯(cuò)誤的。
    location / {
       root   /usr/local/nginx/html;
       index index.html index.php index.htm,;
  • 關(guān)閉顯示nginx版本號(hào)(此內(nèi)容在http模塊下找個(gè)地方寫)
server_tokens off;

(5)校驗(yàn)配置文件是否正確

/usr/local/nginx/sbin/nginx -t 

# 看到如下顯示代表正常:
# nginx.conf syntax is ok
# nginx.conf test is successful

(6)啟動(dòng)nginx

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
重新加載配置命令:
/usr/local/nginx/sbin/nginx -s reload

(7)驗(yàn)證

瀏覽器頁面輸入自己的服務(wù)器地址出現(xiàn)nginx字樣的網(wǎng)頁,表示安裝成功:

(8)修改環(huán)境變量

添加環(huán)境變量,使nginx在任意目錄都可以執(zhí)行啟動(dòng)操作;

# 編輯/etc/profile文件在最后添加如下命令:
vim /etc/profile

# 添加命令
PATH=$PATH:/usr/local/nginx/sbin
export PAT

# 保存退出
:wq

# 執(zhí)行生效命令
source /etc/profile 

所有的服務(wù)器部署方法相同

3. keepalived 部署

(1)安裝依賴

yum install -y gcc openssl-devel libnl3-devel net-snmp-devel

(2)安裝keepalived

yum install  keepalived -y
  • 配置文件的位置:/etc/keepalived/

3.1 主 keepalived 配置文件解析

  • 需要設(shè)置一個(gè)VIP的地址,作為虛擬IP地址
cd /etc/keepalived/
vim keepalived.conf
# --- ---- keepalived.conf --- ----

! Configuration File for keepalived

# 管理員郵箱(系統(tǒng)故障通知)
global_defs {
 notification_email {
 	acassen@firewall.loc
 	failover@firewall.loc
	sysadmin@firewall.loc
 }

notification_email_from Alexandre.Cassen@firewall.loc   # 郵件發(fā)件人郵箱
smtp_server 127.0.0.1	# SMTP服務(wù)器地址(郵箱服務(wù)器地址)
smtp_connect_timeout 30	#超時(shí)時(shí)間
router_id NGINX	# 路由器標(biāo)識(shí),一般不用改,也可改成應(yīng)用名,主從服務(wù)器要一致
}

#一個(gè)vrrp_instance就是定義一個(gè)虛擬路由器的,實(shí)例名稱
vrrp_script check_nginx {	 #腳本模塊
	script "/etc/keepalived/check_nginx.sh"  #腳本模塊
	interval 2  #每2秒鐘檢測(cè)一次腳本
#weight 10    #優(yōu)先級(jí)
}

vrrp_instance VI_1 {
	state MASTER	# 定義初始狀態(tài),可以是MASTER或者BACKUP
	interface eth0	#當(dāng)前使用的網(wǎng)卡名
	virtual_router_id 51	#虛擬路由id號(hào)
	priority 100	 #當(dāng)前服務(wù)器優(yōu)先級(jí),數(shù)字越大越優(yōu)先
	advert_int 1	#檢測(cè)心跳時(shí)間為1秒
	authentication {	#身份驗(yàn)證方式通信認(rèn)證機(jī)制,這里是明文認(rèn)證還有一種是加密認(rèn)證
    	auth_type PASS	#密碼驗(yàn)證
    	auth_pass 1111	#密碼為1111
    	
    	## 如果使用加密認(rèn)證(所有節(jié)點(diǎn)必須一致)
    	# auth_type AH
    	# auth_pass <key>  # 通常為一個(gè)長度為8或者16的字符串
	}
virtual_ipaddress {
    192.168.10.100     #VIP地址
	}
track_script{        #添加監(jiān)控條件
	check_nginx	 #腳本模塊后邊定義的名稱
	}
}

3.2 監(jiān)控nginx狀態(tài)

新建一個(gè)腳本文件,并打開

vim /etc/keepalived/check_nginx.sh

編寫監(jiān)控腳本

#!/bin/bash
#1、判斷 Nginx 是否存活
counter=`ps -C nginx --no-header | wc -l`
if [ $counter -eq 0 ]; then
#2、如果不存活則嘗試啟動(dòng) Nginx
/usr/local/nginx/sbin/nginx
sleep 5
#3、等待 5 秒后再次獲取一次 Nginx 狀態(tài)
counter=`ps -C nginx --no-header | wc -l`
#4、再次進(jìn)行判斷,如 Nginx 還不存活則停止 Keepalived,讓地址進(jìn)行漂移
	if [ $counter -eq 0 ]; then
	systemctl stop keepalived  #停用keepalived服務(wù)
	fi
fi

注意,這里的重啟nginx命令/usr/local/nginx/sbin/nginx被注釋掉,測(cè)試時(shí)關(guān)閉才能看到效果。

3.3 從 keepalived配置

! Configuration File for keepalived

global_defs {
notification_email {
 acassen@firewall.loc
 failover@firewall.loc
 sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id NGINX
}

vrrp_script check_nginx {  #這個(gè)地方名字不能亂改,系統(tǒng)不認(rèn)識(shí),
	script "/etc/keepalived/check_nginx.sh"
	interval 2  #每2秒鐘檢測(cè)一次腳本
}

vrrp_instance VI_1 {
	state BACKUP	#改這里
	interface eth0
	virtual_router_id 51
	priority 80		#改這里
	advert_int 1
	authentication {
    	auth_type PASS
    	auth_pass 1111
}
virtual_ipaddress {
    172.28.127.100
}
track_script {
	check_nginx
	}
}

keepalived相關(guān)命令

啟動(dòng):systemctl start keepalived
重啟:systemctl restart keepalived
動(dòng)態(tài)持續(xù)查看日志:tail -f /var/log/messages

二、nginx 端口轉(zhuǎn)發(fā)/反向代理

1. nginx 端口轉(zhuǎn)發(fā)

1.1 修改nginx.conf

server {
    listen      19100;  # 監(jiān)聽19180端口
    server_name  192.168.248.10;

    location / {
            # 請(qǐng)求頭轉(zhuǎn)發(fā)
            proxy_set_header Host $host;
            # 獲得真實(shí)ip
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            # 轉(zhuǎn)發(fā)到目標(biāo)地址
            proxy_pass http://192.168.0.100:60080;
            
            # 還可以寫root和index字段,只不過端口默認(rèn)優(yōu)先轉(zhuǎn)發(fā),當(dāng)轉(zhuǎn)發(fā)不成功時(shí),才會(huì)選擇走root字段下的目錄和html
            # root /usr/local/nginx/html;
            # index index.html index.php index.htm;
        }	
    # ... ...
}

# 這個(gè)60086端口,目前沒有服務(wù),訪問是被拒絕的!

保存退出

nginx -s reload;
# 輸入vip地址訪問
192.168.248.10:19180

1.2 分離nginx中的server模塊為單獨(dú)的文件

# 在nginx配置的最后一個(gè)中括號(hào)上方添加如下命令
include /usr/local/nginx/conf/conf.d/*.conf;

另外在conf.d文件夾下新建conf文件,單獨(dú)編寫server模塊。

到這里配置就告一段落了,后面算是補(bǔ)充的 nginx 配置

2. nginx 多端口轉(zhuǎn)發(fā)

2.1 配置文件

  • 每個(gè) http 塊可以包括多個(gè) server 塊,而每個(gè) server 塊就相當(dāng)于一個(gè)虛擬主機(jī)。
  • 而每個(gè) server 塊也分為全局 server 塊,以及可以同時(shí)包含多個(gè) locaton 塊。
server {
	listen	8001;
	server_name	208.208.128.122;
	
	location ~/vod/ {
		proxy_pass	http://127.0.0.1:8081;
	}
	
	location ~/edu/ {
		proxy_pass	http://127.0.0.1:8082;
	}
}

2.1 匹配規(guī)則

  • = :用于不含正則表達(dá)式的 uri 前,要求請(qǐng)求字符串與 uri 嚴(yán)格匹配,如果匹配 成功,就停止繼續(xù)向下搜索并立即處理該請(qǐng)求。
  • ~:用于表示 uri 包含正則表達(dá)式,并且區(qū)分大小寫。
  • ~*:用于表示 uri 包含正則表達(dá)式,并且不區(qū)分大小寫。
  • ^~:用于不含正則表達(dá)式的 uri 前,要求 Nginx 服務(wù)器找到標(biāo)識(shí) uri 和請(qǐng)求字 符串匹配度最高的 location 后,立即使用此 location 處理請(qǐng)求,而不再使用 location 塊中的正則 uri 和請(qǐng)求字符串做匹配。

2.3 實(shí)現(xiàn)效果

  • 如果請(qǐng)求208.208.128.122:8001/vod/,就會(huì)自動(dòng)跳轉(zhuǎn)到127.0.0.1:8081
  • 如果請(qǐng)求208.208.128.122:8001/edu/,就會(huì)自動(dòng)跳轉(zhuǎn)到127.0.0.1:8082

四、nginx 負(fù)載均衡

1. 配置說明

1.1 修改 nginx.conf

    # 定義myserver結(jié)構(gòu)體
    upstream myserver {
        server 208.208.128.122:8081;
        server 208.208.128.122:8082;
    }
    
    server {
        listen       80;
        server_name  208.208.128.122;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            # 在這里調(diào)用
            #proxy_pass   http://myserver;
            proxy_pass   http://127.0.0.1:8081;
            index  index.html index.htm;
    }

1.2 實(shí)現(xiàn)效果

  • 請(qǐng)求208.208.128.122:80/edu/,負(fù)載均衡平均到127.0.0.1:8081/edu/127.0.0.1:8082/edu/當(dāng)中。

2. 修改負(fù)載均衡分配策略

  • 輪詢(默認(rèn)):按時(shí)間順序逐一分配,如果down掉,自動(dòng)剔除
  • weight:默認(rèn)為1,權(quán)重越高分配客戶越多。
upstream myserver {
    server 208.208.128.122:8081 weight=10;   #  在這兒
    server 208.208.128.122:8082 weight=10;
}
server {
    listen       80;
    server_name  208.208.128.122;
    location / {
        root   html;
        proxy_pass   http://myserver;
        index  index.html index.htm;
}
  • ip_hash:每個(gè)請(qǐng)求按訪問 ip 的 hash 結(jié)果分配,這樣每個(gè)訪客固定訪問一個(gè)后端服務(wù)器。
upstream myserver {
    ip_hash;		#  在這兒
    server 208.208.128.122:8081 ;   
    server 208.208.128.122:8082 ;
}
server {
    listen       80;
    server_name  208.208.128.122;
    location / {
        root   html;
        proxy_pass   http://myserver;
        index  index.html index.htm;
}
  • fair(第三方):按后端服務(wù)器的響應(yīng)時(shí)間來分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配。
    upstream myserver {					
        server 208.208.128.122:8081 ;   
        server 208.208.128.122:8082 ;
        fair; 	#  在這兒
    }
    server {
        listen       80;
        server_name  208.208.128.122;
        location / {
            root   html;
            proxy_pass   http://myserver;
            index  index.html index.htm;
    }

五、架構(gòu)

1. 動(dòng)靜分離

img

Nginx 動(dòng)靜分離簡(jiǎn)單來說就是把動(dòng)態(tài)跟靜態(tài)請(qǐng)求分開,不能理解成只是單純的把動(dòng)態(tài)頁面和 靜態(tài)頁面物理分離。嚴(yán)格意義上說應(yīng)該是動(dòng)態(tài)請(qǐng)求跟靜態(tài)請(qǐng)求分開,可以理解成使用 Nginx 處理靜態(tài)頁面,Tomcat 處理動(dòng)態(tài)頁面。動(dòng)靜分離從目前實(shí)現(xiàn)角度來講大致分為兩種:

  • 一種是純粹把靜態(tài)文件獨(dú)立成單獨(dú)的域名,放在獨(dú)立的服務(wù)器上,也是目前主流推崇的方案;
  • 另外一種方法就是動(dòng)態(tài)跟靜態(tài)文件混合在一起發(fā)布,通過 nginx 來分開。

img

2. 高可用集群

keepalived + nginx 模式

img

3. 其他

  • master-worker架構(gòu),只能有一個(gè)master,其他worker通過爭(zhēng)搶獲取請(qǐng)求。
  • worker數(shù)和CPU數(shù)相等最為適宜。
  • 發(fā)送請(qǐng)求,占用了worker的幾個(gè)連接數(shù):2~4個(gè)
  • 普通靜態(tài)訪問最大并發(fā)數(shù)是:worker_connections * worker_processes / 2
  • HTTP做反向代理,最大并發(fā)數(shù) worker_connections * worder_processes / 4

這個(gè)值是表示每個(gè) worker 進(jìn)程所能建立連接的最大值,所以,一個(gè) nginx 能建立的最大連接 數(shù),應(yīng)該是 worker_connections * worker_processes。當(dāng)然,這里說的是最大連接數(shù),對(duì)于 HTTP 請(qǐng) 求 本 地 資 源 來 說 , 能 夠 支 持 的 最 大 并 發(fā) 數(shù) 量 是 worker_connections * worker_processes,如果是支持 http1.1 的瀏覽器每次訪問要占兩個(gè)連接,所以普通的靜態(tài)訪 問最大并發(fā)數(shù)是: worker_connections * worker_processes /2,而如果是 HTTP 作 為反向代 理來說,最大并發(fā)數(shù)量應(yīng)該是 worker_connections * worker_processes/4。因?yàn)樽鳛榉聪虼矸?wù)器,每個(gè)并發(fā)會(huì)建立與客戶端的連接和與后端服 務(wù)的連接,會(huì)占用兩個(gè)連接。

到此這篇關(guān)于keepalived+nginx實(shí)現(xiàn)雙服務(wù)器主備方案的文章就介紹到這了,更多相關(guān)keepalived nginx雙服務(wù)器主備內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • windows下快速安裝nginx并配置開機(jī)自啟動(dòng)的方法

    windows下快速安裝nginx并配置開機(jī)自啟動(dòng)的方法

    這篇文章主要介紹了windows下快速安裝nginx 并配置開機(jī)自啟動(dòng)的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05
  • nginx負(fù)載均衡配置,宕機(jī)自動(dòng)切換方式

    nginx負(fù)載均衡配置,宕機(jī)自動(dòng)切換方式

    這篇文章主要介紹了nginx負(fù)載均衡配置,宕機(jī)自動(dòng)切換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • ELK監(jiān)控nginx日志的整體流程

    ELK監(jiān)控nginx日志的整體流程

    這篇文章主要介紹了ELK監(jiān)控nginx日志總結(jié),整體流程是先把logstash啟動(dòng),讀取nginx日志數(shù)據(jù)存儲(chǔ)到ES中,再用kibana進(jìn)行統(tǒng)計(jì)以及可視化,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-03-03
  • 三步配置輕量級(jí)服務(wù)器nginx小結(jié)

    三步配置輕量級(jí)服務(wù)器nginx小結(jié)

    Nginx是一個(gè)安裝非常的簡(jiǎn)單 , 配置文件非常簡(jiǎn)潔,本文就來介紹一下三步配置輕量級(jí)服務(wù)器nginx,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • nginx 負(fù)載均衡 多站點(diǎn)共享Session

    nginx 負(fù)載均衡 多站點(diǎn)共享Session

    這里我們就 演練一下 以數(shù)據(jù)庫的形來存儲(chǔ)Session,來實(shí)現(xiàn)多站點(diǎn)共享Session
    2012-11-11
  • nginx搭建高可用集群的實(shí)現(xiàn)方法

    nginx搭建高可用集群的實(shí)現(xiàn)方法

    本文主要介紹了nginx搭建高可用集群的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • nginx日常維護(hù)常用命令

    nginx日常維護(hù)常用命令

    這篇文章主要介紹了nginx日常維護(hù)如nginx啟動(dòng)、重啟、關(guān)閉等常用命令,需要的朋友可以參考下
    2014-03-03
  • nginx解決跨域問題的實(shí)例方法

    nginx解決跨域問題的實(shí)例方法

    在本篇文章里小編給各位分享了關(guān)于nginx怎么解決跨域問題的方法和實(shí)例代碼,需要的朋友們參考下。
    2019-07-07
  • Nginx指令add_header和proxy_set_header的區(qū)別及說明

    Nginx指令add_header和proxy_set_header的區(qū)別及說明

    這篇文章主要介紹了Nginx指令add_header和proxy_set_header的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Nginx配置SSL證書監(jiān)聽443端口

    Nginx配置SSL證書監(jiān)聽443端口

    這篇文章主要為大家詳細(xì)介紹了Nginx配置SSL證書監(jiān)聽443端口的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02

最新評(píng)論