开源版本3个节点的集群如何开启会话持久化(k8s模式)

 - name: EMQX_CLUSTER__DISCOVERY_STRATEGY
              value: "k8s"
            - name: EMQX_CLUSTER__K8S__APISERVER
              value: "https://kubernetes.default.svc.cluster.local:443"
            - name: EMQX_CLUSTER__K8S__NAMESPACE
              value: default
            - name: EMQX_CLUSTER__K8S__SERVICE_NAME
              value: "emqx-service"
            # - name: EMQX_CLUSTER__K8S__ADDRESS_TYPE
            #   value: "hostname"
            - name: EMQX_CLUSTER__K8S__SUFFIX
              value: ".svc.cluster.local"
            # - name: EMQX_LOG__LEVEL
            #   value: "debug"
            # 启用持久化存储durable_sessions.enable
            # - name: EMQX_DURABLE_SESSIONS__ENABLE  # 注意这里是双下划线 __
            #   value: "true"  # 必须用字符串格式
            # - name: EMQX_DURABLE_STORAGE__BACKEND
            #   value: "builtin_distributed"  # 显式指定后端类型(可选,默认值已是 builtin_local )
            # - name: EMQX_DURABLE_STORAGE__BUILTIN_DISTRIBUTED__REPLICAS
            #   value: "3"  # 必须与 StatefulSet 的 replicas 一致
            # - name: EMQX_DURABLE_STORAGE__BUILTIN_DISTRIBUTED__SYNC_MODE
            #   value: "quorum"  # 集群推荐使用 quorum 模式

如上, 是我的一段k8s配置, 配置了3个节点, 当我放开 启用持久化存储durable_sessions.enable 后, 起不来emqx. 帮忙看看为什么不行.

顺带着, 还有个疑问, 当没有监听topic的情况下, 另一端往topic里持续发消息, 在没有消费者的情况下, 这些消息会被丢弃吗? 是否当我开启了 持久化存储 就可以解决这个问题?

会的

durable session在开源版只支持单节点不支持集群

好的, 感谢,
那这样的画, emqx就是个功能残缺的, 因为用mqtt的目的就是保证消息可靠. 尤其是弱网环境.
如果像现在设定这样, 比如a发到b, 如果b因为弱网连接时有时无, 那么a往b发的消息也就莫名其妙的就没了~ 对吧.
我不知道其他的mqtt是不是也是这样的~ :face_with_thermometer:

1 个赞