centos7环境下zookeeper的安装与运行
在linux环境下的下载地址: http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.5.2-alpha/zookeeper3.5.2
alpha.tar.gz
首先得知道zookeeper是个java项目,想要安装并运行是需要jdk环境的,在安装之前首先的配置好java环境,这里我用的是jdk1.8 (具体jdk安装这里就不多说了,hava环境若有问题在启动zookeeper时会报错)
在系统目录 /usr 中建立文件夹 apps/ (将zookeeper安装在自定义的目录便于管理)
1.将下载好的zookeeper压缩包解压到目录 /usr/apps
tar -zxvf zookeeper-3.5.2-alpha.tar.gz -C /usr/apps/
2.解压完成后,进入解压的目录中:
/usr/apps/zookeeper-3.5.2-alpha
进入zookeeper目录中的conf/
(由于这是运行后的文件目录,刚解压时没有这么多文件),
进来后通过命令: cp zoo_sample.cfg zoo.cfg (拷贝一份 zoo_sample.cfg 文件并且重命名为zoo.cfg)
用文本编辑器打开zoo.cfg文件:
(假设当前是三台服务器作为节点进行搭建zookeeper集群,且三台服务器的ip地址分别是:192.168.0.210、192.168.0.211、192.168.0.212)
进入zoo.cfg 文件编辑环境后在文件的末尾对集群的服务器节点进行添加,添加下面内容:
#配置集群服务器
server.1=192.168.0.210:2888:3888
server.2=192.168.0.211:2888:3888
server.3=192.168.0.212:2888:3888
vi编辑器界面:
3.接下来就是到 /root目录下创建 zkdata/ 文件夹(配置文件zoo.cfg中的dataDir对应的目录)
/root/zkdata
进入zkdata目录创建 myid文件并写入数据:(假设该台服务器是server.1)
[[email protected] hadoop]#echo 1 >myid
这样就完成zookeeper的安装配置了,
注意:以上是配置完第一台主机的配置过程,接下来 的两台服务器只需要把配好的文件(即: /usr 下面的 apps/ 这个文件夹)直接整个文件夹拷贝过去放到每台主机 /usr 目录中就行了,唯一不同的就是在 /root/zkdata 目录中的myid文件里边的序号是写和自己服务器相对应的序号就行。
4.运行
进入zookeeper主目录执行:bin/zkServer.sh start
出现下面信息说明启动成功:
5.查看节点工作状态:
在zookeeper主目录下执行:(若果节点为启动改命令会报错,不过如果节点成功启动了而三台服务器的防火墙未关闭也会导致查询失败,还有就是zookeeper的工作特点就是需要半数以上节点存活是才会工作,少于半数节点时也会查看失败)
6.测试关闭节点:
当leader节点被杀死时,zookee内部会根据策略从follower节点中重新选出一个节点作为leader节点。
到这里zookeeper就安装完了!
7.进入zookeeper客户端命令:
[[email protected] zookeeper-3.5.2-alpha]# bin/zkCli.sh
出现这个就表示连接成功了,当前连接的是本机(localhost)的节点,若需要连接其他台服务器的节点如下:
[zk: localhost:2181(CONNECTED) 42]connect 192.168.0.210:2181
看到一下内容:
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: 192.168.0.210:2181(CONNECTED) 43]
8.集群自动启动脚本:
shell中变量作用域:
export num=1 export定义的变量会在自己所在的shell进程及其子进程生效
B=1 直接定义的变量只对自己所在的shell进程有效
如在 s1.sh 脚本中定义的变量,在当前登录的shell进程中 通过命令: source s1.sh ,脚本中定义的变量也会在当前登录的进程生效
在一台服务器上使用ssh启动另一台服务器上的zookeeper服务:启动192.168.0.212 (需要输密码)
ssh 192.168.0.212 "source /etc.profile;/usr/apps/zookeeper-3.5.2-alpha/bin/zkServer.sh start"
若需要的一台服务器上同时启动三台服务器的zookeeper,可以在 /root/bin 目录(全局作用域)中创建一个脚本例如: startzk.sh
内容:
#! /bin/sh
echo "start zookeeper ....."
for i in 0 1 2
do
ssh 192.168.0.21$i "source /etc.profile;/usr/apps/zookeeper-3.5.2-alpha/bin/zkServer.sh start"
done
echo "zookeeper started"
#启动192.168.0.210、192.168.0.211、192.168.0.212三台服务器上的zookeeper
8.实现SSH免密登录
当然要实现上面方式从一台服务器同时启动另外两太服务器的zookeeper服务,则首先需要实现对另外两条服务器的免密登录:
(实现192.168.0.210免密登录 192.168.0.211和192.168.0.212)
在192.168.0.210主机上执行下面命令:
[[email protected] ~]# ssh-******
[[email protected] ~]# ssh-copy-id 192.168.0.211
[[email protected] ~]# ssh-copy-id 192.168.0.212
第一行命令是生成210主机的秘钥对(一直点回车就行),第二条命令是将公钥复制一份给211主机、第三条命令是将公钥复制一份给212主机