上文《Apisix微服务网关实战(三)apisix dashboard配置网关路由》我们通过apisix可视化新建了路由,并且成功实现了通过apisix访问我们的后端微服务。但是我们主要以nginx 的upstream模式来进行配置的,比如后端微服务很多,或者后端服务的ip或者端口更改了,那么还需要我们来修改apisix上创建的路由,所以这里我们结合nacos来配置下动态网关路由。因为所有的微服务都是注册到nacos上的,apixis只需要从nacos的服务列表中获取健康的实例即可实现所有的动态路由转发了,后端添加/减少/修改/删除了微服务都不需要在apisix上进行变更,是不是非常方便?下面我们来尝试下。
一、配置nacos信息
在apisix上nacos的地址是直接通过apisix的config文件来进行配置的,无法在页面上进行可视化配置,所以这里我们回到examples目录里面,修改apisix_conf/config.yaml文件。
在文末添加如下内容:
discovery: nacos: host: - "http://192.168.1.249:8848" # Nacos的服务地址 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实例
docker-compose down docker-compose up -d
二、配置nacos服务
前面我们把go-kratos项目是注册到nacos上的,如下图:
这里进入到apisix的dashboard上,点击刚才创建的路由,选择配置
直接进入到第二步(设置上游服务),这里可以看到有个上游类型,他的选择有:
1、节点 2、服务发现
我们选择服务发现,然后填对应的内容:
1、服务发现类型(选择nacos) 2、服务名称(填写注册到nacos的服务名称) 3、分组名(填写nacos服务列表的分组名) 4、命名空间id(填写nacos服务列表所在的命名空间id)
这里我们填写的内容如下:
最后一只点击下一步,下一步,提交即可。因为其他的不用修改。
三、测试
我们测试下刚才的访问地址:
http://www.test.com:9080/helloworld/lisi
可以看到也是可以访问的,是不是很方便?
备注:
1、nacos的ip信息主要是在apisix的config.yml文件中进行配置的,修改完配置记得重启apisix
2、dashboard上面主要填写的是某个注册到nacos上的服务名,而且一个路由只能填写一个,不能填写多个。如要配置多个服务名,则需要创建多个路由。
3、后续只需要把服务注册到nacos上即可,请求即可自动被转发到新的实例上,不需要修改apisix的任何内容。
以上就是apisix结合nacos实现动态路由的案例。
还没有评论,来说两句吧...