Python从零搭建Conf_Web配置管理平台
环境
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(这里安装的单机,集群环境根据自己的需求选取)
|
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 -s 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

etcd里面存储的值

配置创建:
1.反向代理/ Shopping / nginx / cluster1 / proxy_name
2.绑定一个域名/ Shopping / nginx / cluster1 / server_name / 1
3.创建一个集群节点/ Shopping / nginx / cluster1 / upstream / web1

etcd 里面存储的值

生成的配置文件

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

Python从零搭建Conf_Web配置管理平台的更多相关文章
- Python 从零搭建 Conf_Web 配置管理平台
作者:Eagle 某船舶行业科技公司,运维工程师,51Reboot学员.通过在51Reboot学习,由运维工程师转至运维开发工程师.完成公司自动化平台的构建,对运维开发有了自己的理解,空闲时间写了这么 ...
- 分布式配置管理平台XXL-CONF
<分布式配置管理平台XXL-CONF> 一.简介 1.1 概述 XXL-CONF 是一个分布式配置管理平台,提供统一的配置管理服务.现已开放源代码,开箱即用. 1.2 特性 1. ...
- Eclipse中Python开发环境搭建
Eclipse中Python开发环境搭建 目 录 1.背景介绍 2.Python安装 3.插件PyDev安装 4.测试Demo演示 一.背景介绍 Eclipse是一款基于Java的可扩展开发平台. ...
- sublime搭建Java编译平台及编码问题
Sublime自带Java编译功能,当时只能编译不能运行,我们做一下小小的修改就可以让sublime一步完成编译运行的功能,实现sublime搭建Java编译平台. 使用Ctrl + B 编译时,所编 ...
- 分布式配置管理平台 Disconf
Distributed Configuration Management Platform(分布式配置管理平台) 专注于各种 分布式系统配置管理 的通用组件/通用平台, 提供统一的配置管理服务. 包括 ...
- 【译文】用Spring Cloud和Docker搭建微服务平台
by Kenny Bastani Sunday, July 12, 2015 转自:http://www.kennybastani.com/2015/07/spring-cloud-docker-mi ...
- Python + Appium 环境搭建
---恢复内容开始--- Appium自动化公司内部测试培训1-环境搭建 课程目的 一.Python + Appium 环境搭建 课程内容 1 安装前准备工作 搭建环境所需要的安装文件已经下载好 ...
- Docker进阶之八:搭建LNMP网站平台实战
搭建LNMP网站平台实战 LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写.L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可 ...
- 自动化测试 Appium之Python运行环境搭建 Part2
Appium之Python运行环境搭建 Part2 by:授客 QQ:1033553122 实践环境 参见 Appium之Python运行环境搭建 Part1 环境部署 1.安装Android SDK ...
随机推荐
- “卷积神经网络(Convolutional Neural Network,CNN)”之问
目录 Q1:CNN 中的全连接层为什么可以看作是使用卷积核遍历整个输入区域的卷积操作? Q2:1×1 的卷积核(filter)怎么理解? Q3:什么是感受野(Receptive field)? Q4: ...
- Netty实现高性能IOT服务器(Groza)之精尽代码篇中
运行环境: JDK 8+ Maven 3.0+ Redis 技术栈: SpringBoot 2.0+ Redis (Lettuce客户端,RedisTemplate模板方法) Netty 4.1+ M ...
- SpringCloud分布式微服务搭建(一)
本例子主要使用了eureka集群作为注册中心来保证高可用,客户端来做ribbon服务提供者的负载均衡. 负载均衡有两种,第一种是nginx,F5这种集中式的LB,对所有的访问按照某种策略分发. 第二种 ...
- 死磕 java集合之SynchronousQueue源码分析
问题 (1)SynchronousQueue的实现方式? (2)SynchronousQueue真的是无缓冲的吗? (3)SynchronousQueue在高并发情景下会有什么问题? 简介 Synch ...
- typecho设置文章密码保护
在别人博客看到了一个需要输入密码才能访问文章的功能,像下图一样 typecho也是有这个功能,不需要插件就可以实现.在编辑文章时,右边高级选项,公开度里有个密码保护可以选择 效果图 不过这样的界面不是 ...
- 聊一聊快速排序(Js)
快速排序 基本思路 双指针+递归分治(本质是一个创建二叉树搜索树的过程) 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据 ...
- formidable处理node.js的post请求
前言 我们都知道在node.js中,我们最常用的请求方式是get和post.其中get请求和URL相关,通过解析URL我们可以直接获取到请求的参数.但是post请求不同,post请求是包含在请求体中, ...
- RabbitMq在CentOs7下的完整安装步骤,带你踩坑
1.前言 因为公司项目中用的RabbitMq来做消息处理,自己以前没有接触过,所以想自学一下.然额,光安装就花了6.7个小时才搞定,中间还换过一个版本,综合国内外博客才最终将所有安装中遇到的问题解决掉 ...
- 学习 JavaScript (八) 引用类型之 Object
在JavaScript中,引用类型是一种数据结构.包括对象(Obejct).数组(Array).日期(Date).正则表达式(RegExp).函数(Function).基本包装类型(new Boole ...
- Python 中的设计模式详解之:策略模式
虽然设计模式与语言无关,但这并不意味着每一个模式都能在每一门语言中使用.<设计模式:可复用面向对象软件的基础>一书中有 23 个模式,其中有 16 个在动态语言中“不见了,或者简化了”. ...