APISIX+NACOS实现注册发现

发布时间 2023-09-07 19:19:56作者: 剑握在手

摘要:

本文介绍了使用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),即可访问成功