为了让服务器之间可以通信,服务器间需要一些联系信息。理论上,服务器可以使用多播来发现彼此,但我们想让ZooKeeper集合支持跨多个网

络而不是单个网络,这样就可以支持多个集合的情况。

为了完成这些,我们将要使用以下配置文件:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=./data
clientPort=2181
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445

  每一个server.n项指定了编号为n的ZooKeeper服务器使用的地址和端口号。每个server.n项通过冒号分隔为三部分,第一部分为服务器n的IP地址或主机名(hostname),第二部分和第三部分为TCP端口号,分别属于仲裁通信和群首选举。因为我们在同一个机器上运行三个服务器进程,所以我们需要在每一项中使用不同的端口号。通常,我们在不同的服务器上运行每个服务器进程,因此每个服务器项的配置可以使用相同的端口号

我们还需要分别设置data目录,我们可以在命令行中通过以下命令来
操作:

mkdir z1
mkdir z1/data
mkdir z2
mkdir z2/data
mkdir z3
mkdir z3/data

当启动多个服务器时,我们需要知道启动的是哪个服务器。一个服务器通过读取data目录下一个名为myid的问件来获取服务器ID信息。可以通过以下命令来创建这些文件:

echo 1 > z1/data/myid
echo 2 > z2/data/myid
echo 3 > z3/data/myid

  当服务器启动时,服务器通过配置配件中的dataDir参数来查找data目录的配置。它通过mydata获得服务器ID,之后使用配置问件中server.n对应的项来设置端口并监听。当在不同的机器上运行ZooKeeper服务器进程时,它们可以使用相同的客户端端口和相同的配置问件。但对于这个例子,在一台服务器上运行,我们需要定义每个服务器的客户端端口。

现在可以启动服务器,让我们从z1开始:

cd z1
$ {PATH_TO_ZK}/bin/zkServer.sh start ./z1.cfg

我们使用zkCli.sh来访问集群:

$ {PATH_TO_ZK}/bin/zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

注意:简单的负载均衡
客户端以随机顺序连接到连接串中的服务器。这样可以用ZooKeeper
来实现一个简单的负载均衡。不过,客户端无法指定优先选择的服务器来
进行连接。例如,如果我们有5个ZooKeeper服务器的一个集合,其中3个
在美国西海岸,另外两个在美国东海岸,为了确保客户端只连接到本地服
务器上,我们可以使在东海岸客户端的连接串中只出现东海岸的服务器,
在西海岸客户端的连接串中只有西海岸的服务器。

最新文章

  1. 之前想搞一个nim但因为是自用我会持续修复完善
  2. xmpp的bug
  3. mysql qps tps计算
  4. NSBundle 的理解和 mainBundle
  5. linux安装rz和sz
  6. 手机SIM卡无法识别解决方案
  7. ORACLE PL/SQL编程之八:把触发器说透
  8. C++编程规范(不断更新)
  9. Linux下如何高效删除一个几十G的文本文件的最后一行或几行
  10. HVR又一次load的时候须要将schedule suspend掉
  11. redux入门指南
  12. javaweb后台转码
  13. Apache Solr vs Elasticsearch
  14. 数组、ArrayList、List、LinkedList的区别
  15. Ext选项卡tabpanel切换动态加载数据
  16. 改变一下主要发博的方向吧...转scratch!
  17. CENTOS7常用的基础命令集合(一)
  18. 设置sde表空间为自动增长
  19. javascript 链式写法
  20. Docker安装指南

热门文章

  1. WKInterfaceTable实例化出现的一系列
  2. 【剑指offer】不使用新变量,交换两个变量的值,C++实现
  3. python对文件的读写
  4. Codeforces 559C Gerald and Giant Chess【组合数学】【DP】
  5. 在liunx系统安装负载生成器(Load Generator)
  6. fpga rom 初始化mif文件生成
  7. ballerina 学习十六 错误&&异常处理
  8. web 调试工具docker的安装使用
  9. [LeetCode系列]爬梯问题的递归解法转换为迭代解法
  10. PHP如何实现网址伪静态(转)