成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

nginx-template如何實(shí)現(xiàn)動(dòng)態(tài)更新Nginxupstream

這篇文章將為大家詳細(xì)講解有關(guān)nginx-template如何實(shí)現(xiàn)動(dòng)態(tài)更新Nginx upstream,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

成都創(chuàng)新互聯(lián)專注于北海街道網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供北海街道營(yíng)銷型網(wǎng)站建設(shè),北海街道網(wǎng)站制作、北海街道網(wǎng)頁(yè)設(shè)計(jì)、北海街道網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務(wù),打造北海街道網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供北海街道網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

Consul Template 提供一個(gè)方便的方式從Consul服務(wù)獲取數(shù)據(jù)通過consul-template的后臺(tái)程序保存到文件系統(tǒng),這個(gè)后臺(tái)進(jìn)程監(jiān)控Consul中數(shù)據(jù)的變化并更新任意數(shù)量的模板到文件系統(tǒng)。模板更新完成后consul-template也可以觸發(fā)相關(guān)的指令或者腳本,此處通過簡(jiǎn)單的實(shí)踐動(dòng)態(tài)更新Nginx的upstream server并且觸發(fā)reloadnginx服務(wù)。當(dāng)然對(duì)于小規(guī)模下的應(yīng)用場(chǎng)景還有很多,比如Haproxy配置文件動(dòng)態(tài)更新等。

這里小小的做個(gè)調(diào)查,你使用過以下那種方案:

下面,我們就開始今天的實(shí)踐目的吧,通過consul-template與consul完成nginx配置文件的自動(dòng)更新:

Docker部署Consul集群

實(shí)驗(yàn)版本信息:

軟件版本
主機(jī)CentOS Linux 7 (Core)
內(nèi)核3.10.0-1160.15.2.el7.x86_64
docker20.10.4
Consul鏡像consul:latest -> 1.9.1
Consul-template0.20.0

準(zhǔn)備consul集群,你也可以使用單獨(dú)的一個(gè)consul實(shí)例做基礎(chǔ)環(huán)境的支撐,可以參考通過Docker一鍵部署consul集群

nginx-template如何實(shí)現(xiàn)動(dòng)態(tài)更新Nginx upstream  
Docker一鍵部署Consul集群原文
 

安裝consul-template以及基礎(chǔ)環(huán)境

此處,安裝下consul-template,然后運(yùn)行一個(gè)nginx容器,并且把nginx配置文件掛載到宿主機(jī)上:

wget https://releases.hashicorp.com/consul-template/0.20.0/consul-template_0.20.0_linux_amd64.zip
unzip consul-template_0.20.0_linux_amd64.zip
chmod +x consul-template
mv consul-template /usr/local/bin/
docker run -d --name nginx --restart=always -p 80:80 nginx:1.18
docker cp nginx:/etc/nginx /tmp/nginx
docker stop nginx && docker rm nginx
docker run -d --name nginx --restart=always -p 80:80 -v /tmp/nginx:/etc/nginx nginx:1.18
 

準(zhǔn)備一個(gè)腳本文件,當(dāng)consul-template從consul中獲取到數(shù)據(jù)的更新后,觸發(fā)該腳本運(yùn)行nginx_operator.sh,實(shí)現(xiàn)reloadnginx的配置文件。

#!/bin/sh
docker ps -aq --filter "name=nginx"
if [ $? -ne 0 ]; then
 echo "Starting Nginx Server..."
 docker run -d --name nginx --restart=always -p 80:80 -v /tmp/nginx:/etc/nginx nginx:1.18
 echo "nginx start done."
else
 echo "Reloading nginx..."
 docker exec -it nginx nginx -s reload;
 echo "nginx reloading done."
fi
 

接下來準(zhǔn)備consul-template運(yùn)行的配置文件nginx.hcl,里面通過source指定了我們要使用的模板文件,以及destination指定根據(jù)模板渲染后生成的配置文件存儲(chǔ)的路徑位置,最后一個(gè)command就是當(dāng)完成一次渲染后,要觸發(fā)的動(dòng)作,這里是一個(gè)腳本,就是會(huì)觸發(fā)該腳本的內(nèi)容。

wait {
  min = "3s"
  max = "9s"
}

syslog {
  enabled = true
  facility = "LOCAL5"
}

consul {
  address = "192.168.99.3:8500"
}

template {
  source = "/tmp/nginx/conf.d/consul/backend_nginx.ctmpl"
  destination = "/tmp/nginx/conf.d/consul/nginx01.conf"
  command = "/root/start_nginx.sh"
}
 

然后,需要準(zhǔn)備一下consul-template要監(jiān)聽的模板文件backend_nginx.ctmpl,consul-template可以同時(shí)指定多個(gè)模板文件,如下所示:

consul-template \
  -consul $consul_cluster_address:8500 \
  -template "$template1:$file1:$command1" \
  -template "$template2:$file2:$comand2" \
  -template "$template3:$file3"
 

此處只用一個(gè)模板做一下測(cè)試,模板的中的語(yǔ)法是go template語(yǔ)法,這里實(shí)現(xiàn)的比較簡(jiǎn)單,只是做了upstream.server的渲染,對(duì)于實(shí)際使用來說,可以把模板文件中的nginx1server_name渲染的數(shù)據(jù)也存在consul集群中,這樣也是可以渲染的。

upstream nginx1 {
    server 127.0.0.1:2000 down;
    {{ range service "local.www@dc1" }}
    server {{.Address}}:{{.Port}} weight=1;
    {{end}}
}

server {
     listen 80;
     server_name www.kubemaster.top;
     location / {
         proxy_pass http://nginx1;
     }
}
 

在這個(gè)實(shí)驗(yàn)中,consul-template通過consul拿到變化后的數(shù)據(jù),將數(shù)據(jù)成功的渲染到配置文件之后,我們可以通過www.kubeamster.top能正常訪問upstream后的服務(wù),所以還需要準(zhǔn)備一個(gè)上游服務(wù),這里直接使用docker快速的運(yùn)行一個(gè)即可

docker run -d --name nginx1 -p 8081:80 nginx:1.18
docker exec -it nginx1 bash
echo "backend server for consul-template" > /usr/share/nginx/html/index.html
 

此時(shí),我們就可以把consul-template運(yùn)行起來,作為后端進(jìn)程運(yùn)行著:

[root@node1 consul]# consul-template -config "nginx.hcl" --log-level=info
2021/03/04 19:25:21 [DEBUG] (logging) enabling syslog on LOCAL5
2021/03/04 11:25:21.098622 [INFO] consul-template v0.20.0 (b709612c)
2021/03/04 11:25:21.098767 [INFO] (runner) creating new runner (dry: false, once: false)
2021/03/04 11:25:21.099244 [INFO] (runner) creating watcher
2021/03/04 11:25:21.101210 [INFO] (runner) starting
...
 

最后我們通過curl或者postman把運(yùn)行的nginx1服務(wù)往consul集群中注冊(cè)一下

curl --location --request PUT 'http://192.168.99.3:8500/v1/catalog/register' \
--header 'Content-Type: application/json' \
--data-raw '{"Datacenter": "dc1","Node": "721d401b9555","Address": "192.168.99.3","Service": { "Id": "172.17.0.12:80", "Service": "www","tags": [ "local" ],"Port": 8081}}'
 

通過hostctl增加一條本地DNS解析

nginx-template如何實(shí)現(xiàn)動(dòng)態(tài)更新Nginx upstream  
通過hostctl增加一條本地DNS解析

最后,我們通過瀏覽器訪問一下http://www.kubemaster.top查看返回的內(nèi)容就是nginx1的服務(wù)。這說明consul-template按照預(yù)期完成了工作。

nginx-template如何實(shí)現(xiàn)動(dòng)態(tài)更新Nginx upstream  
Access Backend server by consul-template

到這里,基本上完成了使用consul-template與consul實(shí)現(xiàn)nginx配置文件的自動(dòng)更新。

關(guān)于nginx-template如何實(shí)現(xiàn)動(dòng)態(tài)更新Nginx upstream就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

當(dāng)前文章:nginx-template如何實(shí)現(xiàn)動(dòng)態(tài)更新Nginxupstream
本文地址:http://jinyejixie.com/article20/gpehco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站用戶體驗(yàn)、網(wǎng)頁(yè)設(shè)計(jì)公司Google、自適應(yīng)網(wǎng)站網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)
沂源县| 彭泽县| 乾安县| 和平县| 徐闻县| 苍梧县| 峨山| 齐齐哈尔市| 日喀则市| 乌兰浩特市| 高州市| 石棉县| 班戈县| 陕西省| 西贡区| 古浪县| 陕西省| 隆昌县| 濉溪县| 白沙| 达孜县| 崇信县| 商丘市| 大丰市| 山阳县| 咸宁市| 昌黎县| 三台县| 台中市| 藁城市| 德化县| 利津县| 应城市| 连平县| 巫山县| 佛山市| 开江县| 金堂县| 东兰县| 德安县| 达拉特旗|