Python 从零搭建 Conf_Web 配置管理平台
Conf_Web 配置管理平台
作者 Eagle
某船舶行业科技公司,运维工程师,51Reboot 学员。通过在 51Reboot 学习,由运维工程师转至运维开发工程师。完成公司自动化平台的构建,对运维开发有了自己的了解,空闲时间写了这么一个小的项目来和大家分享一下。
Django + Etcd + Conf_Web 配置管理平台
环境
CentOS 6/7 x64
Python: 2.7.6
Etcd: 3.2.18
Confd: 0.16.0
Nginx: 1.12.1
优化功可以:可选择上级项目目录,进行下级项目目录创立
效果演示
拓扑图
项目实施具体详情
涉及软件
etcd:分布式KV存储系统,一般使用于共享配置和服务注册与发现。是CoreOS公司发起的一个开源项目。 ETCD存储格式相似于文件系统,以根”/”开始下面一级级目录,最后一个是Key,一个key对应一个Value。
etcd 集群:用Raft协议保证每个节点数据一致,由多个节点对外提供服务。这里只使用单台。
confd:管理本地应使用配置文件,用etcd或者consul存储的数据渲染模板,还支持redis、zookeeper等。confd有一个watch功可以,通过HTTP API定期监测对应的etcd中目录变化,获取最新的Value,而后渲染模板。
Nginx: Nginx是一款轻量级的Web服务器/反向代理商服务器以及电子邮件代理商服务器,并在一个BSD-like协议下发行。由俄罗斯的程序设计师lgor 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
#yum install python-devel gcc gcc-c++ pcre pcre-devel patch unzip zlib zlib-devel openssl openssl-devel git -y #依赖包 #cd /usr/local/src #wget http://nginx.org/download/nginx-1.12.1.tar.gz #git clone 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 -j4 && make install #mkdir /usr/local/nginx/conf/vhost/ Nginx主配置文件修改为这个样子,添加include目录配置 #vi /usr/local/nginx/conf/nginx.conf #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include 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; include vhost/*.conf; }
3)安装 confd
下载地址 kelseyhightower/confd/releases
下载完毕丢到系统里面
# cp confd /usr/bin/confd # which 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 ,只要要更改 etcd 的连接地址就可
#/etc/init.d/confd start && chkconfig --add confd && chkconfig confd on
配置平台部署
1)Github 克隆平台代码安装平台依赖
# git clone 1032231418/Conf_Web.git # cd Conf_Web/ospweb/ #yum install python-pip -y #安装pip #mkdir /root/.pip/ #创立pip源配置文件目录 # vi /root/.pip/pip.conf #修改为阿里云的pip源 [global] trusted-host=mirrors.aliyun.com index-url=http://mirrors.aliyun.com/pypi/simple/ [list] format=columns #pip install virtualenv #安装沙盒工具 #virtualenv env #建议创立一个沙盒环境跑该平台 # source env/bin/activate #用沙盒环境 # pip install -r requirement.txt #安装相关软件
2)创立数据库并将表刷入数据库
# mysql -p #登录数据库为平台创立一个数据库 #CREATE DATABASE opsweb CHARACTER SET utf8 COLLATE utf8_general_ci; #创立数据库opsweb # vi opsweb/settings.py #这里数据库信息改为自己的数据库信息 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'opsweb', 'HOST': 'localhost', '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 创立 key/value
例子: Shopping 平台为例
项目创立:
1.创立商城项目 /Shopping
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
分享方式:网络直播
报名方式:扫码增加小助手微信,备注“公开课”进入直播分享群免费获取视频
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Python 从零搭建 Conf_Web 配置管理平台