操作环境
CentOS:CentOS-7-x86_64-DVD-1503-01
ZooKeeper:zookeeper-3.4.13.tar.gz
安装wget命令
-
yum -y install wget
安装Java
-
查看当前系统是否有Java
-
java -version
-
查看yum库中都有哪些jdk版本
yum search java|grep jdk
-
安装Java1.8(期间会有两次询问,均输入y即可)
yum install java-1.8.0-openjdk
-
查看Java版本,验证是否安装成功
-
java -version
单机安装Zookeeper伪集群
-
创建安装路径:
mkdir -p /usr/local/dev/zookeeper
-
下载Zookeeper:
wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
-
下载完成后进行解压:
tar zxvf zookeeper-3.4.13.tar.gz
-
将解压后的Zookeeper文件重命名并复制,共三份:
mv zookeeper-3.4.13 zookeeper-3.4.13_1 cp -a zookeeper-3.4.13_1 zookeeper-3.4.13_2
-
分别进行三个zookeeper文件夹下的conf目录下,创建zoo.cfg文件:
cp zoo_sample.cfg zoo.cfg
-
修改这三个zoo.cfg的内容,并创建/var/lib/zookeeper_1、/var/lib/zookeeper_2、/var/lib/zookeeper_3目录:
-
下面说明一下需要注意的几点:
-
dataDir属性配置的目录是指实例数据的存放路径,不同的实例需进行区分。
-
clientPort是指客户端连接本实例的端口号,不同的实例也要区分。比如,可以分别指定为:2181、2182、2183。
-
server.{X}这个X可以取数字,用来标识集群中唯一的一个实例。配置了多少个server.{X}就表示集群中有多少个实例。后面值的格式为:
{host}:{port1}:{port2}
其中:
-
{host}为实例所在的主机IP,这里由于都在一台机器上,所以都指定为本机地址;
-
{port1}是集群中实例之间用于数据通信的端口;
-
{port2}是集群中实例进行leader选举时使用的通信端口(注:对于同一实例{port1}和{port2}是不可相同的。对于同一台机器部署多个实例的情况,不同实例的同一种端口也是需要区分的)。
-
-
-
配置myId文件
前面提到的server.{X}配置项中的{X}就是一个实例的myid,它需要被写在对应实例的{dataDir}/myid文件中。
下面需要在每一个实例指定的{dateDir}目录下创建一个名为myid的文件,文件的内容就是一个数字,对应server.{X}中的X。
比如,这里是这样配置的: 在/var/lib/zookeeper_1/myid文件中写入1; 在/var/lib/zookeeper_2/myid文件中写入2; 在/var/lib/zookeeper_3/myid文件中写入3。
-
创建启动和停止脚本
对于多个实例,分别启动和停止比较麻烦,可以写一个脚本来自动完成这个工作。 start-zk-servers.sh的内容
echo `/usr/local/dev/zookeeper/zookeeper-3.4.13_1/bin/zkServer.sh start` echo `/usr/local/dev/zookeeper/zookeeper-3.4.13_2/bin/zkServer.sh start` echo `/usr/local/dev/zookeeper/zookeeper-3.4.13_3/bin/zkServer.sh start`
stop-zk-servers.sh的内容:
echo `/usr/local/dev/zookeeper/zookeeper-3.4.13_1/bin/zkServer.sh stop` echo `/usr/local/dev/zookeeper/zookeeper-3.4.13_2/bin/zkServer.sh stop` echo `/usr/local/dev/zookeeper/zookeeper-3.4.13_3/bin/zkServer.sh stop`
脚本创建后需要对脚本进行授权,默认授权最大权限:
chmod 777 ./start-zk-servers.sh chmod 777 ./stop-zk-servers.sh
10.现在可以启动zookeeper了