1.准备java运行环境,按照任意教程做即可,需要注意,设置环境变量之后需要跟source /etc/profile命令来使环境变量设置生效,每次重启后也要同样使用该命令应用环境变量设置。
2.下载zookeeper安装包,zookeeper 下载地址为: https://zookeeper.apache.org/releases.html,不要下载source release版本,下载的文件应当包含bin字样,这才是编译过后的版本。
3.解压安装包至合适的目录,打开该目录下./conf/zoo_example.cfg,进行一定的修改,示例:
tickTime=2000
initLimit=10
syncLimit=2
dataDir=/home/no4/zoodata
clientPort=2181
server.1=192.168.56.104:2888:3888
server.2=192.168.56.105:2888:3888
server.3=192.168.56.106:2888:3888
此为集群模式,若要是单机模式,则删去示例的最后两行。
注意默认的dataDir是系统的temp文件夹,需要修改,否则对节点的修改会在系统重启后消失。
如果后续提示端口被占用,可以修改clientPort的2181端口,2888,3888端口最好不要修改,会导致未知问题。
4.创建myid文件,在上述示例程序中dataDir指定的目录下创建一个没有拓展名的myid文件,其内容为数字1或2或3,与示例程序中server.1对应。内容只有一个数字,其他什么都没有。
5.启动zookeeper服务器:cd至zookeeper/bin目录下,使用./zkServer.sh start命令启动服务器,如果不行就用sh zkServer.sh start,正常启动的显示应当如下:
root@no4-Default-string:/home/no4/zookeeper/bin# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/no4/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
5.按照相同的步骤对其他机器进行配置,注意集群模式下需要至少半数服务器正常启动后且互相连接后才能进行接下来的测试,否则会出现not currently use的错误。
6.测试启动是否正常:输入./zkServer.sh status,正常的输出应当如下:
root@no4-Default-string:/home/no4/zookeeper/bin# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/no4/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
集群模式下Mode可能为leader或follower,单机伪集群模式下Mode为standalone
7.使用telnet四字命令测试:telnet 127.0.0.1 2181,然后输入stat,此步骤可省略。
8.使用zkCli测试:zkCli.sh是zookeeper客户端脚本,如果是本地zookeeper服务器,可以输入./zkCli.sh启动zkCli.sh脚本,或使用./zkCli.sh -server 192.168.56.104:2181类似的命令连接指定地址的zkServer。输出内容很长,其中存在CONNECT字样时即表示连接成功。
进一步输入ls /命令来列举节点,正常的输出应当如下:
[zk: 192.168.56.104(CONNECTED) 2] ls /
[zookeeper]
至此zkServer已确认正常启动。
问题解决方案:当出现未知错误时,可以去/logs文件夹下查看日志信息,据此定位错误或是查找解决方案。