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

Docker部署tenine實現(xiàn)后端應用的高可用與負載均衡(推薦)

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

采用Docker方式的Tengine 和 keepalived 組合模式可以實現(xiàn)小應用場景的高可用負載均衡需求

網(wǎng)絡架構

一、環(huán)境準備

兩臺物理主機: 22.04.3-Ubuntu Linux

Docker版本:24.0.9

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

二、軟件安裝

兩臺機器上都執(zhí)行

1. 下載Tenine鏡像

docker pull axizdkr/tengine:3.1.0

本次鏡像來源 https://github.com/Axizdkr/tengine

2. 下載Keepalived鏡像

docker pull osixia/keepalived:2.0.20

3. 制作SpringBoot鏡像

根據(jù)各自應用需要創(chuàng)建鏡像

三、軟件配置

兩臺機器上都執(zhí)行

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

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

2. 代理訪問應用

使用Tengine 代理訪問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;
    # 當設置為 on 時,Nginx 會在發(fā)送響應時,盡量將數(shù)據(jù)合并成一個大的 TCP 數(shù)據(jù)包進行發(fā)送。這可以減少 TCP 包的數(shù)量,從而提高網(wǎng)絡傳輸效率,尤其是在發(fā)送大文件時
    #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代理的所有請求實體的大小限制為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)一走代理訪問vue前端頁面  xxxx/dist  
        location ~ /([A-Za-z0-9_-]+)/dist
        {
          root /vue/;
          index  index.html index.htm;
        }
        #代理SpringBoot訪問
        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";
        }
    }
}

有關Tengine的 健康檢查配置說明,請參考官方文檔:
https://tengine.taobao.org/document_cn/http_upstream_check_cn.html

注意:
Tengine 健康檢查會不停的訪問 http://192.168.30.191:9166/ http://192.168.30.192:9166/ 這兩個地址,如果你的SpringBoot應用有安全攔截(Shiro 或者 SpringSecurity)記得放行這個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

在 兩臺主機上 創(chuàng)建必要映射目錄

mkdir -p /apps/keepalived

在主機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
    }
}

在主機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
    }
}

主要是如下幾個變量要注意:

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

weight -5 腳本結果導致的優(yōu)先級變更,檢測失?。_本返回非0)則優(yōu)先級減5

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

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

interface 當前節(jié)點服務器的網(wǎng)卡名稱

priority 優(yōu)先級,每一個節(jié)點上不一樣

virtual_ipaddress 虛擬ip

virtual_router_id 共享相同虛擬IP的節(jié)點上該參數(shù)值必須一樣 ,
keepalived可以代理多個虛擬IP,每一個虛擬IP對應的virtual_router_id值不可一樣。

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

三臺主機上執(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 是指當前節(jié)點服務器的網(wǎng)卡名稱,如果不想開啟debug模式去掉–loglevel debug

4. 測試高可用

兩臺都啟動了keepalived后,目前 192.168.30.190 IP應該是綁定在 191 這臺物理主機上,

可以 瀏覽器訪問 http://192.168.30.190/nginx_check_status 可以看到如下頁面顯示:

192.168.30.190 是 keepalived的虛擬IP, 然后可以訪問SpringBoot應用接口看下是否負載均衡了

關閉 191上面的SpringBoot 看下 訪問情況

關閉 191 上面的 Tengine 看下 訪問情況

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

相關文章

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

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

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

    docker-compose快速搭建docker私有倉庫的步驟

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

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

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

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

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

    讓非root用戶構建Docker鏡像的三種方法

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

    云原生自動化應用于docker倉庫私有憑據(jù)secret創(chuàng)建

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

    基于Docker部署Dubbo+Nacos服務的過程

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

    在docker上安裝運行mysql實例

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

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

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

    docker中搭建overlay 網(wǎng)絡實驗環(huán)境

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

最新評論

沂源县| 鄂尔多斯市| 东光县| 吕梁市| 花莲县| 漯河市| 平山县| 福鼎市| 文山县| 柏乡县| 安福县| 武邑县| 阜阳市| 保山市| 神木县| 中西区| 铜鼓县| 唐海县| 镇平县| 宁国市| 新竹市| 大悟县| 上杭县| 敦煌市| 南丹县| 雅安市| 巢湖市| 普兰县| 鹤岗市| 英吉沙县| 金阳县| 全椒县| 康平县| 新疆| 西乡县| 汝城县| 石泉县| 襄城县| 徐水县| 徐闻县| 临武县|