首页 > 解决方案 > Kubernetes 中的 NSQ 集群

问题描述

我正在尝试在 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 名称,但这也不起作用。

我正在使用nsqiogo 库来发布和消费消息,看起来我也不能在那里使用无头服务,并且应该在初始化消费者或发布者时明确列出 NSQ/NSQ 查找 pod 名称。

我是否以错误的方式使用它?我的意思是我想要水平缩放 NSQ 和 NSQLookup 实例,而不是硬编码地址。

标签: gokubernetesnsq

解决方案


您可以使用 statfulset 和无头服务来实现此目标


推荐阅读