我正在尝试在 Kubernetes 中设置 NSQ 集群并遇到问题。基本上,我想扩展 NSQ 和 NSQ Lookup。我对它们都有一个有状态的集合(2 个节点)定义。为了不发布整个 YAML 文件,我将只为 NSQ 发布其中的一部分
NSQ 容器模板
command:
- /nsqd
- -data-path
- /data
- -lookupd-tcp-address
- nsqlookupd.default.svc.cluster.local:4160
这nsqlookupd.default.svc.cluster.local
是一个 K8s 无头服务,通过这样做,我希望 NSQ 实例打开与所有 NSQ Lookup 实例的连接,这实际上并没有发生。它只是打开与随机连接的连接。但是,如果我像这样明确列出所有 NSQ 查找主机,它就可以工作。
command:
- /nsqd
- -data-path
- /data
- -lookupd-tcp-address
- nsqlookupd-0.nsqlookupd:4160
- -lookupd-tcp-address
- nsqlookupd-1.nsqlookupd:4160
我还想在 --broadcast-address 中为 NSQ 和 NSQ 查找使用无头服务 DNS 名称,但这也不起作用。
我正在使用nsqio
go 库来发布和消费消息,看起来我也不能在那里使用无头服务,并且应该在初始化消费者或发布者时明确列出 NSQ/NSQ 查找 pod 名称。
我是否以错误的方式使用它?我的意思是我想要水平缩放 NSQ 和 NSQLookup 实例,而不是硬编码地址。