一、开发环境准备
1、yum install -y unzip zip
2、安装sdkman:
命令行安装
curl -s "https://get.sdkman.io" | bash
根据屏幕提示即可完成安装
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk version
检查是否安装成功
$ sdk list gradle
sdk install gradle
sdk install gradle 4.4.1
sdk uninstall scala 2.11.6
sdk default scala 2.11.6
二、安装zookeeper
wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz -P /usr/local/src/
tar -zxvf zookeeper-3.4.13.tar.gz -C /opt
cd /opt && mv zookeeper-3.4.13 zookeeper
cd zookeeper
cp conf/zoo_sample.cfg conf/zoo.cfg
添加环境变量
echo -e "# append zk_env\nexport PATH=$PATH:/opt/zookeeper/bin" >> /etc/profile
编辑zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataLogDir=/opt/zookeeper_cluster/zookeeper_1/logs
dataDir=/opt/zookeeper_cluster/zookeeper_1/data
clientPort=2181
autopurge.snapRetainCount=500
autopurge.purgeInterval=24
server.1= 47.106.124.225:2888:3888
server.2= 47.106.124.225:2882:3882
server.3= 47.106.124.225:2886:3886
2、配置参数说明
tickTime这个时间是作为zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是说每个tickTime时间就会发送一个心跳。
initLimit这个配置项是用来配置zookeeper接受客户端(这里所说的客户端不是用户连接zookeeper服务器的客户端,而是zookeeper服务器集群中连接到leader的follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。
当已经超过10个心跳的时间(也就是tickTime)长度后 zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20秒。
syncLimit这个配置项标识leader与follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒。
dataDir顾名思义就是zookeeper保存数据的目录,默认情况下zookeeper将写数据的日志文件也保存在这个目录里;
clientPort这个端口就是客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求;
server.A=B:C:D中的A是一个数字,表示这个是第几号服务器,B是这个服务器的IP地址,C第一个端口用来集群成员的信息交换,表示这个服务器与集群中的leader服务器交换信息的端口,D是在leader挂掉时专门用来进行选举leader所用的端口。
3、创建serverID
除了修改zoo.cfg配置文件外,zookeeper集群模式下还要配置一个myid文件,这个文件需要放在dataDir目录下。
这个文件里面有一个数据就是A的值(该A就是zoo.cfg文件中server.A=B:C:D中的A),在zoo.cfg文件中配置的dataDir路径中创建myid文件。
echo "1" > /opt/zookeeper_cluster/zookeeper_1/data/myid
echo "2" > /opt/zookeeper_cluster/zookeeper_2/data/myid
echo "3" > /opt/zookeeper_cluster/zookeeper_3/data/myid
./zookeeper_1/bin/zkServer.sh start-foreground
zkCli.sh -server c1:2181