zookeeper 安装启动(集群配置)
本文主要介绍zk的安装,和简单的集群化部署,以能正常启动为结果导向。
1 环境介绍
操作系统:centos7
下载地址 https://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1708.iso (在阿里云镜像 https://opsx.alibaba.com/mirror 中找的)
zk版本: 3.4.10
下载地址:http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/
(使用前确认jdk已经正确安装)
2 安装wget(如果以安装 跳过该步骤)
2.1 查看wget 命令是否安装
rpm -qa | grep wget 查找某软件包是否安装,用 rpm -qa | grep "软件或者包的名字"。
2.2 安装wget
yum –y install wget
3 安装zk
3.1 下载
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
3.2 解压
tar -zxvf zookeeper-3.4.10.tar.gz
3.3 移动目录到usr/local下面
mv ./zookeeper-3.4.10 /usr/local
4 单机部署多个zk实例(伪分布式)
这里部署3个实例
4.1 进入zk文件夹下的conf的文件
cd ./zookeeper-3.4.10/conf/
4.2 打开 zoo_sample.cfg 文件,我们先认识一下这个文件
这里先关注两个参数
dataDir:用于存放zk数据的文件夹。
clientPort:服务的监听端口。
4.2 把zoo_sample.cfg 文件复制一份叫 zoo1.cfg,作为实例1的配置
4.2.1 复制 cp zoo_sample.cfg zoo1.cfg
4.2.2 修改 zoo1.cfg 的 dataDir 存放的位置(不是必须),文件夹先建好
4.2.3 在最后添加集群信息
server.[myid] = hostname:节点同步数据端口:zk选举接口
myid 和hostname后面会配置
4.3 从zoo1.cfg 复制出两份zoo2.cfg 和zoo3.cfg 分别作为实例2 和实例3的配置
修改zoo2.cfg 的dataDir 和 clientPort
修改 zoo3.cfg 的dataDir 和 clientPort
总结:zoo1,cfg zoo2.cfg zoo3.cfg 三分文件 除了端口和文件目录外 其他都一致
4.4 配置myid信息
4.4.1 进入dataDir 所配置的目录 ,应该有3个文件夹
4.4.2 分别进入这三个文件夹 创建myid文件
cd zk1
touch myid
4.4.3 分别给这3个myid文件写入1,2,3 即在4.2.3中配置的server后面的id
用如下命令分别写入
echo 1 >> ./zk1/myid
echo 2 >> ./zk2/myid
echo 3 >> ./zk3/myid
4.5 修改你所在机器的hostname,这里我需要改成master
有两种修改方式 , 一种是临时修改,机器重启后会自动还原, 一种是永久修改。我这里用临时修改。
#hostname master
· 然后重新连接就能看到hostname 被修改成功了
5 启动,查看
进入到bin目录
启动三个实例
# ./zkServer.sh start ../conf/zoo1.cfg
# ./zkServer.sh start ../conf/zoo2.cfg
# ./zkServer.sh start ../conf/zoo3.cfg
当存在实例没有启动的时候,你查看已启动的状态会出现如下异常
查看状态的命令 即把 启动命令中的start换成status
当3个实例全部启动后,使用jps命令查看是否启动
jps 要做安装jdk后才能使用,当看到出现3个QuorumPeerMain的时候表示成功
全部启动成功后,然后查看实例的状态 这里我查看实例3的状态
# ./zkServer.sh status ../conf/zoo3.cfg
这里可以看到 实例3 是个follower ,实例1和实例2中有一个master.
6 真分布式
即把上面的三个实例分布在不同的机器上,然后分别配置自己的zoo.cfg文件和myid ,然后分别启动即可
7 总结
在配置过程中,要注意3个实例的端口号不能冲突,myid文件必须在各种的数据目录下面,myid的内容必须和你配置的集群信息相同
当3个实例全部启动后,查看状态的时候,出现Error contacting service.It is probably not running ,可能原因是防火墙没有关闭。可以尝试关闭防火墙
同时可以在bin目录下的zookeeper.out文件中查看出错的具体原因。
一个集群有N个节点,必须保证有N/2 +1个几点正常,集群才能正常工作,推荐集群节点总是为基数