日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Consul-template+nginx实现自动负载均衡

發布時間:2023/12/4 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Consul-template+nginx实现自动负载均衡 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

consul-template 是 Consul 的一個守護程序,使用 consul-template 可以方便快速的實現對 Consul Key/Value 存儲系統的訪問,可以從 KV 系統中讀取數據、監視變動、同步本地文件;還可以在執行模板更新的同時,執行本地系統命令,比如常見的就是在同步數據到本地模板文件后,生成 Nginx 配置文件,并執行 nginx -s reload 命令,使 Nginx 重新加載配置文件。

consul-template 的特點
  • 智能發現:一旦開始運行 consul-template ,consul-template 將會自動的發現 Consul 中的 Key/Value 變更,并自動更新到本地模板文件

  • 重復過濾:consul-template 內部可以跨實例對數據進行重復篩選,多個 consul-template 實例進行選舉,確定只有一個 consul-template 執行 KV 查詢,然后將結果同步到其它 consul-template 實例,在命令行中使用 -dedup 標記或者在配置文件中配置“deduplicate” 來啟用重復過濾功能

  • 快速使用:支持命令行和配置文件,有多種方法可以運行Consul Template,但最常見的模式是將Consul Template作為系統服務運行。

  • Dry Mode:在Dry模式,Consul-Template會將結果呈現在STDOUT,操作員可以檢查輸出是否正常,以決定更換模板是否安全。

參考文檔: https://www.google.com https://github.com/hashicorp/consul-template https://www.consul.io https://www.hi-linux.com/posts/36431.html

Centos7.0 安裝 nginx

執行以下命令

// 添加源 rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm // 執行安裝 yum install -y nginx // 修改 nginx 默認端口為 8010 vi /etc/nginx/conf.d/default.conf // 加入開機啟動 systemctl enable nginx.service // 啟動 nginx systemctl start nginx.service
打開瀏覽器

http://172.16.1.218:8010

設置 Consul-template 的生成 nginx 配置文件的目錄

創建目錄
  • mkdir -p /etc/nginx/conf.d/consul

  • 編輯 nginx.conf

    編輯 nginx.conf 文件,將上面的目錄 /etc/nginx/conf.d/consul 作為配置文件目錄導入到 nginx 中

  • vi /etc/nginx/nginx.conf


  • // 將下面這句代碼加入到nginx倒數第二行


  • include /etc/nginx/consul/*.conf

  • 編輯好的 nginx.conf 文件

    安裝 consul-template

    因為 consul-template 只有一個二進制包,所以其安裝過程非常的簡單;首先是下載二進制包

  • wget https://releases.hashicorp.com/consul-template/0.20.0/consul-template_0.20.0_linux_amd64.tgz

  • 解壓到當前目錄

  • tar -zxf consul-template_0.20.0_linux_amd64.tgz

  • 移動到 consul 相同目錄下

  • mkdir /usr/local/bin/consul-template

  • mv consul-template /usr/local/bin/consul-template

  • 設置環境變量,輸入命令:vi /etc/profile

  • // 將這里的代碼添加到 profile 文件末尾

  • export CONSUL_TEMPLATE_HOME=/usr/local/bin/consul-template

  • export PATH=$PATH:$CONSUL_HOME:$CONSUL_TEMPLATE_HOME


  • // 執行命令使環境變量生效

  • source /etc/profile

  • 將模板文件存入 KV系統

    為了獲得變更自動通知,我們呢需要將 consul-template 模板文件添加到 Consul 的 Key/Value 存儲系統中

    從控制臺存入

    代碼格式選擇 HCL,會自動高亮喔。關于 consul-template 的語法,請參考:https://github.com/hashicorp/consul-template,為了方便,我直接復制了官方的 examples/nginx.md 文件內容

    在 consul-template 本地建立 tpl 文件

    回到 consul-template 服務器上的目錄 /usr/local/bin/consul-template ,創建一個 find_adress.tpl 文件內容

  • // 創建文件

  • vi find_adress.tpl


  • // 輸入以下內容

  • {{ key "hashicorp/street_address" }}


  • // 保存退出

  • 根據 find_adress.tpl 獲得模板內容
  • // 執行命令

  • consul-template --template "find_address.tpl:hashicorp_address.tpl" -once

  • 好了,準備工作進行到這里,已基本結束;經過這么長時間的命令執行,相信很多同學已經把網頁關閉了,但是沒辦法,這這些事情還是得一步一步的來。

    啟動 consul-template

    終于可以啟動了 consul-template 了,激動人心哪,consul-template 提供兩種啟動方式,命令行參數/加載配置文件 方式啟動,就便利性來說,還是推薦“加載配置文件”方式啟動,一次配置,終身有效嘛。

    命令行參數啟動方式
  • consul-template --consul-addr 172.16.1.218:8500 --template "hashicorp_address.tpl:/etc/nginx/consul/vhost.conf:/usr/sbin/nginx -s reload" --log-level=info

  • 上面的代碼參數這里做簡單的解釋

    • --consul-addr:指定 Consul 代理服務器的地址,默認 127.0.0.1:8500

    • --template :指定模板,這里有3個值,每個值以冒號(:)進行分隔,首先是利用 hashicorp_address.tpl 生成 /etc/nginx/consul/vhost.conf 配置文件,然后馬上執行命令 /usr/sbin/nginx -s reload 重新加載 nginx 配置

    • --log-level:日志輸出級別

    查看生成的 vhost.conf 文件

    加載配置文件啟動方式

    編寫 hashicorp 的 nginx 配置文件

  • wait {

  • min = "3s"

  • max = "9s"

  • }


  • syslog {

  • enabled = true

  • facility = "LOCAL5"

  • }


  • consul {

  • address = "172.16.1.218:8500"

  • }


  • template {

  • source = "hashicorp_address.tpl"

  • destination = "/etc/nginx/consul/vhost.conf"

  • command = "service nginx reload"

  • }

  • 命令行參數和配置文件中的參數名稱是一致的,配置文件編寫完成,以加載配置文件形式啟動 consul-template

  • consul-template -config "nginx.hcl" --log-level=info

  • 通過上圖看到,consul-template 啟動后即刻進入偵聽狀態,在偵聽 Consul 服務變動,如果有服務注冊進來,馬上就會更新 nginx 文件;下面,我們嘗試啟動一個 Ron.Consul.dll:12008 的服務,該服務將會注冊到 Consul,讓我們來看看在不重新啟動 consul-template 的情況下,是否會自動更新 vhost.conf 文件

    啟動 12008 服務注冊

    12008注冊為 home 節點的服務已經啟動了,下面查看 /etc/nginx/consul/vhost.conf 配置文件

    上圖紅框處內容就是自動更新的配置文件

    通過訪問 nginx 訪問服務

    還記得最開始的時候,我們設置 nginx 的默認偵聽端口為 8010 嗎;現在,我們在瀏覽器中打開下面的地址

  • http://172.16.1.218:8010/home/add/10/20

  • 得到返回值:30,表示本次搭建 consul-template+nginx 成功!

    結束語

    寫了這么長時間的博客,這篇文章應該是輸入命令最多的一篇文章了,這也是和 Windows 下編程的最大的不同,很有快感,希望大家也樂在其中。

    .NETCore 集成 Consul 導讀

    • 1、Consul初探-在深交之前先認識

    • 2、Consul初探-從安裝到運行

    • 3、Consul初探-服務注冊和發現

    • 4、Consul初探-集成ocelot

    • 5、Consul初探-Consul-template+nginx實現自動負載均衡

    總結

    以上是生活随笔為你收集整理的Consul-template+nginx实现自动负载均衡的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。