由于zookeeper是一个分布式协调服务,所以学习zookeeper的时候难免需要创建一个zk集群进行学习,下面就分享下怎么从0开始搭建zk集群
准备工作
下载虚拟机
一般自己学习的话不像真实环境,肯定是创建虚拟机进行学习,我使用的virtual box,下载完成安装完毕即可使用
VM Virtualbox
下载centos7镜像文件
需要一个操作系统,下载地址如下
centos7
下载xshell(可选)
因为virtual box的界面操作起来太难受了,用xshell可以快捷的使用CV大法,还可以上下滚动,推荐装一下,官网如下
xshell
PS:学习用不要钱
具体操作
创建虚拟机
根据下面给出的图片按顺序操作即可
然后按照图形化界面进行系统安装,等待安装完毕即可,此时就可以得到一台centos7的虚拟机
配置网络
设置完外部的,我们刚安装完毕的虚拟机的网卡还未打开,所以先去打开下centos7的网卡,顺带设置下静态ip
1.确认网卡未开启指令
ip addr
2.打开网卡,指令
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
service network restart
ip addr
网卡正常运行
在centos中安装zk环境
1.用xshell进行连接
连接的时候会要求输入登陆的用户名密码,输入即可
2.下一下会用到的工具,指令如下
yum -y install wget
3.因为zk是用java写的,所以自然要安装jdk,使用工具进行下载,这里下个jdk8好了,用yum下载的jdk是openjdk,直接去官网上下oracle jdk,去官网把链接地址搞到手
指令
wget [链接地址]
eg: wget https://download.oracle.com/otn/java/jdk/8u291-b10/d7fc238d0cbf4b0dac67be84580cfb4b/jdk-8u291-linux-x64.tar.gz?AuthParam=1620211469_2164c717b023fc51412a63aa7144f920
然后解压
tar -xf jdk-8u291-linux-x64.tar.gz?AuthParam=1620211469_2164c717b023fc51412a63aa7144f920
配置环境变量
vi /etc/profile
在文件底部加入并保存退出
export JAVA_HOME=/root/jdk1.8.0_291
export PATH=$PATH:$JAVA_HOME/bin
载入配置查看是否成功
source /etc/profile
java -version
4.下载zk并解压
wget https://apache.mirrors.tworzy.net/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
tar -xf apache-zookeeper-3.7.0-bin.tar.gz
配置环境变量
vi /etc/profile
在文件底部加入并保存退出
export ZOOKEEPER_HOME=/root/jdk1.8.0_291
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin
载入配置
source /etc/profile
配置ZK
进入zk的conf目录,复制zoo_sample.cfg配置文件,命名为zoo.cfg,之后启动默认会使用这个配置文件,自行修改配置文件,说一下简单的配置
cp zoo_sample.cfg zoo.conf
以下内容均为配置文件中的内容
需要配置dataDir来存放server id,默认在tmp路径下,不太好
dataDir=/var/zookeeper
集群需要在配置文件后面加上server来告知其他的服务器在哪,通过哪些端口进行通讯和选举
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
server.4=node4:2888:3888
至此保存并退出配置文件
然后注意到写入server的时候用的主机名,所以还得设置下对应的主机名,指令
vi /etc/hosts
加入自己的主机名对应的ip
192.168.1.200 node1
192.168.1.201 node2
192.168.1.202 node3
192.168.1.203 node4
最后到对应的dataDir目录下加入myid文件,告知zk自己是第几台server
mkdir -p /var/zookeeper
echo 1 > /var/zookeeper/myid
到这边单台的ZK已经创建完毕了,可以启动试一下
zkServer.sh start
ps -ef | grep zook
复制虚拟机
关闭当前开启的虚拟机后,可以对虚拟机进行一个复制
重复上述步骤复制n个虚拟机,然后修改对应的zk的myid和静态ip地址,其他都不用改,关闭所有server的防火墙,然后就能启动zk集群开始使用了
关闭防火墙 systemctl stop firewalld
启动 zkServer.sh start
客户端登陆 zkCli.sh