社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  MQ

K8S、RabbitMQ和对等发现

mr haven • 5 年前 • 1387 次点击  

我们正在尝试运行rabbitmq图表的一个实例,其中helm来自 helm/charts/stable/rabbit 项目。我让它运行得很好,但是我不得不重新启动K8S进行一些维护。现在,我们完全无法以任何形式启动rabbitmq图表。我甚至没有尝试使用任何变量来运行图表,即只使用默认值。

我要做的就是:

helm install stable/rabbitmq

我已经确认我可以简单地在我的本地K8上运行默认权限,我用Docker运行桌面。当我们在共享K8上运行兔子图的方式与在桌面上完全相同,以及在重新启动之前所做的操作时,会引发以下错误:

Failed to get nodes from k8s - 503

我也在头盔图表repo上发布了一个问题。 Click here to see the issue on Github.

我们怀疑DNS,但还无法确认任何内容。令人沮丧的是,在重新启动之后,除了Rabbit之外,我们安装的每个图表都重新启动得很好,而Rabbit现在根本不会启动。

有人知道我能做些什么让兔子同行发现工作吗?重启K8S后有人看到过这样的问题吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30882
 
1387 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Nepomucen
Reply   •   1 楼
Nepomucen    5 年前

如果values.yaml默认为1个副本(您的清单文件不覆盖此设置),我想知道使用Rabbit Peer发现插件的原因是什么?

我试图根据您的 github issue #但我有点失败。以下是我的观察结果:

  1. 如果要使用自定义值安装rabbitmq图表,请 rabbitmq-dev-default-0 POD卡在CrashLoopBackoff状态。 对于我来说,很难进一步排除故障,因为这个rabbitmq helm图表使用的bitnami的rabbitmq映像容器是用非根帐户发货的。
  2. 另一方面,如果rabbitmq图表以最简单的形式安装在我的kubernetes集群(v1.13.2)上:

舵安装稳定/rabbitmq

我观察到类似的问题。我的意思是rabbitmq服务器能够在所有集群节点(包括master)的虚拟机重启后存活下来,但我无法从外部连接到它:

在VM重新启动后,我的python mqclient出现以下错误:

socket.gaierror: [Errno -2] Name or service not known

这里没有什么评论:

是的,我按照“舵机状态”命令的指示进行了端口转发:

准备就绪探测器工作正常:

curl -sS -f --user user:<my_pwd> 127.0.0.1:15672/api/healthchecks/node
{"status":"ok"}

rabbitmqctl到rabbitmq从容器内部的服务器连接也可以正常工作:

kubectl exec rabbitmq-dev-default-0 -- rabbitmqctl list_queues
warning: the VM is running with native name encoding of latin1 which may cause Elixir to malfunction as it expects utf8. Please ensure your locale is set to UTF-8 (which can be verified by running "locale" in your shell)
Timeout: 60.0 seconds ...
Listing queues for vhost / ...
name    messages
hello   11

从我使用kubectl port forward to pod而不是service的那一刻起,到rabbitmq服务器的连接就恢复了:

kubectl port-forward --namespace default pod/rabbitmq-dev-default-0 5672:5672

$ python send.py
 [x] Sent 'Hello World!'
mr haven
Reply   •   2 楼
mr haven    5 年前

所以我真的让兔子跑了。结果发现我的问题是K8S对等机发现无法通过默认端口443连接,我不得不使用外部端口6443,因为 kubernetes.default.svc.cluster.local 解析到公共端口,找不到内部端口,所以是的,我们的配置也混乱了。

我花了一段时间才意识到,当我用 helm install . -f server-values.yaml .

rabbitmq:
  configuration: |-
    ## Clustering
    cluster_formation.peer_discovery_backend  = rabbit_peer_discovery_k8s
    cluster_formation.k8s.host = kubernetes.default.svc.cluster.local
    cluster_formation.k8s.port = 6443
    cluster_formation.node_cleanup.interval = 10
    cluster_formation.node_cleanup.only_log_warning = true
    cluster_partition_handling = autoheal
    # queue master locator
    queue_master_locator=min-masters
    # enable guest user
    loopback_users.guest = false

我不得不加上 cluster_formation.k8s.port = 6443 到主要 values.yaml 文件而不是我自己的。一旦在 价值观 兔子马上就跑了。