zk特性:
1、集群数量少于一半不工作
2、每个Zookeeper服务器配置文件中的服务器列表应彼此一致
3、写操作需要(通常)集合中至少一半节点的同意,因此,随着添加更多的投票者,投票的成本可能会显着增加。
建议:参与投票client 3或者5,不要太多,其他Client建议使用Observer
集群安装
官网地址:https://zookeeper.apache.org/doc/r3.4.14/zookeeperAdmin.html#sc_commonProblems
1、安装Java JDK。JDK地址:http://java.sun.com/javase/downloads/index.jsp
2、设置Java堆大小。因为交换会严重降低ZooKeeper的性能。要设定正确的值,请使用压测测试,并确保您已远远低于会导致交换的使用限制。保守一点-对于4GB的计算机,最大堆大小为3GB。
3、安装ZooKeeper服务器软件包。下载并解压:http://zookeeper.apache.org/releases.html
4、创建一个配置文件 conf/zoo.cfg。使用以下设置:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper-3.4.6/data
clientPort=2181
#按照自己机器实际ip填写以下IP
server.1=192.168.1.1:2888:3888
server.2=192.168.1.2:2888:3888
server.3=192.168.1.3:2888:3888
5、在每台服务器zk目录的data文件夹创建名称为myid的文件,写入1-255之间任意一个整数作为ID,ID在集群中必须唯一
6、启动ZooKeeper服务器,执行 ./bin/zkServer.sh start
7、检查ZooKeeper状态,执行 ./bin/zkServer.sh status
扩容 案例
假设现在有三台client: A、B、C
需要扩展成5台 : A、B、C、D、E
前提条件:业务连接zk地址已变更为5台机器的ZK地址
第一步:
a、修改5台配置文件 conf/zoo.cfg
server.1=192.168.1.1:2888:3888
server.2=192.168.1.2:2888:3888
server.3=192.168.1.3:2888:3888
server.4=192.168.1.4:2888:3888
server.5=192.168.1.5:2888:3888
b、添加D、E配置文件 data/myid D服务器写入4 、E服务器写入5
第二步:重启服务
确定当前leader,假设为C
- 先启动D
- 再重启A、B,此时DAB形成新集群,ABC集群不工作
- 再启动C、E
缩容 案例
5台 : A、B、C(leader)、D、E
减去D、E
- 修改5台配置文件 conf/zoo.cfg
- 重启A、B
- 重启C(如果出现问题,恢复C服务的 conf/zoo.cfg ,重启)
- 下掉D、E