亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

一、keepalived + nginx 主備方案

1. 架構(gòu)圖

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

在這里插入圖片描述

2. nginx 部署

兩臺服務器應用同樣的配置,僅HTML文件不一樣。

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

(1)時間同步

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

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

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

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

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

在 windows 系統(tǒng)中訪問 linux 中 nginx,默認不能訪問的,因為防火墻問題 (1)關(guān)閉防火墻 (2)開放訪問的端口號.

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

systemctl stop iptables    
systemctl stop firewalld

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

或者,設置開放訪問端口號

# 查看開放的端口號
firewall-cmd --list-all

# 設置開放的端口號
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來解析正則表達式,需要在linux上安裝pcre
  • nginx使用zlib對http包的內(nèi)容進行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)建一個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

# 進入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

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

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

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

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

(6)啟動nginx

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

(7)驗證

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

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

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

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

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

# 保存退出
:wq

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

所有的服務器部署方法相同

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 配置文件解析

  • 需要設置一個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服務器地址(郵箱服務器地址)
smtp_connect_timeout 30	#超時時間
router_id NGINX	# 路由器標識,一般不用改,也可改成應用名,主從服務器要一致
}

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

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

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

新建一個腳本文件,并打開

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、如果不存活則嘗試啟動 Nginx
/usr/local/nginx/sbin/nginx
sleep 5
#3、等待 5 秒后再次獲取一次 Nginx 狀態(tài)
counter=`ps -C nginx --no-header | wc -l`
#4、再次進行判斷,如 Nginx 還不存活則停止 Keepalived,讓地址進行漂移
	if [ $counter -eq 0 ]; then
	systemctl stop keepalived  #停用keepalived服務
	fi
fi

注意,這里的重啟nginx命令/usr/local/nginx/sbin/nginx被注釋掉,測試時關(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 {  #這個地方名字不能亂改,系統(tǒng)不認識,
	script "/etc/keepalived/check_nginx.sh"
	interval 2  #每2秒鐘檢測一次腳本
}

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)命令

啟動:systemctl start keepalived
重啟:systemctl restart keepalived
動態(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 / {
            # 請求頭轉(zhuǎn)發(fā)
            proxy_set_header Host $host;
            # 獲得真實ip
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            # 轉(zhuǎn)發(fā)到目標地址
            proxy_pass http://192.168.0.100:60080;
            
            # 還可以寫root和index字段,只不過端口默認優(yōu)先轉(zhuǎn)發(fā),當轉(zhuǎn)發(fā)不成功時,才會選擇走root字段下的目錄和html
            # root /usr/local/nginx/html;
            # index index.html index.php index.htm;
        }	
    # ... ...
}

# 這個60086端口,目前沒有服務,訪問是被拒絕的!

保存退出

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

1.2 分離nginx中的server模塊為單獨的文件

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

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

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

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

2.1 配置文件

  • 每個 http 塊可以包括多個 server 塊,而每個 server 塊就相當于一個虛擬主機。
  • 而每個 server 塊也分為全局 server 塊,以及可以同時包含多個 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ī)則

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

2.3 實現(xiàn)效果

  • 如果請求208.208.128.122:8001/vod/,就會自動跳轉(zhuǎn)到127.0.0.1:8081
  • 如果請求208.208.128.122:8001/edu/,就會自動跳轉(zhuǎn)到127.0.0.1:8082

四、nginx 負載均衡

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 實現(xiàn)效果

  • 請求208.208.128.122:80/edu/,負載均衡平均到127.0.0.1:8081/edu/127.0.0.1:8082/edu/當中。

2. 修改負載均衡分配策略

  • 輪詢(默認):按時間順序逐一分配,如果down掉,自動剔除
  • weight:默認為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:每個請求按訪問 ip 的 hash 結(jié)果分配,這樣每個訪客固定訪問一個后端服務器。
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(第三方):按后端服務器的響應時間來分配請求,響應時間短的優(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. 動靜分離

img

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

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

img

2. 高可用集群

keepalived + nginx 模式

img

3. 其他

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

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

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

相關(guān)文章

  • windows下快速安裝nginx并配置開機自啟動的方法

    windows下快速安裝nginx并配置開機自啟動的方法

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

    nginx負載均衡配置,宕機自動切換方式

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

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

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

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

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

    nginx 負載均衡 多站點共享Session

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

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

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

    nginx日常維護常用命令

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

    nginx解決跨域問題的實例方法

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

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

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

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

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

最新評論