zookeeper 集群部署
参考:
1. 集群环境
- Zookeeper 版本: https://dlcdn.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
- Java 版本: https://download.oracle.com/otn/java/jdk/8u321-b07/df5ad55fdd604472a86a45a217032c7d/jdk-8u321-linux-x64.tar.gz
zk 节点 | ip | OS |
---|---|---|
zk1(vm1) | 10.23.243.224 | CentOS Linux release 8.4.2105 |
zk2(vm2) | 10.23.147.1 | CentOS Linux release 8.4.2105 |
zk3(vm3) | 10.23.126.115 | CentOS Linux release 8.4.2105 |
2. 步骤
2.1 安装 jdk1.8
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l9FIpkdy-1643125671031)(zookeeper%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2.assets/image-20201103203544237.png)]
-
依次执行
tar -zxvf jdk-8u321-linux-x64.tar.gz sudo mv jdk1.8.0_321/ /usr/lib cd /usr/lib && sudo mkdir jdk && sudo mv jdk1.8.0_321/ jdk
-
配置 Java 环境
sudo vim /etc/profile
末尾添加下列几行:
export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_321 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
激活配置:
source /etc/profile
-
配置软链接
软连接相当于windows系统中的快捷键,部分软件可能会从/usr/bin目录下查找Java,因此添加该软连接防止其他软件查找不到
sudo update-alternatives --install /usr/bin/java java /usr/lib/jdk/jdk1.8.0_321/bin/java 300 sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jdk/jdk1.8.0_321/bin/javac 300
-
测试
java -version
2.2 安装 zookeeper
1) 下载解压
-
版本 zookeeper 3.4.6
cd /root/zookeeper wget https://dlcdn.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
-
修改zk1, zk2, zk3 主机/etc/hosts文件
10.23.243.224 vm1 10.23.147.1 vm2 10.23.126.115 vm3
2) 配置
-
数据存储目录
tar -zxf apache-zookeeper-3.7.0-bin.tar.gz && cd apache-zookeeper-3.7.0-bin mkdir /root/zookeeper/apache-zookeeper-3.7.0-bin/data # 数据文件存储位置 touch /root/zookeeper/apache-zookeeper-3.7.0-bin/data/myid # myid文件
-
配置文件
vim /root/zookeeper/apache-zookeeper-3.7.0-bin/conf/zoo.cfg
写入以下内容
tickTime=2000 # 心跳周期为100ms initLimit=10 # follower与leader之间建立连接后允许进行同步的最长时间 syncLimit=5 # follower和leader之间发送消息,请求和应答的最大时间长度 dataDir=/root/zookeeper/apache-zookeeper-3.7.0-bin/data # 数据快照的路径,dataLogDir为存放日志的路径 clientPort=2181 # zookeeper服务端口 # 节点配置格式: server.id=ip:port1:port2 # server.id 的 id 为一个数字,表示 zk 进程的id,这个id也是data目录下myid文件的内容 # host 是该zk进程所在的IP地址 # port1 表示follower和leader交换消息所使用的端口 # port2 表示选举leader所使用的端口 server.1=10.23.243.224:2888:3888 server.2=10.23.147.1:2888:3888 server.3=10.23.126.115:2888:3888
-
复制到另外两个节点
scp -r /root/zookeeper/ root@10.23.147.1:/root/ scp -r /root/zookeeper/ root@10.23.126.115:/root/
-
配置节点 id
echo 1 >> /root/zookeeper/apache-zookeeper-3.7.0-bin/data/myid # zk1 上执行 echo 2 >> /root/zookeeper/apache-zookeeper-3.7.0-bin/data/myid # zk2 上执行 echo 3 >> /root/zookeeper/apache-zookeeper-3.7.0-bin/data/myid # zk3 上执行
3. 启动并验证集群
-
在zk1, zk2, zk3同时执行
/root/zookeeper/apache-zookeeper-3.7.0-bin/bin/zkServer.sh start
-
验证zookeeper是否启动
jps # 如果有QuorumPeerMain这个进程,则说明该节点上zookeeper进程启动了
-
连接zookeeper服务端
/root/zookeeper/apache-zookeeper-3.7.0-bin/bin/zkCli.sh -server 127.0.0.1:2181