溫馨提示×
溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發(fā)布時間:2020-06-04 13:26:04 來源:網(wǎng)絡 閱讀:3102 作者:xjtuhit 欄目:編程語言

作者:Eagle

某船舶行業(yè)科技公司,運維工程師,51Reboot學員。通過在51Reboot學習,由運維工程師轉至運維開發(fā)工程師。完成公司自動化平臺的構建,對運維開發(fā)有了自己的理解,空閑時間寫了這么一個小的項目來和大家分享一下。


環(huán)境


CentOS 6/7 x64

Python:2 .7.6

Etcd: 3.2.18

Confd:0 .16.0

Nginx: 1.12.1


效果演示

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

一,拓撲圖:

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

二、涉及軟件


ETD: 。分布式KV存儲系統(tǒng),一般用于共享配置和服務注冊與發(fā)現(xiàn)是ETOS存儲格式類似于文件系統(tǒng),以根“/”開始下面一級級目錄,最后一個是重點,一個關鍵對應一個值。


ETCD 集群:使用筏協(xié)議保證每個節(jié)點數(shù)據(jù)一致,由多個節(jié)點對外提供服務這里只用單臺。


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


Nginx: Nginx是一款輕量級的Web服務器/反向代理服務器以及電子郵件代理服務器,并在一個BSD-like協(xié)議下發(fā)行。來自俄羅斯的程序設計師l gor Sysoev所開發(fā),供俄國大型的入口網(wǎng)站及搜索引擎聯(lián)系Rambler使用。其特點是占有內(nèi)存少,并發(fā)能力強,事實上nginx的的并發(fā)能力確實在同類型的網(wǎng)頁服務器中表現(xiàn)較好。


三、軟件部署


環(huán)境說明:建議使用 Cento7.X X64


1)安裝 etcd(這里安裝的單機,集群環(huán)境根據(jù)自己的需求選?。?/p>

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


2)安裝 nginx


#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


下載完畢丟到系統(tǒng)里面


#cp confd / usr / bin / confd 
#哪個confd
在/ usr / bin中/ confd


4)創(chuàng)建配置文件目錄


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

 conf.d#資源模板,下面文件必須以toml后綴

 templates#配置文件模板,下面文件必須以tmpl后綴


5)創(chuàng)建 confd 配置文件


  #vi /etc/confd/conf.d/app01.conf.toml
   src =“app01.conf.tmpl”#默認在/ etc / confd / templates目錄下
   dest =“/ usr / local / nginx / conf / vhost / app01.conf”#要更新的配置文件
   鍵= [
      “/ Shopping”,#監(jiān)測的關鍵
   ]
   reload_cmd =“/ usr / local / nginx / sbin / nginx -s reload”#最后執(zhí)行的命令


6)創(chuàng)建 confd 模板


  #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;
     }
       位置/狀態(tài){
           檢查狀態(tài);
           access_log off;
          }
   }


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


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


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

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


四、配置平臺部署

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


 #git clone https://github.com/1032231418/Conf_Web.git
 #cd Conf_Web / ospweb /
 #virtualenv env#建議創(chuàng)建一個沙盒環(huán)境跑該平臺
 #source env / bin / activate#使用沙盒環(huán)境
 #pip install -r requirement.txt#安裝相關軟件


2)創(chuàng)建數(shù)據(jù)庫并將表刷入數(shù)據(jù)庫

#vi opsweb / settings.py#這里數(shù)據(jù)庫信息改為自己的數(shù)據(jù)庫信息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#提交遷移文件至數(shù)據(jù)庫,將表刷入數(shù)據(jù)庫


3)創(chuàng)建超級管理員賬號

#python manage.py createsuperuser

4)運行平臺

#python manage.py runserver 0:8000

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


例子:購物平臺為例


項目創(chuàng)建:


1.創(chuàng)建商城項目/購物


2.創(chuàng)建商城項目里面的/ Shopping / nginx nginx服務


3.創(chuàng)建nginx集群目錄/ Shopping / nginx / cluster1


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


5.域名和節(jié)點名稱可能是多個,這里我們需要創(chuàng)建目錄/ Shopping / nginx / cluster1 / server_name和/ Shopping / nginx / cluster1 / upstream

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


etcd里面存儲的值

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


配置創(chuàng)建:


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


2.綁定一個域名/ Shopping / nginx / cluster1 / server_name / 1


3.創(chuàng)建一個集群節(jié)點/ Shopping / nginx / cluster1 / upstream / web1

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


etcd 里面存儲的值

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


生成的配置文件


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

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

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


就分享該項目的作者在2018年7月12日晚21:00-22:00會跟大家詳細講解該項目并且相互探討共同學習進步有興趣的朋友可以看一下報名方式然后報名免費領取視頻并且進入直播群和我們的作者互動。


報名方式

分享時間: 18年7月12日晚


21:00--22:00


分享方式:網(wǎng)絡直播


報名方式:掃碼添加小助手微信,備注“公開課”進入直播分享群免費獲取視頻

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


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI