背景
6节点kafka集群
3节点zookeeper集群
三节点nimbus集群
apache storm worker主机使用amazon spot fleet动态调整
脚本
对于它订阅的给定分区的特定拓扑,zookeeper条目如下所示 {"topology":{"id":"Topology_Name-25-1520374231","name":"Topology_Name"},"offset":217233,"partition":0,"broker":{"host":"Zk_host_name","port":9092},"topic":"topic1"}
现在工作主机可以访问 Zk_host_name
,将在中的每个工作主机上添加Map /etc/hosts
文件为 ip ZK_host_name
现在我们决定搬到一个叫 Route 53
aws提供的dns管理服务。这样一个固定的名字,比如 QA-ZK-Host1
可以设置并Map到相应的ip。因此,ip可以在将来进行更改,从而提供灵活性。
现在,为了保持一致性,需要更改上面的原始条目。因此相应的拓扑被停止,以避免正在进行的偏移和使用更改 set
命令更改主机名的值。 set /node_path {"topology":{"id":"Topology_Name-25-1520374231","name":"Topology_Name"},"offset":217233,"partition":0,"broker":{"host":"QA-ZK-Host1","port":9092},"topic":"topic1"}
问题
上面的命令运行良好 get
路径上的命令给出更改的值。但一旦拓扑重新启动,旧名称就会恢复。那么如何使它在拓扑重新启动后仍然存在。
1条答案
按热度按时间bcs8qyzn1#
您引用的对象正在写入storm的zookeeperhttps://github.com/apache/storm/blob/master/external/storm-kafka/src/jvm/org/apache/storm/kafka/partitionmanager.java#l341.
“broker”属性创建于https://github.com/apache/storm/blob/master/external/storm-kafka/src/jvm/org/apache/storm/kafka/dynamicbrokersreader.java#l186. 如您所见,host属性不是zookeeper主机,而是运行kafka的主机。这个值是从Kafka的zookeeper读取的(见第3点)https://cwiki.apache.org/confluence/display/kafka/kafka+data+structures+in+zookeeper).
如果要更改值,可能需要在kafka中进行更改。看一看http://kafka.apache.org/090/documentation.html (或您正在使用的任何版本)并搜索“adverted.host.name”,我认为这是您要更改的设置。