nats-server leaf node 通过cluster 地址进行服务reload

实际上属于一个小技巧,就是可利用nats 的export 以及import 可以将leaf sys 账户的$SYS 共享给leaf 链接的集群账户(当然leaf 链接的时候是需要进行本地account 映射的),这样cluster 的账户就可以request leaf 节点了

参考玩法

  • account 配置

核心是export 以及import, 注意此配置是leaf 节点的,我使用了用户密码,没使用基于nsc 的nkeys

accounts {
    SYS: {
        users: [{user: xxxx, password: xxxxx}]
        exports: [
            {stream: "$SYS.>"},
            {service: "$SYS.>"}
         ]
    },
   A: {
       users: [
            {user: xxxx, password: xxxxx}
            ],
        jetstream: enabled,
        imports: [
            {stream: {account: SYS,subject: "$SYS.>"}},
            {service: {account: SYS,subject: "$SYS.>"}}
        ]

    }
}
system_account: SYS
  • 服务reload

clsuter 使用链接的账户,同时注意需要确定好server id ,错了不行

nats --creds xxxxx.creds   request '$SYS.REQ.SERVER.xxxxx.RELOAD' ""

说明

机制上就是利用了account 一直的模式,比较简单,但是可以实现比较有意思的控制能力

参考资料

https://docs.nats.io/running-a-nats-service/configuration/securing_nats/accounts

posted on 2025-12-03 08:00  荣锋亮  阅读(5)  评论(0)    收藏  举报

导航