文档编写目的
随着集群规模的不断扩大,在对集群进行调整优化时。时常会考虑对集群的角色进行优化调整,这就会涉及到服务角色的迁移。本篇文章主要介绍如何将Zookeeper服务的单个实例从一个节点迁移到其他节点。
- 测试环境:
1.Redhat7.6
2.采用root用户操作
3.CM和CDH版本为5.16.2
Zookeeper角色迁移计划
1.集群Zookeeper服务角色实例分配情况
![1d28777608938f3e6d6dcbe5f6ad99af.png](https://i-blog.csdnimg.cn/blog_migrate/17a35636b7a6591c9596b1370409f091.jpeg)
2.由于角色规划不合理,需要将cdp1.hadoop.com节点的Zookeeper实例实例迁移到cdp4.hadoop.com节点上
![e4d786ecdee6bf7de0473a740dd870f6.png](https://i-blog.csdnimg.cn/blog_migrate/2a64157f591e9d8bd2ce6792956208eb.jpeg)
Zookeeper角色迁移
1.通过CM查看集群ZooKeeper中Server数据目录的位置
![5466b7c63f39f043161b5b9e72ef64d3.png](https://i-blog.csdnimg.cn/blog_migrate/5ed554f1673e8a7edd078381a9a992dc.jpeg)
2.停止cdp1上的ZK server服务
![3e0dc8420fb3facf9b76e564298c8d57.png](https://i-blog.csdnimg.cn/blog_migrate/6bdc3dd3974b5f0190abf9e342caf9d0.jpeg)
3.在cdp4节点创建一个新的目录,并把cdp1节点的目录的数据迁移到cdp4节点新目录
[root@cdp4 ~]# mkdir /data/ZK[root@cdp4 ~]#
![ce8e37674359b3610c1f9572147413eb.png](https://i-blog.csdnimg.cn/blog_migrate/75f42a4ba818f6412f0f29a6e4d47593.jpeg)
将cdp1节点的/data/ZK迁移到cdp4的/data/ZK
![88dba8a7cdf97c8a42dd0a4637465b66.png](https://i-blog.csdnimg.cn/blog_migrate/762f70b2371da8f2cb266c49607c52d0.jpeg)
![d8587adbd6383303aaeda779c7225457.png](https://i-blog.csdnimg.cn/blog_migrate/58f05c107f5f1b9e38ee3fe6c2ce1c0f.jpeg)
![47e23c95c4872b1cee8eaea706a6dfa8.png](https://i-blog.csdnimg.cn/blog_migrate/e0c0606804d736c023aebaf639190166.jpeg)
注意和原目录比对一下目录权限是否有变化
![43dea38f91b51f30006ffe0a47910a8e.png](https://i-blog.csdnimg.cn/blog_migrate/7fadbd29e07bbec1995043b6b65c5206.jpeg)
4.在CM界面删除cdp1上的ZK server
![09806356cd8853a5d3900b847e0e931c.png](https://i-blog.csdnimg.cn/blog_migrate/711489a03de0c001982f89924de9903a.jpeg)
5.在cdp4上添加一个ZK server角色
![c3697b44ec27f8c85d761ac6f60259ca.png](https://i-blog.csdnimg.cn/blog_migrate/59f4737a4641466879ace1dc48accf17.jpeg)
![4d9023ec6a345aebaaac04d523714145.png](https://i-blog.csdnimg.cn/blog_migrate/4e7aa6424332f9d8769d916035437186.jpeg)
![96d6fa47e681908f91a16c87ffa9b5da.png](https://i-blog.csdnimg.cn/blog_migrate/148e63391aa2edcf04fbcbcd4d0d6337.jpeg)
![8e88ebf0c7fa31d4cab8473183c2d0f9.png](https://i-blog.csdnimg.cn/blog_migrate/06f7cd9212b0d63422d79cdd6221bcc0.jpeg)
启动cdp4 上的ZK server
![59b88dd09757e1e4e01a07313696ff84.png](https://i-blog.csdnimg.cn/blog_migrate/435cb2bbef73da19c6d8d6a093644917.jpeg)
ZooKeeper启动成功后,将cdp2和cdp3两个节点的ZK服务重启。
注意:重启cdh02和cdh03节点的ZK服务时一个个重启,确保ZK服务正常后,再操作下一个。
![47d0ffa17785a97bcf084b34c5cadbfe.png](https://i-blog.csdnimg.cn/blog_migrate/1afbfd4fad6e87b3c722b0cca606ece0.jpeg)
实例运行正常,leader选举正常
![bb8b373e3e112e683d868abe8fe2b275.png](https://i-blog.csdnimg.cn/blog_migrate/90a3819440d3ab5b8840455584eab614.jpeg)
最后部署客户端配置并重启相关服务
![cfc0aaa82c5b509e33861d529302352c.png](https://i-blog.csdnimg.cn/blog_migrate/54f09832782c230398837ed6998adaa0.jpeg)
![4de22e2db1d3f55ee8be0a0245b0324b.png](https://i-blog.csdnimg.cn/blog_migrate/ba09e8a0addacf929c0f76098960ecae.jpeg)
集群服务运行正常
![4a3ef5711ac9b7bcba913104674e42e7.png](https://i-blog.csdnimg.cn/blog_migrate/5396f44e667c0b416fc963ef6dc65c41.jpeg)
总结
1.Zookeeper服务角色迁移,其实就是将待迁移节点的ZK服务停止并删除并将待迁移节点的数据目录打包拷贝至新节点上,同时在新节点上添加一个ZK服务即可
2.在迁移ZK服务的过程中,需要一个节点一个节点的操作,操作完一个节点后,需要重启滚动重启ZK服务,确保服务的选举没有问题后再进行操作
3.移动ZooKeeper的数据目录到新的节点的目录时,要注意目录的用户属组和权限正确
4.ZK服务实例的迁移会涉及到HDFS、HBase等服务的重启,同时也需要考虑到应用层面的变更(如:Kafka、HBase等服务相关应用)