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
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...