采用版本: 3.4.14
2 April, 2019: release 3.4.14 available
集群规模: 5+N,5个选举节点,N个观察者节点
硬件要求: 16核CPU + 32G内存+ 2块物理硬盘,1个SSD,另一个不做要求
用虚机的话,避免分在同一个宿主机上,避免一挂全挂
存在的困难:
很多应用采用的是ip连接方式,ip变更的话需要显式切换(写在代码里面的需要重新编译;写在配置里面需要重新发版),
要让这么多应用都切换的话,需要一个较长的周期,所以在升级迁移服务的过程中一定有一个新老并存时期。
针对以上问题:
每个Id申请一个内部域名,对外公布域名,以后如有类似的操作,通过切换ip就可以完成。
思考: 是否需要针对每个团队一个域名,这样zk后续变化的话,更灵活,带来的问题是需要更多的域名,增加了管理上的复杂度
升级方案:
1、先用起来。
先部署观察者节点,让部分应用可以提前迁移到新环境,减少迁移周期;
2、迁移
大方向滚动式升级,对上面的应用的影响尽量平滑
注意:在每轮变更前是否需要提前修改现有观察者节点?观察者节点的观察对象如果有非选举对象是否有问题?
提前设成旧的在本轮变更中角色不变的阶段最为稳妥。
2.1 缩减选举节点规模,超过5个的,减少到5个,减少选举周期;
2.2 滚动升级。小步迭代,每次更新(N-1)/2 个节点
以5个举例,原来集群1A 2A 3A 4A 5A,假定1A是leader
第1轮:变更后的选举集群节点为:1/2/3A 1/2B,观察者节点为 4/5A
第一步:新建集群1/2/3A 1/2B.
1/2/3A不动, 挨个启动1/2B;
第二步:修改2/3 A的配置为新集群配置,并挨个重启;
由于变动的是少数服务,对新旧集群无影响;
第三步:修改4/5A为新集群观察者节点
修改集群1A配置为新集群配置,此时触发集群重新选组,选组完成,新集群对外提供服务。
第2轮A: 旧的节点当选为leader,仍假定为1A,变更后的集群节点为:1A 1/2/3/4B, 新添观察者节点2/3A
第一步:新建集群1A 1/2/3/4B
依次加入3/4B节点
第二步:更新1/2B节点的配置,并挨个重启;
第三步:修改2/3A为新集群观察者节点
修改集群1A配置为新集群配置,此时触发集群重新选组,选组完成,新集群对外提供服务。
第三轮A-A:新节点为leader,假定1B,变更后的集群节点为:1/2/3/4/5B,新添观察者节点1A
第一步:停掉1A,更新2/3/4B节点配置并依次重启
第二步:更新1B配置,并重启,触发选举并对外服务;
第三步:加入5B节点,修改1A节点为观察者节点,并重启
第三轮A-B:旧节点1A为leader,先停掉1A,触发选举,新节点当选为leader,后续操作同第三轮A-A
总结
替换非leader节点的逻辑: 加入新节点;逐个修改要保留的节点;要下掉的旧节点改成观察者节点;最后更新leader节点
替换leader节点的逻辑:节点少的情况下先加后减。先加入新的节点,后停掉要替换的节点,挨个修改配置并重启;
节点多的情况下,先停后加
以上做法的前提:是否选组由leader控制,各节点对自己的状态负责,实际上也是这样的。
比较粗犷的操作先扩容,再缩容,扩容和缩容的操作都修改配置触发一次选主,这样做的优点,方法简单,好操作。
分享到:
相关推荐
1. HBase:HBase依赖Zookeeper进行元数据管理,如RegionServer的注册和监控,以及Region的分配和迁移。 2. Kafka:Kafka利用Zookeeper进行Broker的注册与发现,以及Partition的分配。 3. Storm:Storm利用...
- **Session的迁移与同步:** 在ZooKeeper中存储的Session数据可以通过同步机制在不同的服务器之间共享,保证了数据的一致性。 - **高可用性保证:** 通过ZooKeeper集群提供的选举机制,可以确保即使部分节点故障,...
**Zookeeper:分布式...无论是简单的配置共享,还是复杂的分布式锁和集群管理,Zookeeper都提供了简洁而强大的解决方案。对于开发者来说,理解和掌握Zookeeper的使用方法和原理,对于构建健壮的分布式系统至关重要。
Zookeeper,作为Apache的一个开源项目,是一个高可用、高性能的分布式协调服务,它为解决分布式环境下的session共享提供了有效的解决方案。本示例将探讨如何利用Zookeeper实现分布式session。 1. **Zookeeper的基本...
经过几年的发展和变迁,2008年6月迁移到Apache软件基金会,2010年获得了Usenix的“最佳论文奖”("ZooKeeper: Wait-free Coordination for Internet-scale Systems"),并在2011年发布了ZooKeeper 3.4版本。...
- **连接方式**:客户端可以连接任意一个Zookeeper服务器,集群内部会自动进行会话迁移。 - **连接优化**:可以通过设置`clientPort`来指定监听客户端连接的端口,避免网络拥堵。 7. **监控与维护** - **日志...
通过Zookeeper,服务可以灵活地在集群中迁移,而不会影响服务的可用性。同时,Dubbo的监控和管理功能可以帮助运维人员更好地理解和控制整个系统的运行状态。 至于“DubboAdminPro”,这可能是一个增强版的Dubbo管理...
ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,它为分布式计算提供了一个高可用、高性能的解决方案。本话题将深入探讨如何利用 ZooKeeper 来管理会话,而不是传统的 Memcached 方法。 在传统Web...
扩容方案可以分为五个步骤:扩容准备、扩容 Kafka 服务、部署 kafka-manager、 Topic 迁移和修改连接配置。 1. 扩容准备 在扩容之前,需要准备好新的节点,包括新节点的 Kafka 服务目录、日志目录和配置文件。新...
这个整合包包含了这些组件的Linux版本,为大数据处理提供了完整的解决方案。 Flume是Apache开发的一个分布式、可靠且可用于有效收集、聚合和移动大量日志数据的系统。它设计得高度容错,能够确保数据的高可用性。...
- **分布式协调:** 利用分布式协调框架(如 Apache ZooKeeper 或 Apache Helix)来确保数据迁移的一致性和正确性。 #### 四、负载均衡与性能优化 **4.1 负载均衡策略** - **自动化负载均衡:** 通过算法动态调整各...
Codis是中国淘宝团队开源的一款分布式Redis解决方案,旨在解决单个Redis实例在内存容量和处理能力上的瓶颈问题。这个压缩包“Codis分布式Redis解决方案 v3.2.2.zip”包含了实现这一解决方案的相关源码和资源,对于...
collective.migrator库考虑到了这种环境,提供了在多节点集群中进行数据迁移的解决方案。它能够确保在分布式系统中的各个节点上同步执行迁移,保持数据的一致性。 3. **与Zookeeper集成**: zookeeper是Apache的一...
例如,如果只需要全局唯一,不关心连续性,可以选择基于ZooKeeper和本地缓存的方案,通过ZooKeeper协调ID段分配,本地缓存一段ID并递增使用,确保高性能。但如果需要连续递增的ID,可能需要调整策略,比如将递增区段...
在展开有关Hadoop HDFS系统双机...同时,还要对系统进行充分的测试,以确保在切换过程中能够实现无缝迁移,保证业务的连续运行。这要求管理人员对Hadoop架构和相关网络技术有深入的理解,并且具备一定的实际操作经验。
2. **数据迁移**: 使用 Sqoop 这样的数据迁移工具,从 MySQL 等关系型数据库将数据迁移到 Hbase,设计合适的 Hbase 表结构,尤其关注 RowKey 设计,确保数据迁移的顺利进行。 【集群配置】 在测试环境中,集群采用...
总的来说,"fedmsg_migration_tools-0.1.2.tar.gz" 提供了处理Fedmsg迁移的解决方案,尤其是在有ZooKeeper参与的分布式环境中。它可能是Python开发者处理Fedora相关项目升级和扩展时的重要工具,有助于维护系统的...
"zookeeper-distributed-session-manager"项目的核心目标是为分布式应用提供一个跨服务器的、一致性的session存储解决方案。在传统的Web应用中,session通常由单个服务器维护,当用户在集群中的不同服务器之间跳转时...
1. 槽位管理:Zookeeper存储槽位与Redis实例的映射关系,当需要进行数据迁移或添加/删除Redis实例时,更新这些信息。 2. 集群状态:维护每个Redis实例的状态,包括是否在线、是否满载等,Proxy通过Zookeeper获取...
总的来说,"avimigrationtools"是Python生态中一个针对分布式云环境下的迁移任务的实用工具集,它结合了云原生理念和Zookeeper的协调能力,为企业和开发者提供了一套强大且灵活的解决方案。对于那些在云环境中面临...