php etcd 服务发现,confd+etcd+nginx 实现简单服务发现

一. 项目背景

随着微服务的兴起,大量接口服务化。当新的微服务加入或微服务的信息发生变更时,服务方如何通知周边系统、使用方如何知道这些变更呢?

这时就需要服务的注册配置和发现功能。

服务注册配置——存储的信息至少包括正在运行的服务的主机和端口信息

服务发现——允许其他用户可以发现在服务注册配置阶段存储的信息

二. Confd简介

Confd是一个轻量级的配置管理工具。Confd通过读取后端存储的配置信息来动态更新对应的配置文件,对应的后端存储可以是etcd、consul、vault、environment variables、redis、zookeeper、dynamodb、stackengine、rancher等,其中etcd的v3版本对应的存储后端为etcdv3。目前常用的存储是etcd。

三. etcd简介

etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现。

etcd作为服务发现系统,有以下的特点:

简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单

安全:支持SSL证书验证

快速:根据官方提供的benchmark数据,单实例支持每秒2k+读操作

可靠:采用raft算法,实现分布式系统数据的可用性和一致性

etcd项目地址:https://github.com/coreos/etcd/

四. etcd+conf+nginx 架构图

29ed42142f4c5c2a0cd9f158cb2bef95.png

五. 环境安装(自己需要启动etcd与nginx)

1.etcd

brew install etcd

2.nginx

brew install nginx

3.confd

请先在下载地址下载confd-0.16.0-darwin-amd64文件 并添加执行权限

六. 使用教程

编辑confd配置文件

mkdir -p /etc/confd/{conf.d,templates}

touch /etc/confd/conf.d/myconfig.toml

编辑myconfig.toml文件

[template]

//模板文件

src = "nginx.tmpl"

//生成nginx的配置目录文件

dest = "/usr/local/nginx/conf/conf.d/upstream.conf"

//监控KEY的改变,改变会自动重新生成nginx配置并重启

keys = [

"/portal",

"/portal-upstream",

"/openapi",

"/openapi-upstream",

"/gateway",

"/gateway-upstream",

]

owner = "root"//当前用户

mode = "0644"

check_cmd = "nginx -t"//执行命令

reload_cmd = "nginx -s reload"//执行命令

配置用于生成upstream的模板文件

upstream {{getv "/portal"}} {

{{range getvs "/portal-upstream/*"}}

server {{.}};

{{end}}

}

upstream {{getv "/openapi"}} {

{{range getvs "/openapi-upstream/*"}}

server {{.}};

{{end}}

}

upstream {{getv "/gateway"}} {

{{range getvs "/gateway-upstream/*"}}

server {{.}};

{{end}}

}

修改nginx的配置文件

include /usr/local/nginx/conf/conf.d/*.conf

增加etcd数据

etcdctl set /portal portal

etcdctl set /portal-upstream/portal01 192.168.81.11:30400

etcdctl set /openapi openapi

etcdctl set /openapi-upstream/openapi01 192.168.81.11:30600

etcdctl set /gateway gateway

etcdctl set /gateway-upstream/gateway01 192.168.81.11:30000

启动confd监控etcd

confd支持两种运行方式,即daemon和onetime。在守护程序模式下,confd轮询后端以进行更改,并在必要时更新目标配置文件。

confd -onetime -backend etcd -node http://127.0.0.1:2379

查看nginx是否生成配置文件

cat /usr/local/nginx/conf/conf.d/upstream.conf

upstream portal {

server 192.168.81.11:30400

}

upstream openapi {

server 192.168.81.11:30600

}

upstream gateway {

server 192.168.81.11:30000

}

本作品采用《CC 协议》,转载必须注明作者和本文链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值