最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker部署tenine實(shí)現(xiàn)后端應(yīng)用的高可用與負(fù)載均衡(推薦)

 更新時(shí)間:2024年09月13日 09:55:32   作者:小時(shí)候的陽(yáng)光  
采用Docker部署Tengine和Keepalived,實(shí)現(xiàn)了一種適用于小型應(yīng)用場(chǎng)景的高可用負(fù)載均衡解決方案,本方案需要兩臺(tái)Ubuntu服務(wù)器、Docker軟件以及三個(gè)IP地址,適合需要簡(jiǎn)易而可靠的負(fù)載均衡和高可用性的小型應(yīng)用部署,感興趣的朋友跟隨小編一起看看吧

采用Docker方式的Tengine 和 keepalived 組合模式可以實(shí)現(xiàn)小應(yīng)用場(chǎng)景的高可用負(fù)載均衡需求

網(wǎng)絡(luò)架構(gòu)

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

兩臺(tái)物理主機(jī): 22.04.3-Ubuntu Linux

Docker版本:24.0.9

3個(gè)IP地址 192.168.30.191 192.168.30.192 192.168.30.190(作為虛擬IP)

二、軟件安裝

兩臺(tái)機(jī)器上都執(zhí)行

1. 下載Tenine鏡像

docker pull axizdkr/tengine:3.1.0

本次鏡像來(lái)源 https://github.com/Axizdkr/tengine

2. 下載Keepalived鏡像

docker pull osixia/keepalived:2.0.20

3. 制作SpringBoot鏡像

根據(jù)各自應(yīng)用需要?jiǎng)?chuàng)建鏡像

三、軟件配置

兩臺(tái)機(jī)器上都執(zhí)行

1. 創(chuàng)建應(yīng)用容器

假設(shè) SpringBoot 各物理主機(jī)上創(chuàng)建了,SpringBoot端口為 9166

2. 代理訪(fǎng)問(wèn)應(yīng)用

使用Tengine 代理訪(fǎng)問(wèn)SpringBoot

創(chuàng)建必要映射目錄

mkdir -p /apps/tengine/cfg  /apps/tengine/logs   /appstengine/vue

在目錄 /apps/tengine/cfg 創(chuàng)建 nginx.conf

#user  nobody;
worker_processes  8;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log  logs/access.log  main;
    sendfile        on;
    # 當(dāng)設(shè)置為 on 時(shí),Nginx 會(huì)在發(fā)送響應(yīng)時(shí),盡量將數(shù)據(jù)合并成一個(gè)大的 TCP 數(shù)據(jù)包進(jìn)行發(fā)送。這可以減少 TCP 包的數(shù)量,從而提高網(wǎng)絡(luò)傳輸效率,尤其是在發(fā)送大文件時(shí)
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    proxy_buffer_size 128k;
    proxy_buffers 4 256k;
    proxy_busy_buffers_size 256k;
    gzip  on;
    gzip_min_length 2k;
    gzip_buffers   4 32k;
    gzip_http_version 1.1;
    gzip_comp_level 6;
    gzip_types text/plain text/css text/javascriptapplication/json application/javascript application/x-javascriptapplication/xml;
    gzip_vary on;
    gzip_proxied any;
    # 將Nginx代理的所有請(qǐng)求實(shí)體的大小限制為20m
    client_max_body_size 100m;
   upstream cluster1 {
       server 192.168.30.191:9166;
       server 192.168.30.192:9166;
       check interval=3000 rise=2 fall=5 timeout=1000 type=http;
       check_http_send "HEAD / HTTP/1.0\r\n\r\n";
       check_http_expect_alive http_2xx http_3xx;
    }
    server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        error_page  404              /404.html;
        # 統(tǒng)一走代理訪(fǎng)問(wèn)vue前端頁(yè)面  xxxx/dist  
        location ~ /([A-Za-z0-9_-]+)/dist
        {
          root /vue/;
          index  index.html index.htm;
        }
        #代理SpringBoot訪(fǎng)問(wèn)
        location /api/
        {
            proxy_redirect off;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme';
            proxy_set_header X-Nginx-Proxy true;
            proxy_pass http://cluster1/;
        }
        location /nginx_basic_status {
            stub_status on;
        }
        location /nginx_check_status {
            check_status;
        }
        # 主要用于keepalived 檢查
        location /health_check {
           access_log off;
           return 200 "OK";
        }
    }
}

有關(guān)Tengine的 健康檢查配置說(shuō)明,請(qǐng)參考官方文檔:
https://tengine.taobao.org/document_cn/http_upstream_check_cn.html

注意:
Tengine 健康檢查會(huì)不停的訪(fǎng)問(wèn) http://192.168.30.191:9166/ http://192.168.30.192:9166/ 這兩個(gè)地址,如果你的SpringBoot應(yīng)用有安全攔截(Shiro 或者 SpringSecurity)記得放行這個(gè)URL

創(chuàng)建Tengine容器

  sudo docker run --network=host \
 --privileged \
 --restart=always \
 --name tengine \
 -v /apps/tengine/cfg/nginx.conf:/etc/nginx/nginx.conf:ro \
 -v /apps/tengine/logs:/var/log/nginx \
 -v /apps/tengine/vue:/vue/ \
 -d axizdkr/tengine:3.1.0

3. 創(chuàng)建Keepalived

在 兩臺(tái)主機(jī)上 創(chuàng)建必要映射目錄

mkdir -p /apps/keepalived

在主機(jī)191目錄下創(chuàng)建
在目錄/apps/keepalived下創(chuàng)建配置文件 keepalived.conf 內(nèi)容如下:

vrrp_script chk_nginx {
    script "curl -s http://172.17.0.1/health_check"
    interval 2
    weight -3
}
vrrp_instance VI_2 {
    state MASTER
    interface enp10s0
    virtual_router_id 54
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.30.190
    }
    track_script {
        chk_nginx
    }
}

在主機(jī)192目錄下創(chuàng)建
在目錄/apps/keepalived下創(chuàng)建配置文件 keepalived.conf 內(nèi)容如下:

vrrp_script chk_nginx {
    script "curl -s http://172.17.0.1/health_check"
    interval 2
    weight -3
}
vrrp_instance VI_2 {
    state BACKUP
    interface enp9s0
    virtual_router_id 54
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.30.190
    }
    track_script {
        chk_nginx
    }
}

主要是如下幾個(gè)變量要注意:

interval 2 每隔2秒執(zhí)行一次

weight -5 腳本結(jié)果導(dǎo)致的優(yōu)先級(jí)變更,檢測(cè)失敗(腳本返回非0)則優(yōu)先級(jí)減5

fall 2 #檢測(cè)連續(xù)2次失敗才算確定是真失敗。會(huì)用weight減少優(yōu)先級(jí)(1-255之間) 默認(rèn)值為 3

rise 1 #檢測(cè)1次成功就算成功。但不修改優(yōu)先級(jí) 默認(rèn)值為 2

interface 當(dāng)前節(jié)點(diǎn)服務(wù)器的網(wǎng)卡名稱(chēng)

priority 優(yōu)先級(jí),每一個(gè)節(jié)點(diǎn)上不一樣

virtual_ipaddress 虛擬ip

virtual_router_id 共享相同虛擬IP的節(jié)點(diǎn)上該參數(shù)值必須一樣 ,
keepalived可以代理多個(gè)虛擬IP,每一個(gè)虛擬IP對(duì)應(yīng)的virtual_router_id值不可一樣。

state 指定當(dāng)前keepalived的初始狀態(tài),這個(gè)可用是 MASTER 或者 BACKUP ,如果是BACKUP 則作為從節(jié)點(diǎn),但是這個(gè)值會(huì)根據(jù)監(jiān)控腳本運(yùn)行狀態(tài)改變優(yōu)先級(jí)從而導(dǎo)致?tīng)頜ASTER /BACKUP 態(tài)切換

三臺(tái)主機(jī)上執(zhí)行:

docker run -d --name keepalived \
	--cap-add=NET_ADMIN \
	--cap-add=NET_BROADCAST \
	--cap-add=NET_RAW \
	--net=host \
	-e KEEPALIVED_INTERFACE=eth0 \
	-v /apps/keepalived/keepalived.conf:/container/service/keepalived/assets/keepalived.conf \
	osixia/keepalived:2.0.20 --loglevel debug --copy-service

變量 KEEPALIVED_INTERFACE 是指當(dāng)前節(jié)點(diǎn)服務(wù)器的網(wǎng)卡名稱(chēng),如果不想開(kāi)啟debug模式去掉–loglevel debug

4. 測(cè)試高可用

兩臺(tái)都啟動(dòng)了keepalived后,目前 192.168.30.190 IP應(yīng)該是綁定在 191 這臺(tái)物理主機(jī)上,

可以 瀏覽器訪(fǎng)問(wèn) http://192.168.30.190/nginx_check_status 可以看到如下頁(yè)面顯示:

192.168.30.190 是 keepalived的虛擬IP, 然后可以訪(fǎng)問(wèn)SpringBoot應(yīng)用接口看下是否負(fù)載均衡了

關(guān)閉 191上面的SpringBoot 看下 訪(fǎng)問(wèn)情況

關(guān)閉 191 上面的 Tengine 看下 訪(fǎng)問(wèn)情況

到此這篇關(guān)于Docker部署tenine實(shí)現(xiàn)后端應(yīng)用的高可用與負(fù)載均衡的文章就介紹到這了,更多相關(guān)Docker部署tenine內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 用Docker作為PaaS的替代方案是否完美無(wú)缺

    用Docker作為PaaS的替代方案是否完美無(wú)缺

    Docker的出現(xiàn)似乎又帶來(lái)了一種新的選擇,而且對(duì)于開(kāi)發(fā)者來(lái)說(shuō)更加靈活、便捷、易用。既然用戶(hù)可以直接在Docker上運(yùn)行,PaaS是否還有應(yīng)用場(chǎng)景?面對(duì)企業(yè)繁雜的應(yīng)用環(huán)境,用Docker作為PaaS的替代方案是否完美無(wú)缺
    2016-11-11
  • docker-compose快速搭建docker私有倉(cāng)庫(kù)的步驟

    docker-compose快速搭建docker私有倉(cāng)庫(kù)的步驟

    這篇文章主要介紹了docker-compose快速搭建docker私有倉(cāng)庫(kù)的步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 數(shù)據(jù)卷(Data Volumes)及dockefile詳解

    數(shù)據(jù)卷(Data Volumes)及dockefile詳解

    在生產(chǎn)環(huán)境中使用Docker,往往需要對(duì)數(shù)據(jù)進(jìn)行持久化,或者需要在多個(gè)容器之間進(jìn)行數(shù)據(jù)共享,這必然涉及容器的數(shù)據(jù)管理操作,今天給大家介紹下數(shù)據(jù)卷(Data Volumes)及dockefile的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2023-01-01
  • docker創(chuàng)建中間件環(huán)境的實(shí)現(xiàn)步驟

    docker創(chuàng)建中間件環(huán)境的實(shí)現(xiàn)步驟

    本文主要介紹了docker創(chuàng)建中間件環(huán)境的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-08-08
  • 讓非root用戶(hù)構(gòu)建Docker鏡像的三種方法

    讓非root用戶(hù)構(gòu)建Docker鏡像的三種方法

    在默認(rèn)情況下,Docker?需要?root?權(quán)限或?sudo?才能運(yùn)行,這對(duì)于日常開(kāi)發(fā)和?CI/CD?流水線(xiàn)可能不夠方便,那么,如何讓?非?root?用戶(hù)?也能構(gòu)建和運(yùn)行?Docker?容器呢?本篇文章將介紹?三種方法?來(lái)實(shí)現(xiàn)這一目標(biāo),需要的朋友可以參考下
    2025-04-04
  • 云原生自動(dòng)化應(yīng)用于docker倉(cāng)庫(kù)私有憑據(jù)secret創(chuàng)建

    云原生自動(dòng)化應(yīng)用于docker倉(cāng)庫(kù)私有憑據(jù)secret創(chuàng)建

    這篇文章主要為大家介紹了云原生自動(dòng)化應(yīng)用于docker倉(cāng)庫(kù)私有憑據(jù)secret創(chuàng)建,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • 基于Docker部署Dubbo+Nacos服務(wù)的過(guò)程

    基于Docker部署Dubbo+Nacos服務(wù)的過(guò)程

    這篇文章主要介紹了基于Docker部署Dubbo+Nacos服務(wù),本文介紹基于?Docker?部署一套?Dubbo?+?Nacos?的微服務(wù)環(huán)境,并解決容器里的?IP?及端口的訪(fǎng)問(wèn)問(wèn)題,需要的朋友可以參考下
    2023-02-02
  • 在docker上安裝運(yùn)行mysql實(shí)例

    在docker上安裝運(yùn)行mysql實(shí)例

    Docker 使用 Google 公司推出的 Go 語(yǔ)言 進(jìn)行開(kāi)發(fā)實(shí)現(xiàn),基于 Linux 內(nèi)核的 cgroup,namespace,以及 AUFS 類(lèi)的 Union FS 等技術(shù),對(duì)進(jìn)程進(jìn)行封裝隔離,屬于操作系統(tǒng)層面的虛擬化技術(shù)。
    2017-01-01
  • 一臺(tái)虛擬機(jī)基于docker搭建大數(shù)據(jù)HDP集群的思路詳解

    一臺(tái)虛擬機(jī)基于docker搭建大數(shù)據(jù)HDP集群的思路詳解

    這篇文章主要介紹了一臺(tái)虛擬機(jī)基于docker搭建大數(shù)據(jù)HDP集群?,本篇文章主要講了大數(shù)據(jù)集群搭建的架構(gòu)設(shè)計(jì)和實(shí)現(xiàn)思路部分,后面文章會(huì)探討上層應(yīng)用的構(gòu)建,需要的朋友可以參考下
    2022-11-11
  • docker中搭建overlay 網(wǎng)絡(luò)實(shí)驗(yàn)環(huán)境

    docker中搭建overlay 網(wǎng)絡(luò)實(shí)驗(yàn)環(huán)境

    這篇文章主要介紹了docker中搭建overlay 網(wǎng)絡(luò)實(shí)驗(yàn)環(huán)境的相關(guān)資料,需要的朋友可以參考下
    2017-08-08

最新評(píng)論

武乡县| 兴城市| 东乡| 嵩明县| 永安市| 武平县| 桑植县| 饶河县| 波密县| 沂源县| 康保县| 蓬溪县| 星子县| 星子县| 托克逊县| 柘荣县| 喀喇| 周至县| 葫芦岛市| 武山县| 雷山县| 宣恩县| 六安市| 田东县| 清徐县| 山阴县| 重庆市| 隆尧县| 元氏县| 镶黄旗| 赞皇县| 芒康县| 盐边县| 安阳县| 马边| 乡宁县| 甘谷县| 锦屏县| 博客| 罗甸县| 昌图县|