博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 从零搭建 Conf_Web 配置管理平台
阅读量:4473 次
发布时间:2019-06-08

本文共 4274 字,大约阅读时间需要 14 分钟。

作者:Eagle

某船舶行业科技公司,运维工程师,51Reboot学员。通过在51Reboot学习,由运维工程师转至运维开发工程师。完成公司自动化平台的构建,对运维开发有了自己的理解,空闲时间写了这么一个小的项目来和大家分享一下。

环境

CentOS 6/7 x64

Python:  2.7.6

Etcd: 3.2.18

Confd:  0.16.0

Nginx: 1.12.1

效果演示

 

拓扑图:

 

 

涉及软件

 

etd:分布式KV存储系统,一般用于共享配置和服务注册与发现。是ETOS存储格式类似于文件系统,以根“/”开始下面一级级目录,最后一个是Key,一个关键对应一个值。

etcd集群:使用Raft协议保证每个节点数据一致,由多个节点对外提供服务。这里只用单台。

confd:管理本地应用配置文件,使用etcd或consul存储的数据渲染模板,还支持redis,zookeeper等.confd有一个手表功能,通过HTTP API定期监测对应的etcd中目录变化,获取最新的价值,然后竟染模板

Nginx: Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件代理服务器,并在一个BSD-like协议下发行。来自俄罗斯的程序设计师l gor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。 

软件部署

 环境说明:建议使用Cento7.X X64

1)安装 etcd(这里安装的单机,集群环境根据自己的需求选取)

# 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

#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 

3)安装 confd

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

下载完毕丢到系统里面

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

4)创建配置文件目录

# mkdir -p /etc/confd/{conf.d,templates} conf.d          # 资源模板,下面文件必须以toml后缀 templates       # 配置文件模板,下面文件必须以tmpl后缀

5)创建 confd 配置文件

# vi /etc/confd/conf.d/app01.conf.toml   [template]   src = "app01.conf.tmpl"                              #默认在/etc/confd/templates目录下   dest = "/usr/local/nginx/conf/vhost/app01.conf"      #要更新的配置文件   keys = [      "/Shopping",                                      #监测的key   ]   reload_cmd ="/usr/local/nginx/sbin/nginx -s reload"   #最后执行的命令

6)创建confd模板

# vi  /etc/confd/templates/app01.conf.tmpl       upstream {
{getv "/Shopping/nginx/cluster1/proxy_name"}} { {
{range getvs "/Shopping/nginx/cluster1/upstream/*"}} server {
{.}}; {
{end}} 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 { server_name {
{range getvs "/Shopping/nginx/cluster1/server_name/*"}} {
{.}} {
{end}}; location / { 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; } location /status { check_status; 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                  #建议创建一个沙盒环境跑该平台 # source  env/bin/activate         #使用沙盒环境 # pip install -r requirement.txt   #安装相关软件

2)创建数据库并将表刷入数据库

# 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)创建超级管理员账号

#python manage.py createsuperuser

4)运行平台

#python manage.py runserver 0:8000

访问地址就是http:// ip:8000账号密码就是上一步创建的超级管理员账号密码5)登录平台为nginx创建键/值

例子:Shopping平台为例

项目创建:

1.创建商城项目/购物

2.创建商城项目里面的/ Shopping / nginx nginx服务

3.创建nginx集群目录/ Shopping / nginx / cluster1

4.给我们的商城nginx集群1项目创建配置文件

5.域名和节点名称可能是多个,这里我们需要创建目录/ Shopping / nginx / cluster1 / server_name和/ Shopping / nginx / cluster1 / upstream

 

etcd 里面存储的值

配置创建:

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

2.绑定一个域名/ Shopping / nginx / cluster1 / server_name / 1

3.创建一个集群节点/ Shopping / nginx / cluster1 / upstream / web1

 

etcd里面存储的值

 

 

生成的配置文件

 

通过hosts文件我们可以查看节点状态(虽然这个节点不是up状态但是由此可见,我们可以动态添加节点)

就分享该项目的作者在2018年7月12日晚21:00-22:00 会跟大家详细讲解该项目并且相互探讨共同学习进步。有兴趣的朋友可以看一下报名方式然后报名免费领取视频并且进入直播群和我们的作者互动。

 报名方式

分享时间: 18年7月12日晚

21:00--22:00

分享方式:网络直播

报名方式:扫码添加小助手微信,备注“ 公开课 ”进入直播分享群免费获取视频

转载于:https://www.cnblogs.com/reboot51/p/9292943.html

你可能感兴趣的文章
pytest_用例运行级别_模块级
查看>>
HDU多校Round 10
查看>>
JFree图表
查看>>
读/写文件操作
查看>>
20155339平措卓玛 Exp1 PC平台逆向破解(5)M
查看>>
本地项目上传码云
查看>>
TensorFlow在Windows上的CPU版本和GPU版本的安装指南(亲测有效)
查看>>
蒟蒻吃药计划-治疗系列 #round5 采药+数字组合代码存放
查看>>
Git
查看>>
ImageSwitcher 右向左滑动的实现方式
查看>>
数学之美读书笔记一信息的度量和作用
查看>>
《荣枯鉴》示伪卷八
查看>>
NLP 第10章 基于深度学习的NLP 算法
查看>>
win7下出现'telnet' 不是内部或外部命令,也不是可运行的程序或批处理文件的解决方法...
查看>>
Maven 依赖范围(转)
查看>>
Google Chrome中的高性能网络(转)
查看>>
[置顶] 数据结构之 二叉树的构造与遍历(先序,中序,后序,层次)
查看>>
Tomcat在处理GET和POST请求时产生的乱码问题
查看>>
XSS 攻击原理及防护
查看>>
操作符重载
查看>>