在虚拟机安装zk集群遇到了不少坑,耽误了很多时间,步骤记录在此,日后生产安装时有个参照
1.虚拟机准备了3台,ip分别为
192.168.220.2
192.168.220.3
192.168.220.4
安装jdk省略 (此处有坑,之前在root下安装的jdk)
2.上传zookeeper-3.4.5.tar.gz,解压后修改conf下zoo.sample.cfg并改名为zoo.cfg
这里记录一个linux命令scp.总是忘。。。
scp -r apps zhouchao@192.168.220.2:/home/zhouchao
文件中几个比较重要的配置:
(1)dataDir=/tmp/zookeeper zk数据默认存放的位置,在配置集群时要在此目录下新增文件myid。文件内容设置id.id与下方配置对应。
(2)clientPort=2181 zk默认端口号
(3)配置zk内部使用的端口号
server.1=192.168.220.2:2888:3888
server.2=192.168.220.3:2888:3888
server.3=192.168.220.4:2888:3888
此处1.2.3即为第一步放入myid文件中的内容。分别只放数字1.2.3即可保存。
2888为zk集群通信默认端口
3888为zk选举默认端口
3.进入bin目录下,启动zk
执行./zkServer.sh start
启动失败时,执行./zkServer.sh restart,这时bin目录下生成zookeeper.out文件。进入查看错误消息。
第一次失败时:bash: /home/user/java/jdk1.7.0/bin/java: 权限不够
之前root下安装的jdk,本次在普通用户下安装zk导致
第二次失败时:
Connection broken for id 1, my id = 2, error = java.net.SocketException
在第二步设置myid文件时,把第二台的id写成了3.....所以第二台一直启动不了,另外两台可以启动
4.zk集群启动后查看状态,测试操作节点
执行./zkServer.sh status 发现三台全部启动成功
Mode: follower Mode: follower Mode: leader
测试节点操作
./zkCli.sh进入zk客户端控制台
客户端操作命令:
ls /
get /app1
create /app1/app2 data2
get /app1/app2