假设 3个node
node001 node002 node3
node001执行:
1 xshell 导入安装包 zookeeper-3.4.6.tar.gz
2 tar -zxvf zookeeper-3.4.6.tar.gz -C /opt
3 vi /etc/profile 末行加入
export ZOOKEEPER_HOME=/opt/zookeeper-3.4.6/
export JAVA_HOME=/usr/java/jdk1.7.0_67/
PATH=$PATH:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin
4 . /etc/profile 重新读取环境变量 (zk + tab键自动补全测试zk环境变量是否生效)
5 scp -r /etc/profile node002:/etc/
scp -r /etc/profile node003:/etc/
6 cd /opt/zookeeper-3.4.6/conf
7 cp zoo_sample.cfg zoo.cfg
8 vi zoo.cfg 修改如下行
dataDir=/var/zk 原来放在/tmp下不安全
server.1=node001:2888:3888
server.2=node002:2888:3888
server.3=node003:2888:3888
9 scp -r /opt/zookeeper-3.4.6/ node002:/opt
scp -r /opt/zookeeper-3.4.6/ node003:/opt
10 mkdir -p /opt/zk
11 echo 1 > /opt/zk/myid
node002 执行
1 mkdir -p /opt/zk
2 echo 2 > /opt/zk/myid
node003 执行
1 mkdir -p /opt/zk
2 echo 3 > /opt/zk/myid
001 002 003 zkServer.sh start 003 是leader,因为003的server_id是3
001 002 003 分别执行zkServer.sh start 002 是leader,因为已经过半了,003只能是follower
zkServer.sh status 查看zk状态
一、zookeeper有三个端口(可以修改)
1、2181
2、3888
3、2888
二、3个端口的作用
1、2181:对cline端提供服务
2、3888:选举leader使用
3、2888:集群内机器通讯使用(Leader监听此端口)
三、部署时注意
1、单机单实例,只要端口不被占用即可
2、单机伪集群(单机,部署多个实例),三个端口必须修改为组组不一样
如:myid1 : 2181,3888,2888
myid2 : 2182,3788,2788
myid3 : 2183,3688,2688
3、集群(一台机器部署一个实例)
四、集群为大于等于3个基数,如 3、5、7....,不宜太多,集群机器多了选举和数据同步耗时时长长,不稳定。目前觉得,三台选举+N台observe很不错。