Skip to content

Latest commit

 

History

History
161 lines (103 loc) · 4.73 KB

README.md

File metadata and controls

161 lines (103 loc) · 4.73 KB

Confd_Web 配置管理平台

环境:

CentOS 6/7 x64
Python:  2.7.6
Etcd: 3.2.18
Confd:  0.16.0
Nginx: 1.12.1

一.拓扑图:

image

二.涉及软件

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

	#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主配置文件修改为这个样子,增加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		
			
			下载地址https://github.com/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