shenyu网关规则同步在nacos中的配置

关于ShenYu 网关规则同步在 Nacos 中的配置。这部分配置是 ShenYu 网关架构的核心,它决定了路由规则如何从 Admin 分发到所有网关节点。

核心原理

ShenYu 使用 Nacos 作为配置中心(Config Center)。其同步流程如下:

  1. 规则产生: 你在 ShenYu Admin Web 界面上修改任何插件、选择器或规则。
  2. 规则发布: ShenYu Admin 立即将更改后的全部规则数据序列化为 JSON,并推送到 Nacos 中一个特定的 Data ID 下。
  3. 规则订阅: 所有 ShenYu 网关节点(Bootstrap)都监听(Watch)着 Nacos 中对应的 Data ID
  4. 规则拉取与生效: 一旦 Nacos 中的配置发生变更,Nacos 服务器会立即通知所有监听的网关节点。网关节点随后从 Nacos 拉取最新的配置数据,并动态加载到内存中,整个过程无需重启网关

配置详解(两部分必须一致)

规则同步需要同时在 shenyu-admin(写入端)和 shenyu-bootstrap(读取端)进行配置,且两者的配置必须严格一致,否则同步会失败。

1. ShenYu Admin 配置(向 Nacos 写入规则)

配置文件: shenyu-admin/conf/application.yml (或 application-nacos.yml)

shenyu:
  sync:
    nacos:
      # 必填:Nacos 服务器地址,集群用逗号分隔
      url: localhost:8848
      # 强烈建议配置:命名空间ID,用于环境隔离(如:dev, test, prod)。在Nacos控制台创建命名空间后,填入其ID(非名称)。
      namespace: 4d59f6e0-1b2c-4a5d-8e7f-9a0b1c2d3e4f
      # 必填:配置的 Data ID。ShenYu Admin 会将所有规则数据推送到以此值为前缀的一系列Data ID下。
      dataId: shenyu
      # 必填:配置分组,默认即可。
      group: SHENYU_GROUP
      # 选填:如果Nacos开启了认证,需要配置
      username: nacos
      password: nacos
      # 选填:超时时间,默认3秒,网络不好可调大
      timeout: 5000
      # 选填:核心配置。指定需要同步哪些数据类型。
      # 可选值:plugin, selector, rule, metaData, auth, proxySelector
      # 如果为空或注释掉,则同步所有类型。
      # 通常不需要配置,保持默认(同步所有)即可。
      # acm:
      #   dataIds: plugin,selector,rule

启动 Admin 后,你会在 Nacos 控制台看到以下 Data ID:

  • shenyu.plugin (插件信息)
  • shenyu.selector (选择器信息)
  • shenyu.rule (规则信息)
  • shenyu.metaData (元数据信息)
  • shenyu.auth (认证信息)

严禁直接修改这些 Data ID 中的 JSON 内容,所有操作都应通过 Admin Web 界面进行。

2. ShenYu Bootstrap (网关) 配置(从 Nacos 读取规则)

配置文件: shenyu-bootstrap/conf/application.yml (或 application-local.yml)

shenyu:
  sync:
    nacos:
      # 必须与 admin 配置的 url 一致!
      url: localhost:8848
      # 必须与 admin 配置的 namespace 一致!
      namespace: 4d59f6e0-1b2c-4a5d-8e7f-9a0b1c2d3e4f
      # 必须与 admin 配置的 dataId 一致!
      dataId: shenyu
      # 必须与 admin 配置的 group 一致!
      group: SHENYU_GROUP
      # 必须与 admin 配置的认证信息一致!
      username: nacos
      password: nacos
      timeout: 5000

生产环境最佳实践配置示例

这是一个面向生产环境的高可用、高安全性的配置示例。

目标: 为生产环境 prod 搭建 ShenYu 集群。

步骤 1: 在 Nacos 控制台创建命名空间

  • 名称: shenyu-prod
  • 系统会自动生成一个 ID (如 a1b2c3d4-e5f6-7890-abcd-ef1234567890),复制这个 ID

步骤 2: 配置 ShenYu Admin (所有 Admin 实例配置相同)

shenyu:
  sync:
    nacos:
      # Nacos 集群地址
      url: 10.10.1.101:8848,10.10.1.102:8848,10.10.1.103:8848
      # 填入步骤1中复制的生产环境命名空间ID
      namespace: a1b2c3d4-e5f6-7890-abcd-ef1234567890
      # 使用有意义的Data ID,便于识别
      dataId: shenyu-gateway-prod
      # 使用特定的分组,避免与其他项目冲突
      group: SHENYU_PROD_GROUP
      # 生产环境必须配置强密码认证
      username: shenyu-prod-admin
      password: JyS7&Xp2!qL9*$zM
      # 生产环境网络稳定,但超时时间可稍长
      timeout: 10000

步骤 3: 配置 ShenYu Bootstrap (所有网关实例配置相同)

shenyu:
  sync:
    nacos:
      url: 10.10.1.101:8848,10.10.1.102:8848,10.10.1.103:8848
      namespace: a1b2c3d4-e5f6-7890-abcd-ef1234567890
      dataId: shenyu-gateway-prod
      group: SHENYU_PROD_GROUP
      username: shenyu-prod-admin
      password: JyS7&Xp2!qL9*$zM
      timeout: 10000

验证配置是否成功

  1. 启动 Nacos: 确保 Nacos 集群正常运行。
  2. 启动 ShenYu Admin: 观察 Admin 启动日志,是否有 [NacosConfigService] 相关的连接成功日志。
  3. 登录 Admin Web (http://localhost:9095): 随意修改一个插件的规则或选择器。
  4. 查看 Nacos 控制台: 刷新 Nacos 的 配置列表,找到对应的 Data ID(如 shenyu-gateway-prod.rule),查看其更新时间是否刚刚变化。点击详情,可以看到最新的 JSON 配置。
  5. 启动 ShenYu Bootstrap: 观察网关启动日志,会看到类似 success sync nacos config, dataId: shenyu-gateway-prod.rule 的日志,表示它成功从 Nacos 拉取了配置。
  6. 测试路由: 通过网关访问一个接口,确认路由规则已生效。

总结

配置项作用要求
url指定 Nacos 服务器地址Admin 与 Gateway 必须一致
namespace环境隔离的核心Admin 与 Gateway 必须一致,且使用 ID 而非名称
dataId配置的唯一标识Admin 与 Gateway 必须一致,生产环境建议赋予有意义的名称
group配置分组Admin 与 Gateway 必须一致
username/password安全认证Admin 与 Gateway 必须一致,生产环境必填

通过以上配置,你就建立了一个高效、可靠、实时的生产级规则同步机制,能够轻松支持 ShenYu 网关的集群化部署和动态扩缩容。

shenyu网关是一款开源的API网关软件,它可以帮助开发者实现对接口的统一管理和流量控制。shenyu网关提供了多种功能,包括请求转发、请求过滤、流量限制、负载均衡等,帮助用户实现高可用和高稳定性的系统架构。 shenyu网关基于Java开发,使用简单方便,支持多种开源框架和中间件,如Spring Boot、Dubbo、Motan等。通过使用shenyu网关,开发者可以快速搭建起一个完善的微服务架构,可以轻松地管理和监控各个微服务之间的通信和流量。 另外,shenyu网关还提供了可视化的管理界面,方便用户进行参数配置、资源管理、性能监控等操作。用户可以通过该界面对各个服务进行细粒度的管理,实现功能的灵活配置和动态调整。 码云是中国最大的代码托管平台,类似于国外的GitHub。用户可以通过码云托管自己的代码仓库,并利用这个平台进行团队协作和项目管理。码云提供了Git版本控制、代码托管、代码审查等功能,支持多种开发语言和开发工具。 与GitHub不同的是,码云在国内具有更好的访问速度和稳定性,同时还提供了国内常用的Git代码托管服务,支持国内的开发者更方便地使用和访问。用户可以在码云上创建自己的项目仓库,与其他开发者进行交流学习,并共同进行开发和维护。 综上所述,shenyu网关和码云都是开发者常用的工具。shenyu网关可以帮助开发者实现API网关的功能,提供统一的接口管理和流量控制;码云则是代码托管平台,提供代码的版本控制和团队协作功能。两者的结合可以帮助开发者更好地进行微服务架构的开发和管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值