热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Zookeeper分布式过程协同技术部署及设置

Zookeeper分布式过程协同技术-部署及设置Zookeeper支持单机模式、伪集群模式、集群模式三种部署方式。演示部署环境为CentOS、jdk版本为1.8、Zookeeper

Zookeeper分布式过程协同技术 -  部署及设置

Zookeeper支持单机模式、伪集群模式、集群模式三种部署方式。演示部署环境为CentOS、jdk版本为1.8、Zookeeper版本为3.4.9。

单机模式

单机模式适合入门学习使用,只需要一台机器就可以轻松搭建Zookeeper服务用于学习和测试。

1. 进入官网下载Zookeeper的JAR包,下载地址:https://zookeeper.apache.org/releases.html。

2. 解压压缩包,命令:tar -zxvf zookeeper-3.4.9.tar.gz,解压后目录格式如下。

3. 进入conf目录,复制zoo_sample.cfg文件命名为zoo.cfg。这里可以直接使用默认的参数,也可以根据自己的需要修改。

命令:cp zoo_sample.cfg zoo.cfg

主要配置参数说明

  • clientPort

客户端连接的服务器所监听的TCP端口,默认情况下,服务器会监听所有的网络连接的这个端口,除非设置了clientPortAddress参数。客户端口可以设置为任何值,不同的服务器可以设置不同的端口,默认端口号为2181。

  • tickTime

tickTime的时长单位为毫秒,Zookeeper集群中使用的超时时间单位通过tickTime指定。tickTime设置了超时时间的下限值,因为最小的超时时间为一个tick时间,客户端最小会话超时时间为2个tick时间。

tickTime的默认值是3000毫秒,更低的tickTime值可以更快地发现超时问题,但也导致更高的网络流量和更高的CPU使用率。

  • dataDir

dataDir用于配置内存数据库保存的模糊快照目录,如果某个服务器为集群中的一台,id文件也保存在该目录下。

  • dataLogDir

用于配置事务日志的保存目录。服务端在确认一个事务前必须将数据同步到存储中,如果写入磁盘过于忙碌会影响到写入的吞吐能力。因此,比较好的方案是使用专用的日志存储设备,将dataLogDir目录配置指向该设备。

  • maxClientCnxns

允许每个IP地址发起socket连接的最大数量。Zookeeper通过流量控制和限制值来避免过载情况的发生。当某个IP地址的客户端建立的连接数大于此值时,服务器会拒绝该IP地址新的连接。

  • initLimit

对于追随者最初连接到群首时的超时时间,单位为tick(tickTime)值的倍数。

当某个追随者最初与群首建立连接时,它们之间会传输相当多的数据,尤其是追随者落后整体很多时。配置initLimit参数值取决于群首与追随者之间的网络传输速度以及传输数据量的大小。

但是如果设置值过高,在首次连接到故障的服务器就会消耗更多的时间,同时还会消耗更多的恢复时间。因此在实际部署时,最好进行集群间的网络基准测试来测试出你所期望的时间。

  • syncLimit

对于追随者与群首进行sync操作时的超时值,单位为tick(tickTime)值的倍数。

追随者总是会稍落后于群首,如果群首与追随者无法进行sync操作,而且超过了syncLimit的tick时间,就会放弃该追随者。

  • leaderServes

配置值为“yes”或“no”标志,指示群首服务器是否为客户端提供服务。担任群首的服务器需要做很多工作,它需要与所有的追随者进行通信并会执行所有的变更操作,这意味着群首的负载会比追随者高很多,如果群首过载,整个系统都有可能受到影响。

4. 进入bin目录,可以看到很多sh脚本文件,通过zkServer.sh来启动zookeeper。

操作命令:

启动命令:.zkServer.sh start

停止命令:.zkServer.sh stop

重启命令:.zkServer.sh restart

状态查看命令:.zkServer.sh status

启动zookeeper服务后,通过status命令可以看到当前服务状态、使用的配置文件、运行模式。

 这样Zookeeper的单机部署模式就已经初步完成了。如果需要修改JVM配置,可以修改zkServver.sh文件中的配置,在如下位置加入你需要的参数。

伪集群部署

 伪集群部署指在一台机器上部署多个Zookeeper服务。

1. 首先将之前配置好的Zookeeper服务目录另外复制两份,命名为zookeeper-2和zookeeper-3。

2. 然后分别修改三份的zoo.cfg配置项,添加配置 server.x=[hostname]:n:n[:observer],示例如下。

server.1=localhost:2887:3887

server.2=localhost:2888:3888

server.3=localhost:2889:3889

Zookeeper服务器需要知道它们如何通信,配置文件中该形式的配置项就指定了服务器x的配置信息,其实x为服务器的ID值(一个整数)。当一个服务器启动后,就会读取data目录下myid文件中的值,之后服务器就会使用这个值作为查找server.x项,通过该项中的数据配置服务器自己。如果需要连接到另外一个服务器y,就会使用server.y项配置信息来与这个服务器进行通信。

hostname为服务器在网络中的名称(ip或者主机名),同时后面跟着两个端口号,第一个端口号用于事务的发送,第二个端口号用于群首选举。如果最后一个字段标记了observer属性(选填),服务器就会进入观察者模式。

三份配置文件的myid和两个配置端口号以及clientPort不可以重复,因为是在一台机器上部署,生产环境集群部署时可以忽略。最终的配置清单如下:

3. 分别添加myid文件,在data目录下添加myid文件。

echo '1' > data/myid

4. 分别启动三个Zookeeper服务,启动成功后通过status命令可以查看服务的状态。可以看到目前集群里有一台leader和两台follower。

集群部署

生产环境的集群部署步骤和伪集群部署并无太多差异,同样是修改zoo.cfg配置文件并且添加Zookeeper集群信息,集群部署时,客户端端口号、事务端口号、选举端口号都可以保持一致。另外集群部署时需要充分考虑集群机器间的网络情况来制定合理的超时时间设置。

 


推荐阅读
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • MQTT技术周报:硬件连接与协议解析
    本周开发笔记重点介绍了在新项目中使用MQTT协议进行硬件连接的技术细节,涵盖其特性、原理及实现步骤。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • 本文详细介绍了如何准备和安装 Eclipse 开发环境及其相关插件,包括 JDK、Tomcat、Struts 等组件的安装步骤及配置方法。 ... [详细]
  • 本文详细介绍如何通过修改配置文件来隐藏Apache、Nginx和PHP的版本号,从而增强网站的安全性。我们将提供具体的配置步骤,并解释这些设置的重要性。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 探讨了小型企业在构建安全网络和软件时所面临的挑战和机遇。本文介绍了如何通过合理的方法和工具,确保小型企业能够有效提升其软件的安全性,从而保护客户数据并增强市场竞争力。 ... [详细]
author-avatar
mobiledu2502852753
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有