apache / rocketmq-operator

Apache RocketMQ Operator
https://rocketmq.apache.org/
Apache License 2.0
309 stars 126 forks source link

如何在外部网络访问broker #157

Open micsmile opened 1 year ago

micsmile commented 1 year ago

部署好后获取到的是集群内的IP

micsmile commented 1 year ago

nameservcie获取到的是集群内IP

caigy commented 1 year ago

You can set HostNetwork as true so that you can access RocketMQ through host IPs

gzlboy commented 1 year ago

可以考虑创建service以便于在k8s集群外访问rocketmq 吗?

ltamber commented 1 year ago

可以考虑创建service以便于在k8s集群外访问rocketmq 吗?

可以试下NodePort类型service

caigy commented 1 year ago

可以考虑创建service以便于在k8s集群外访问rocketmq 吗?

可以试下NodePort类型service

每个broker需要其专属的service,维护broker与service或端口间映射关系的工作量不少

gzlboy commented 1 year ago

You can set HostNetwork as true so that you can access RocketMQ through host IPs

当broker和namesrv都部署到同一个node上的时候,HostNetwork = true就不适合了吧?

gzlboy commented 1 year ago

可以考虑创建service以便于在k8s集群外访问rocketmq 吗?

可以试下NodePort类型service

namesrv可以暴露出去,关键是namesrv返回的broker ip是集群内ip,集群外无法访问,开发阶段很不方便,得把应用部署到集群内

caigy commented 1 year ago

You can set HostNetwork as true so that you can access RocketMQ through host IPs

当broker和namesrv都部署到同一个node上的时候,HostNetwork = true就不适合了吧?

@gzlboy 具体是哪里不合适呢?

gzlboy commented 1 year ago

You can set HostNetwork as true so that you can access RocketMQ through host IPs

当broker和namesrv都部署到同一个node上的时候,HostNetwork = true就不适合了吧?

@gzlboy 具体是哪里不合适呢?

抱歉,测试是可以的,但是如果机器有限,设置了HostNetwork = true,多个broker就没法部署到同一个node中了

caigy commented 1 year ago

You can set HostNetwork as true so that you can access RocketMQ through host IPs

当broker和namesrv都部署到同一个node上的时候,HostNetwork = true就不适合了吧?

@gzlboy 具体是哪里不合适呢?

抱歉,测试是可以的,但是如果机器有限,设置了HostNetwork = true,多个broker就没法部署到同一个node中了

从健壮性角度考虑,一般不建议同一集群的broker共用一个node。不同集群的broker可以通过设置不同的listenPort以实现混部。

super-lzb commented 1 year ago

@caigy 请问 broker 设置 HostNetwork = true后,外网客户端调用地址是 broker 的宿主机ip+10911 端口吗?

caigy commented 1 year ago

@caigy 请问 broker 设置 HostNetwork = true后,外网客户端调用地址是 broker 的宿主机ip+10911 端口吗?

@super-lzb 接入点仍是nameserver的地址,只是最终访问broker是通过 broker 的宿主机ip+10911 端口。

drivebyer commented 6 months ago

可以考虑创建service以便于在k8s集群外访问rocketmq 吗?

可以试下NodePort类型service

+1.

使用 hostnetwork 还是有一定局限性,比如:

  1. 不能使用网络策略,https://github.com/projectcalico/calico/issues/4493#issuecomment-814272944
  2. 一个 k8 上只能部署一套 rmq 集群