APISIX+NACOS实现注册发现
摘要:
本文介绍了使用docker-compose部署apisix全家桶,并为其添加注册中心Nacos,之后增加一条路由规则,并展示了通过apisix访问到我们注册到Nacos上的SpringBoot服务。
请先自行准备好Nacos、Docker环境
一.部署apisix全家桶
git clone https://github.com/apache/apisix-docker.git cd apisix-docker/example
docker-compose -p docker-apisix up -d
说明:阅读apisix-docker/example目录下的docker-compose.yml,可获得以下关键信息:
1.apisix的配置已经映射到当前目录的apisix_conf目录下,其中可查看。
2.同样,在dashboard_conf目录下的配置文件中,可获得dashboard的访问账号密码:admin/admin,访问9000端口,可登录dashboard。
3.除了9000端口用于dashboard外,9080端口是其路由端口,9180端口可用于配置apisix(dashboard也可以),通过9180端口设置apisix,需要密钥,可通过apisix的配置查看密钥。
二.为apisix设置nacos
进入apisix_conf目录,编辑config.yaml,新增以下配置:
discovery: nacos: host: - "http://${username}:${password}@${host1}:${port1}" prefix: "/nacos/v1/" fetch_interval: 30 # default 30 sec weight: 100 # default 100 timeout: connect: 2000 # default 2000 ms send: 2000 # default 2000 ms read: 5000 # default 5000 ms
重启apisix容器即可刷新配置
docker restart docker-apisix-apisix-1
如果找不到这个容器,自己docker ps看一下哪个是
三.为服务增加路由
这里,我注册到nacos上的服务名为oneboot,其并且我想访问其/oneboot/hello(注意:不是这个服务下的/hello是这个服务下的/oneboot/hello)路径,那么我需要为apisix增加路由规则示例如下:
curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -i -d ' { "uri": "/oneboot/*", "upstream": { "service_name": "oneboot", "type": "roundrobin", "discovery_type": "nacos" } }'
这条规则添加后可通过dashboard查看
这条规则的意思是请求地址为apisix地址加路径/oneboot/*的请求,都会被代理到nacos的oneboot服务上。
通过apisix的代理地址(http://xxx.xxx.xxx.xxx:9080/oneboot/hello),即可访问成功