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

Keepalived搭建nginx高可用的實(shí)現(xiàn)

 更新時(shí)間:2025年05月21日 11:02:24   作者:matrixlzp  
這篇文章主要介紹了Keepalived搭建nginx高可用的實(shí)現(xiàn),通過(guò)VIP實(shí)現(xiàn)主備切換,檢測(cè)進(jìn)程狀態(tài)確保服務(wù)可用,具有一定的參考價(jià)值,感興趣的可以了解一下

一、環(huán)境準(zhǔn)備

兩臺(tái)裝有 nginx 的 CentOS 虛擬機(jī)。

[root@nginx1 ~]# echo "192.168.40.81 say Hello" > /usr/local/nginx/html/index.html
[root@nginx2 ~]# echo "192.168.40.82 say Hello" > /usr/local/nginx/html/index.html

二、原理

Keepalived 為我們后端服務(wù)器組虛擬出一組 VIP,該 VIP 只能由優(yōu)先級(jí)最高的一臺(tái)服務(wù)器持有??蛻舳嗽L問(wèn),就只訪問(wèn) VIP。

當(dāng)主服務(wù)器掛掉之后,Keepalived 自動(dòng)幫我們把 VIP 漂移到 BACKUP 服務(wù)器。以此來(lái)保證服務(wù)的高可用。

Keepalived 通過(guò)檢測(cè)服務(wù)器上的 Keepalived 進(jìn)程的存活狀態(tài),來(lái)判斷服務(wù)器是否存活。

三、安裝

1)安裝 keepalived

# 在 nginx1 安裝 keepalived
[root@nginx1 ~]# yum install -y keepalived
# 在 nginx2 安裝 keepalived
[root@nginx2 ~]# yum install -y keepalived

2)配置

使用 yum 安裝后配置文件在 /etc/keepalived/keepalived.conf

# 備份 nginx1 keepalived 配置文件
[root@nginx1 keepalived]# cp keepalived.conf keepalived.conf.bak
# 備份 nginx2 keepalived 配置文件
[root@nginx2 keepalived]# cp keepalived.conf keepalived.conf.bak
  • nginx1 上 keepalived.conf:
! Configuration File for keepalived

global_defs {
   router_id lb1
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.40.80
    }
}
  • global_defs:全局配置標(biāo)識(shí)。
  • router_id:路由器標(biāo)識(shí),一般不用改,也可以寫成每個(gè)主機(jī)自己的主機(jī)名。
  • vrrp_instance:一個(gè) vrrp_instance 就是定義一個(gè)虛擬路由器的,VI_1 是實(shí)例名稱。
  • state:指定 keepalived 的角色,MASTER 表示此主機(jī)是主服務(wù)器,BACKUP 表示此主機(jī)是備服務(wù)器。
  • interface:指定檢測(cè)網(wǎng)絡(luò)的網(wǎng)卡接口。就比如下圖的 ens33。

  • virtual_router_id:虛擬路由標(biāo)識(shí),數(shù)字形式,同一個(gè) VRRP 實(shí)例使用唯一的標(biāo)識(shí),即在同一個(gè) vrrp_instance下,master 和 backup 必須一致。
  • priority:節(jié)點(diǎn)優(yōu)先級(jí),數(shù)字越大表示節(jié)點(diǎn)的優(yōu)先級(jí)越高,在一個(gè) VRRP 實(shí)例下,MASTER 的優(yōu)先級(jí)必須要比 BACKUP 高,不然就會(huì)切換角色。
  • advert_int:用于設(shè)定 MASTER 與 BACKUP 之間同步檢查的時(shí)間間隔,單位為秒。
  • auth_type:預(yù)共享密鑰認(rèn)證,同一個(gè)虛擬路由器的 keepalived 節(jié)點(diǎn)必須一樣。
  • auth_pass:設(shè)置密鑰。
  • virtual_ipaddress:設(shè)置虛擬IP地址,可以設(shè)置多種形式:
  • 10.0.0.100 不指定網(wǎng)卡,默認(rèn)為 eth0,注意:不指定/prefix,默認(rèn)為/32;
  • 10.0.0.101/24 dev eth1 指定 VIP 的網(wǎng)卡;
  • 10.0.0.102/24 dev eth2 label eth2:1 指定 VIP 的網(wǎng)卡 label。
  • nginx2 上 keepalived.conf:
! Configuration File for keepalived

global_defs {
   router_id lb2
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.40.80
    }
}

3)啟動(dòng)

# 啟動(dòng) MASTER 服務(wù)器 keepalived 并設(shè)置為開(kāi)機(jī)自啟動(dòng)
[root@nginx1 keepalived]# systemctl enable keepalived --now
[root@nginx1 keepalived]# systemctl status keepalived
[root@nginx1 keepalived]# ip a

會(huì)發(fā)現(xiàn) MASTER 服務(wù)器多出了 192.168.40.80 這個(gè)IP。

# 啟動(dòng) BACKUP 服務(wù)器 keepalived 并設(shè)置為開(kāi)機(jī)自啟動(dòng)
[root@nginx2 keepalived]# systemctl enable keepalived --now
[root@nginx2 keepalived]# systemctl status keepalived
[root@nginx2 keepalived]# ip a

備份服務(wù)器并不持有 VIP。

4)訪問(wèn)

此時(shí)訪問(wèn) VIP,請(qǐng)求都是被打到 MASTER 上的 nginx。

5)故障測(cè)試

# 停掉 MASTER
[root@nginx1 ~]# init 0

 此時(shí) VIP 飄移到 BACKUP。

6)重啟 MASTER

 此時(shí) VIP 又漂移回來(lái)了。

四、定制腳本

Keepalived 通過(guò)檢測(cè)服務(wù)器上的 Keepalived 進(jìn)程的存活狀態(tài),來(lái)判斷服務(wù)器是否存活。

但如果此時(shí),我們的服務(wù)器沒(méi)有掛,但是我們希望 Keepalived ?;畹姆?wù)(比如 nginx)掛了,由于 Keepalived 進(jìn)程沒(méi)有掛,這個(gè)時(shí)候,Keepalived 是不會(huì)幫我們主備切換的。

# 停掉 MASTER
[root@nginx1 ~]# systemctl stop nginx

 這個(gè)時(shí)候 VIP 并沒(méi)有遷移走。這個(gè)時(shí)候,我們就得自己寫一個(gè)腳本,去檢測(cè) nginx 存活狀態(tài),如果 nginx 掛了,人為殺死 keepalived 進(jìn)程,讓 keepalived 幫我們主備切換。

先重新啟動(dòng) nginx

[root@nginx1 ~]# systemctl start nginx

1)修改 keepalived.conf

  •  nginx1 上 keepalived.onf:
! Configuration File for keepalived

global_defs {
   router_id lb1
}

vrrp_script check_nginx {
    script "pgrep nginx"
    interval 2
    weight 50  # 當(dāng)檢查失敗時(shí),優(yōu)先級(jí)會(huì)減去這個(gè)值
    fall 2
    rise 2
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.40.80
    }
    track_script {
        check_nginx
    } 
}
  •  nginx2 上 keepalived.conf:
! Configuration File for keepalived

global_defs {
   router_id lb2
}

vrrp_script check_nginx {
    script "pgrep nginx"
    interval 2
    weight 50  # 當(dāng)檢查失敗時(shí),優(yōu)先級(jí)會(huì)減去這個(gè)值
    fall 2
    rise 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.40.80
    }
    track_script {
        check_nginx
    } 
}

2)重啟 keepalived

[root@nginx1 keepalived]# sudo systemctl restart keepalived

[root@nginx2 keepalived]# sudo systemctl restart keepalived

3)停掉 MASTER 

# 停掉 MASTER
[root@nginx1 ~]# systemctl stop nginx

 VIP 這次終于被遷移到 BACKUP。

五、應(yīng)用場(chǎng)景

Keepalived + Nginx 的組合有很多應(yīng)用場(chǎng)景:

  • 搭建 Nacos 高可用集群
  • 搭建 K8S Ingress 入口

到此這篇關(guān)于Keepalived搭建nginx高可用的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Keepalived搭建nginx高可用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Nginx使用Gzip算法對(duì)報(bào)文進(jìn)行壓縮詳解

    Nginx使用Gzip算法對(duì)報(bào)文進(jìn)行壓縮詳解

    這篇文章主要給大家介紹了關(guān)于Nginx的Gzip功能的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Nginx具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Nginx靜態(tài)壓縮和代碼壓縮提高訪問(wèn)速度詳解

    Nginx靜態(tài)壓縮和代碼壓縮提高訪問(wèn)速度詳解

    Nginx提供靜態(tài)壓縮功能,對(duì)于比較大的文件,可以自動(dòng)默認(rèn)查找.gz后綴的壓縮包,下面這篇文章主要給大家介紹了關(guān)于Nginx靜態(tài)壓縮和代碼壓縮提高訪問(wèn)速度的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • nginx如何設(shè)置服務(wù)器響應(yīng)時(shí)間長(zhǎng)短

    nginx如何設(shè)置服務(wù)器響應(yīng)時(shí)間長(zhǎng)短

    本文主要介紹了nginx如何設(shè)置服務(wù)器響應(yīng)時(shí)間長(zhǎng)短,主要介紹了兩種方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • 生產(chǎn)環(huán)境之Nginx高可用方案實(shí)現(xiàn)過(guò)程解析

    生產(chǎn)環(huán)境之Nginx高可用方案實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了生產(chǎn)環(huán)境之Nginx高可用方案實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • nginx常見(jiàn)問(wèn)題整理和解決辦法

    nginx常見(jiàn)問(wèn)題整理和解決辦法

    給大家詳細(xì)整理了nginx常見(jiàn)的問(wèn)題以及對(duì)應(yīng)問(wèn)題的處理辦法,有需要的朋友參考一下吧。
    2017-12-12
  • Nginx輕松搞定跨域問(wèn)題完整過(guò)程

    Nginx輕松搞定跨域問(wèn)題完整過(guò)程

    這篇文章主要給大家介紹了關(guān)于Nginx輕松搞定跨域問(wèn)題的相關(guān)資料,大家在使用nginx進(jìn)行服務(wù)器管理,經(jīng)常會(huì)遇到跨域問(wèn)題,文中將解決方法介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • 一篇文章讀懂nginx的gzip功能

    一篇文章讀懂nginx的gzip功能

    nginx提供了對(duì)文件內(nèi)容壓縮的功能,允許將內(nèi)容在發(fā)送到客戶端之前根據(jù)具體的策略進(jìn)行壓縮從而節(jié)約帶寬,下面這篇文章主要給大家介紹了如何通過(guò)一篇文章讀懂nginx的gzip功能,需要的朋友可以參考下
    2022-05-05
  • Nginx配置中if判斷的使用

    Nginx配置中if判斷的使用

    在Nginx配置中,有時(shí)rewrite規(guī)則無(wú)法滿足復(fù)雜邏輯判斷需求,這時(shí)需要使用if語(yǔ)法,if可以根據(jù)文件是否存在、路徑特定條件等進(jìn)行判斷,本文就來(lái)介紹一下if判斷的使用
    2024-10-10
  • 阿里云ssl證書如何通過(guò)Nginx部署到服務(wù)器

    阿里云ssl證書如何通過(guò)Nginx部署到服務(wù)器

    這篇文章主要介紹了阿里云ssl證書通過(guò)Nginx部署到服務(wù)器的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • 關(guān)于nginx proxy_set部分常見(jiàn)配置

    關(guān)于nginx proxy_set部分常見(jiàn)配置

    這篇文章主要介紹了關(guān)于nginx proxy_set部分常見(jiàn)配置,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05

最新評(píng)論