Python从零搭建Conf_Web配置管理平台
作者: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存储格式类似于文件系统,以根“/”开始下面一级级目录,最后一个是重点,一个关键对应一个值。
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(这里安装的单机,集群环境根据自己的需求选取)
#yuminstalletcd-y#sed-i's/localhost/0.0.0.0/g'/etc/etcd/etcd.conf#配置监听地址#systemctlstartetcd&&systemctlenableetcd#启动服务设置开机动
2)安装 nginx
#cd/usr/local/src#wgethttp://nginx.org/download/nginx-1.12.1.tar.gz#gitclonehttps://github.com/yaoweibin/nginx_upstream_check_module.git#tar-zxvfnginx-1.12.1.tar.gz#cdnginx-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&&makeinstall#mkdir/usr/local/nginx/conf/vhost/Nginx的主配置文件修改为这个样子,增加包括目录配置#vi/usr/local/nginx/conf/nginx.conf#usernobody;worker_processes1;#error_loglogs/error.log;#error_loglogs/error.log通知;#error_loglogs/error.loginfo;#pidlogs/nginx.pid;事件{worker_connections1024;}http{包括mime.types;default_typeapplication/octet-stream;#log_formatmain'$remote_addr-$remote_user[$time_local]“$request”'#'$status$body_bytes_sent“$http_referer”'#'“$http_user_agent”“$http_x_forwarded_for”';#access_loglogs/access.logmain;sendfileon;#tcp_nopushon;#keepalive_timeout0;keepalive_timeout65;#gzipon;包括vhost/*.conf;}
3)安装 confd
地址下载https://github.com/kelseyhightower/confd/releases
下载完毕丢到系统里面
#cpconfd/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.tomlsrc=“app01.conf.tmpl”#默认在/etc/confd/templates目录下dest=“/usr/local/nginx/conf/vhost/app01.conf”#要更新的配置文件键=[“/Shopping”,#监测的关键]reload_cmd=“/usr/local/nginx/sbin/nginx-sreload”#最后执行的命令
6)创建 confd 模板
#vi/etc/confd/templates/app01.conf.tmplupstream{{getv“/Shopping/nginx/cluster1/proxy_name”}}{{{rangegetvs“/Shopping/nginx/cluster1/upstream/*”}}server{{。}};{{结束}}checkinterval=5000rise=1fall=5timeout=4000type=http;check_http_send“HEAD/HTTP/1.0\r\n\r\n”;check_http_expect_alivehttp_2xxhttp_3xx;}服务器{server_name{{rangegetvs“/Shopping/nginx/cluster1/server_name/*”}}{{。}}{{end}};位置/{proxy_passhttp://{{getv“/Shopping/nginx/cluster1/proxy_name”}};proxy_redirectoff;proxy_set_headerHost$host;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;}位置/状态{检查状态;access_logoff;}}
7)启动 confd 并设置开机启动
开机启动脚本会随文档附带
拷贝至 /etc/init.d/confd,只需要更改等改为连接地址即可
#/etc/init.d/confdstart&&chkconfig--addconfd&&chkconfigconfdon
四、配置平台部署
1)Github克隆平台代码安装平台依赖
#gitclonehttps://github.com/1032231418/Conf_Web.git#cdConf_Web/ospweb/#virtualenvenv#建议创建一个沙盒环境跑该平台#sourceenv/bin/activate#使用沙盒环境#pipinstall-rrequirement.txt#安装相关软件
2)创建数据库并将表刷入数据库
#viopsweb/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#pythonmanage.pymigrate#提交迁移文件至数据库,将表刷入数据库
3)创建超级管理员账号
#pythonmanage.pycreatesuperuser
4)运行平台
#pythonmanage.pyrunserver0: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
etcd里面存储的值
配置创建:
1.反向代理/ Shopping / nginx / cluster1 / proxy_name
2.绑定一个域名/ Shopping / nginx / cluster1 / server_name / 1
3.创建一个集群节点/ Shopping / nginx / cluster1 / upstream / web1
etcd 里面存储的值
生成的配置文件
通过主机文件我们可以查看节点状态(虽然这个节点不是最高状态但是由此可见,我们可以动态添加节点)
就分享该项目的作者在2018年7月12日晚21:00-22:00会跟大家详细讲解该项目并且相互探讨共同学习进步有兴趣的朋友可以看一下报名方式然后报名免费领取视频并且进入直播群和我们的作者互动。
报名方式
分享时间: 18年7月12日晚
21:00--22:00
分享方式:网络直播
报名方式:扫码添加小助手微信,备注“公开课”进入直播分享群免费获取视频
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。