Python從零搭建Conf_Web配置管理平臺

来源:https://www.cnblogs.com/aiaitie/archive/2018/07/11/9294053.html
-Advertisement-
Play Games

環境 CentOS 6/7 x64 Python:2 .7.6 Etcd: 3.2.18 Confd:0 .16.0 Nginx: 1.12.1 效果演示 一,拓撲圖: 二、涉及軟體 ETD: 。分散式KV存儲系統,一般用於共用配置和服務註冊與發現是ETOS存儲格式類似於文件系統,以根“/”開始下麵 ...


環境

 

CentOS 6/7 x64

Python:2 .7.6

Etcd: 3.2.18

Confd:0 .16.0

Nginx: 1.12.1

 

效果演示

yanshi.gif

一,拓撲圖:

tuopu.png

二、涉及軟體

 

ETD: 。分散式KV存儲系統,一般用於共用配置和服務註冊與發現是ETOS存儲格式類似於文件系統,以根“/”開始下麵一級級目錄,最後一個是重點,一個關鍵對應一個值。

 

ETCD 集群:使用筏協議保證每個節點數據一致,由多個節點對外提供服務這裡只用單台。

 

confd:管理本地應用配置文件,使用etcd或consul存儲的數據渲染模板,還支持redis,zookeeper等.confd有一個手錶功能,通過HTTP API定期監測對應的etcd中目錄變化,獲取最新的價值,然後竟染模板

 

Nginx: Nginx是一款輕量級的Web伺服器/反向代理伺服器以及電子郵件代理伺服器,併在一個BSD-like協議下發行。來自俄羅斯的程式設計師l gor Sysoev所開發,供俄國大型的入口網站及搜索引擎聯繫Rambler使用。其特點是占有記憶體少,併發能力強,事實上nginx的的併發能力確實在同類型的網頁伺服器中表現較好。

 

三、軟體部署

 

環境說明:建議使用 Cento7.X X64

 

1)安裝 etcd(這裡安裝的單機,集群環境根據自己的需求選取)

1 2 3 #yum install etcd -y #sed -i's / localhost / 0.0.0.0 / g'/etc/etcd/etcd.conf#配置監聽地址 #systemctl start etcd && systemctl enable etcd#啟動服務設置開機動

 

2)安裝 nginx

 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 #cd / usr / local / src  #wget http://nginx.org/download/nginx-1.12.1.tar.gz  #git clone https://github.com/yaoweibin/nginx_upstream_check_module.git    #tar -zxvf nginx-1.12.1.tar.gz   #cd nginx-1.12.1  #patch -p1 </usr/local/src/nginx_upstream_check_module/check_1.12.1+.patch  #。/ configure --prefix = / usr / local / nginx --add-module = / usr / local / src / nginx_upstream_check_module /  make && make install  #mkdir / usr / local / nginx / conf / vhost /  Nginx的主配置文件修改為這個樣子,增加包括目錄配置  #vi /usr/local/nginx/conf/nginx.conf          #user nobody;    worker_processes 1;    #error_log logs / error.log;    #error_log logs / error.log通知;    #error_log logs / error.log info;    #pid logs / nginx.pid;    事件{      worker_connections 1024;    }    http {      包括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;      #tcp_nopush on;      #keepalive_timeout 0;      keepalive_timeout 65;      #gzip on;    包括vhost / * .conf;    }

 

3)安裝 confd

 

地址下載https://github.com/kelseyhightower/confd/releases

 

下載完畢丟到系統裡面

 

1 2 3 #cp confd / usr / bin / confd  #哪個confd / usr / bin/ confd

 

4)創建配置文件目錄

 

#mkdir -p /etc/confd/{conf.d,templates}

 conf.d#資源模板,下麵文件必須以toml尾碼

 templates#配置文件模板,下麵文件必須以tmpl尾碼

 

5)創建 confd 配置文件

 

1 2 3 4 5 6 7   #vi /etc/confd/conf.d/app01.conf.toml    src =“app01.conf.tmpl”#預設在/ etc / confd / templates目錄下    dest =/ usr / local / nginx / conf / vhost / app01.conf”#要更新的配置文件    = [       / Shopping”,#監測的關鍵    ]    reload_cmd =/ usr / local / nginx / sbin / nginx -reload”#最後執行的命令

 

6)創建 confd 模板

 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25   #vi /etc/confd/templates/app01.conf.tmpl          upstream {{getv“/ Shopping / nginx / cluster1 / proxy_name”}} {      {{range getvs“/ Shopping / nginx / cluster1 / upstream / *”}}        server {{。}};      {{結束}}      check interval = 5000 rise = 1 fall = 5 timeout = 4000 type = http;      check_http_send“HEAD / HTTP / 1.0 \ r \ n \ r \ n”;      check_http_expect_alive http_2xx http_3xx;    }           伺服器{       server_name {{range getvs“/ Shopping / nginx / cluster1 / server_name / *”}} {{。}} {{end}};       位置 / {         proxy_pass http:// {{getv“/ Shopping / nginx / cluster1 / proxy_name”}};         proxy_redirect off;         proxy_set_header Host $ host;         proxy_set_header X-Real-IP $ remote_addr;         proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for;      }        位置/狀態{            檢查狀態;            access_log off;           }    }

 

7)啟動 confd 並設置開機啟動

 

開機啟動腳本會隨文檔附帶

 

拷貝至 /etc/init.d/confd,只需要更改等改為連接地址即可

1 / etc / init.d / confd start && chkconfig --add confd && chkconfig confd on

 

四、配置平臺部署

1)Github克隆平臺代碼安裝平臺依賴

 

1 2 3 4 5  #git clone https://github.com/1032231418/Conf_Web.git  #cd Conf_Web / ospweb /  #virtualenv env#建議創建一個沙盒環境跑該平臺  #source env / bin / activate#使用沙盒環境  #pip install -r requirement.txt#安裝相關軟體

 

2)創建資料庫並將表刷入資料庫

1 #vi opsweb / settings.py#這裡資料庫信息改為自己的資料庫信息DATABASES = {'default':{'ENGINE':'django.db.backends.mysql','NAME':'confd','HOST' :'192.168.8.114','USER':'root','PASSWORD':'123456','PORT':3306,}} ETCD_Server =“192.168.0.221”#這裡改為自己etcd的ip地址ETCD_Port = 2379 #python manage.py migrate#提交遷移文件至資料庫,將表刷入資料庫

 

3)創建超級管理員賬號

1 #python manage.py createsuperuser

4)運行平臺

1 #python manage.py runserver 0:8000

訪問地址就是http:// ip:8000賬號密碼就是上一步創建的超級管理員賬號密碼5)登錄平臺為nginx創建鍵/值

 

例子:購物平臺為例

 

項目創建:

 

1.創建商城項目/購物

 

2.創建商城項目裡面的/ Shopping / nginx nginx服務

 

3.創建nginx集群目錄/ Shopping / nginx / cluster1

 

4.給我們的商城nginx的集群1項目創建配置文件

 

5.功能變數名稱和節點名稱可能是多個,這裡我們需要創建目錄/ Shopping / nginx / cluster1 / server_name和/ Shopping / nginx / cluster1 / upstream

0 (1).png

 

etcd裡面存儲的值

0 (2).jpg

 

配置創建:

 

1.反向代理/ Shopping / nginx / cluster1 / proxy_name

 

2.綁定一個功能變數名稱/ Shopping / nginx / cluster1 / server_name / 1

 

3.創建一個集群節點/ Shopping / nginx / cluster1 / upstream / web1

0 (3).jpg

 

etcd 裡面存儲的值

0 (4).jpg

 

生成的配置文件

 

0 (5).png

通過主機文件我們可以查看節點狀態(雖然這個節點不是最高狀態但是由此可見,我們可以動態添加節點)

0 (6).png


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 技術交流群:821039247 安裝node config模塊 在config文件夾下麵創建 文件,這是環境配置的預設的文件,如果沒有別的配置,則為預設這裡配置。如果要設置自己的環境配置文件,可以直接新建 ,如dev環境 即可,然後在 裡面配置相關啟動設置,載入對應環境文件即可。 在 裡面編輯如下內 ...
  • 因為是新入門antd-pro這個的小白,所以在mock數據和伺服器數據切換這裡搞了將近2天才弄好,配置如下,供各位初學者參考,如有錯誤的地方,請大神指出~叩謝!! 下麵開始乾貨: 1、.roadhogrc.mock.js這個文件沒有任何修改。 2、.webpackrc.js 文件中添加proxy,如 ...
  • 微信展示列表效果藉助於 wx:for 簡單寫一個列表(wxml文件中): 對應的數據源(js文件中): 寫一個點擊監聽: 效果: 以上、可以實現列表的item點擊效果,但是無法到點擊的item對應的數據源數據 解決方法: 給有點擊事件的組件添加一個 data-any 屬性 any可以是任意數據類型。 ...
  • transition從效果上看是一種平滑過渡的動畫,本質上是線上性時間內將屬性從開始值過渡到結束值。例如獲得焦點,點擊滑鼠等動作導致CSS屬性值的變化是瞬間完成的,感覺有點生硬。用transition可以指定在某時間段內將屬性值平滑過渡,增強用戶體驗。 4個子屬性 transition-proper ...
  • 閱讀目錄 架構的定義 架構是做什麼? 做架構的最佳實踐 什麼是好架構 如何成為架構師 結語 又有2周時間沒冒泡了,最近實在沒有大塊的時間來寫文章,就當找個理由。。。 也因為碎片化的時間多了,所以開始刷某乎了,關註了架構相關的板塊,也順手回答了一些問題。發現有很多同道中人正在經歷著我前兩年經歷的階段, ...
  • 關於Repository模式,直接百度查就可以了,其來源是《企業應用架構模式》。我們新建一個Infrastructure文件夾,這裡就是基礎設施部分,EF Core的上下文類以及Repository層都放在這裡面。新建一個IReposotory的介面,其內容就是封裝了基本的CRUD: public ...
  • 簡介 之前公司用的是Consul進行服務發現以及服務管理,自己一直以來只是用一下,但是沒有具體的深入,覺得學習不可以這樣,所以稍微研究了一下。 網上有很多關於Consul的介紹和對比,我這裡也不獻醜了,大家搜索的時候可能會經常看到這麼一個表格,此表格採摘自:https://luyiisme.gith ...
  • Dubbo是Alibaba開源的分散式服務框架,它最大的特點是按照分層的方式來架構,使用這種方式可以使各個層之間解耦合(或者最大限度地松耦合)。從服務模型的角度來看,Dubbo採用的是一種非常簡單的模型,要麼是提供方提供服務,要麼是消費方消費服務,所以基於這一點可以抽象出服務提供方(Provider ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...