安装部署
MacOS安装RabbitMQ
API网关部署
Centos安装Chrome浏览器
gitlab
gitlab-cicd
gitlab-runner安装配置
Gitlab-CICD实践篇
gitlab维护
gitlab备份-异地恢复-升级
gitlab从13.10.2升级至14.4.1出现的问题
Let's Encrypt
Let's Encrypt 申请证书
certbot发起web认证请求流程
安装CMDBUILD
vim配置
keepalived
配置样例
wine tips
supervisord
kafka
zookeeper
minio
django
jupyter
supervisor管理的kafka zookeeper集群部署
dnsmasq
apisix
APISIX结合skywalking对各个服务的访问情况进行监控
APISIX通过consul动态发现服务
Grafana Labs
Loki(stack)
etcd
redis
mongodb
mongodb添加仲裁节点
consul
sqlite更新升級
openssl安裝升級
emby
inotify-tools
caddy
caddy规则
ohmyzsh tips
debian-nvidia-container-runtime
openwrt+802.1x+freeradius+casdoor
本文档使用 MrDoc 发布
-
+
首页
APISIX通过consul动态发现服务
# APISIX通过consul动态发现服务 微服务将原本庞大的系统拆解成了一个个独立的进程来运行,那么能够动态发现微服务并自动注册到业务系统/网关则能够为业务上线减轻极大的工作量,降低上线成本。 [Service Discovery Using consul_kv](https://apisix.apache.org/docs/apisix/discovery/consul_kv) ## 配置说明 - 环境要求: - 已部署完成consul - 已部署完成apisix - 建议:部署完成apisix-dashboard * 配置apisix的服务发现-复杂版 ``` discovery: consul_kv: servers: # 填入consul节点 - "http://127.0.0.1:8500" - "http://127.0.0.1:8600" prefix: "upstreams" # 服务发现的Key前缀 skip_keys: # 填入不需要注册到apisix的Key - "upstreams/unused_api/" timeout: connect: 1000 # default 2000 ms read: 1000 # default 2000 ms wait: 60 # default 60 sec weight: 1 # default 1 fetch_interval: 5 # default 3 sec, only take effect for keepalive: false way keepalive: true # default true, use the long pull way to query consul servers default_server: # 配置一个没有发现任何服务时访问的服务器 host: "127.0.0.1" port: 20999 metadata: fail_timeout: 1 # default 1 ms weight: 1 # default 1 max_fails: 1 # default 1 dump: # 如果需要将发现的服务器导出到文件就填写下面的配置,文件必须已经存在,可以touch出一个空文件 path: "logs/consul_kv.dump" expire: 2592000 # 单位为 秒, 30天=2592000秒 ``` * 配置apisix的服务发现-简单版 ``` discovery: consul_kv: servers: # 服务发现的Key前缀 - "http://127.0.0.1:8500" ``` * 服务注册的KV模板 ``` Key: {Prefix}/{Service_Name}/{IP}:{Port} Value: {"weight": <Num>, "max_fails": <Num>, "fail_timeout": <Num>} ``` * 添加数据到consul ``` curl \ -X PUT \ -d ' {"weight": 1, "max_fails": 2, "fail_timeout": 1}' \ http://127.0.0.1:8500/v1/kv/upstreams/webpages/172.19.5.12:8000 curl \ -X PUT \ -d ' {"weight": 1, "max_fails": 2, "fail_timeout": 1}' \ http://127.0.0.1:8500/v1/kv/upstreams/webpages/172.19.5.13:8000 ``` * 配置动态发现上游服务器 在添加upstream时,上游类型选择为“服务发现”,选择发现类型为“Consul KV”,“服务名称”中填写接口链接,假设要发现`upstreams/webpages/`下的全部服务器,填入`http://127.0.0.1:8500/v1/kv/upstreams/webpages/`,其中`127.0.0.1`为consul的服务器,因为没有说明可以填入多个变量,所以consul最好能够有个vip做高可用,不然可能会因为consul的问题导致服务集体下线。 * 检查发现状态 稍等片刻,可以通过接口检查发现状态 ``` yum -y install jq curl -s http://127.0.0.1:9090/v1/discovery/consul_kv/dump | jq { "services": { "http://127.0.0.1:8500/v1/kv/upstreams/webpages/": [ { "weight": 1, "port": 8000, "host": "172.19.5.12" }, { "weight": 1, "port": 8000, "host": "172.19.5.13" } ] }, "config": { "dump": { "path": "logs/consul_kv.dump", "load_on_init": true, "expire": 2592000 }, "weight": 1, "skip_keys": [ "upstreams/unused_api/" ], "fetch_interval": 5, "servers": [ "http://127.0.0.1:8500", "http://127.0.0.1:8600" ], "timeout": { "read": 1000, "connect": 1000, "wait": 60 }, "default_server": { "metadata": { "fail_timeout": 1, "weight": 1, "max_fails": 1 }, "port": 8000, "host": "172.19.5.12" }, "keepalive": true, "prefix": "upstreams" } } ``` 配置成功! 一定要规划好kv的结构和层级,避免未来自动发现的事故~~~~
zhangky
2022年3月2日 11:37
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码