环境

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 -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配置管理平台的更多相关文章

  1. Python 从零搭建 Conf_Web 配置管理平台

    作者:Eagle 某船舶行业科技公司,运维工程师,51Reboot学员.通过在51Reboot学习,由运维工程师转至运维开发工程师.完成公司自动化平台的构建,对运维开发有了自己的理解,空闲时间写了这么 ...

  2. 分布式配置管理平台XXL-CONF

    <分布式配置管理平台XXL-CONF>      一.简介 1.1 概述 XXL-CONF 是一个分布式配置管理平台,提供统一的配置管理服务.现已开放源代码,开箱即用. 1.2 特性 1. ...

  3. Eclipse中Python开发环境搭建

    Eclipse中Python开发环境搭建  目 录  1.背景介绍 2.Python安装 3.插件PyDev安装 4.测试Demo演示 一.背景介绍 Eclipse是一款基于Java的可扩展开发平台. ...

  4. sublime搭建Java编译平台及编码问题

    Sublime自带Java编译功能,当时只能编译不能运行,我们做一下小小的修改就可以让sublime一步完成编译运行的功能,实现sublime搭建Java编译平台. 使用Ctrl + B 编译时,所编 ...

  5. 分布式配置管理平台 Disconf

    Distributed Configuration Management Platform(分布式配置管理平台) 专注于各种 分布式系统配置管理 的通用组件/通用平台, 提供统一的配置管理服务. 包括 ...

  6. 【译文】用Spring Cloud和Docker搭建微服务平台

    by Kenny Bastani Sunday, July 12, 2015 转自:http://www.kennybastani.com/2015/07/spring-cloud-docker-mi ...

  7. Python + Appium 环境搭建

    ---恢复内容开始--- Appium自动化公司内部测试培训1-环境搭建 课程目的 一.Python + Appium 环境搭建 课程内容 1    安装前准备工作 搭建环境所需要的安装文件已经下载好 ...

  8. Docker进阶之八:搭建LNMP网站平台实战

    搭建LNMP网站平台实战 LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写.L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可 ...

  9. 自动化测试 Appium之Python运行环境搭建 Part2

    Appium之Python运行环境搭建 Part2 by:授客 QQ:1033553122 实践环境 参见 Appium之Python运行环境搭建 Part1 环境部署 1.安装Android SDK ...

随机推荐

  1. Java实现大批量数据导入导出(100W以上) -(一)导入

    最近业务方有一个需求,需要一次导入超过100万数据到系统数据库.可能大家首先会想,这么大的数据,干嘛通过程序去实现导入,为什么不直接通过SQL导入到数据库. 大数据量报表导出请参考:Java实现大批量 ...

  2. 使用CompletableFuture实现异步编程

    在开发中会碰到一种场景,如下 Object result1 = service1.func1();//执行80ms Object result2 =service2.func2();//执行50ms ...

  3. Linux上删除大量文件几种方式对比

    目录 Linux上删除大量文件几种方式对比 1. rm删除:因为文件数量太多,rm无法删除(报错) 2. find查找删除:-exec 3. find查找删除:xargs 4. find调用-dele ...

  4. Vue之生命周期函数和钩子函数详解

    在学习vue几天后,感觉现在还停留在初级阶段,虽然知道怎么和后端做数据交互,但是对对vue的生命周期不甚了解.只知道简单的使用,而不知道为什么,这对后面的踩坑是相当不利的.因为我们有时候会在几个钩子函 ...

  5. Redis 缓存失效和回收机制续

    二.Redis Key失效机制 Redis的Key失效机制,主要借助借助EXPIRE命令: EXPIRE key 30 上面的命令即为key设置30秒的过期时间,超过这个时间,我们应该就访问不到这个值 ...

  6. 再好好聊聊 HTTP 里的 Cookie | 实用 HTTP

    题图:by Juan Pablo Arenas 一.序 Hi,大家好,我是承香墨影! HTTP 协议在网络知识中占据了重要的地位,HTTP 协议最基础的就是请求和响应的报文,而报文又是由报文头(Hea ...

  7. .NET Core Dapper操作mysql数据库

    前言 现在ORM盛行,市面上已经出现了N款不同的ORM套餐了.今天,我们不谈EF,也不聊神马黑马,就说说 Dapper.如何在.NET Core中使用Dapper操作Mysql数据库呢,让我们跟随镜头 ...

  8. 5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」

    希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢谢关注. Cookie-Based认证 认证流程 我们先看下传统Web端的认 ...

  9. C#机器学习之判断日报是否合格

    简单来说机器学习的核心步骤在于“获取学习数据:选择机器算法:定型模型:评估模型,预测模型结果”,下面本人就以判断日报内容是否合格为例为大家简单的阐述一下C#的机器学习. 第一步:问题分析 根据需求可以 ...

  10. 贾天昊 - Nick