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 架構圖
五. 環境安裝(自己需要啟動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 協議》,轉載必須注明作者和本文鏈接
總結
以上是生活随笔為你收集整理的php etcd 服务发现,confd+etcd+nginx 实现简单服务发现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《戒药》第十九句是什么
- 下一篇: 怎么冲晶钻