生产环境zookeeper集群部署

zookeeper简介:

 

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

 

ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

 

ZooKeeper包含一个简单的原语集,提供Java和C的接口。

 

ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在$zookeeper_home\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本
ZooKeeper的基本运转流程:
1、选举Leader。
2、同步数据。
3、选举Leader过程中算法有很多,但要达到的选举标准是一致的。
4、Leader要具有最高的执行ID,类似root权限。
5、集群中大多数的机器得到响应并接受选出的Leader。

 

一、安装zookeeper前需要安装软件依赖:jdk1.8(先部署jdk)

1、安装前的清理工作

rpm -qa | grep jdk

rpm -qa | grep gcj
yum -y remove java-xxx-xxx
2、在线下载JDK
cd /usr/local/src
[root@k8s-master src]# wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm
查看当前文件夹下是否有JDK安装包:

[root@k8s-master src]# ls
jdk-8u131-linux-x64.rpm

添加执行权限:

命令:chmod +x jdk-8u131-linux-x64.rpm

执行rpm进行安装

命令:rpm -ivh jdk-8u131-linux-x64.rpm

查看JDK是否安装成功

命令:java -version

查看JDK的安装路径,(一般默认的路径:/usr/java/jdk1.8.0_131)

配置JDK环境变量

 
vim /etc/profile #在最后面加入以下内容
export JAVA_HOME=/usr/java/jdk1.8.0_131
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
让profile立即生效:
source /etc/profile
二、部署zookeeper 集群 
1.下载apache-zookeeper-3.5.5-bin.tar.gz二进制包:
wget http://apache.01link.hk/zookeeper/zookeeper-3.5.5/apache-zookeeper-3.5.5-bin.tar.gz
2、解压apache-zookeeper-3.5.5-bin.tar.gz:
tar -zxf  apache-zookeeper-3.5.5-bin.tar.gz  -C /usr/local/src
3、将apache-zookeeper-3.5.5-bin改名为zookeeper:
cd /usr/local/src  &&   mv apache-zookeeper-3.5.5-bin zookeeper
4、拷贝相关配置文件:
cd zookeeper/conf    && cp zoo_sample.cfg  zoo.cfg
注意:检查系统防火墙是否开启;如果开启建议将防火墙关闭;
5、修改zoo.cfg 配置文件相关内容

在vim /usr/local/src/zookeeper/zoo.cfg  

          dataDir=/usr/local/src/zookeeper/dtata #用于配置内存数据库保存的模糊快照的目录

          dataLogDir=/usr/local/src/zookeeper/log #日志文件存放路径

          server.A=B:C:D   #中的A是一个数字,表示这个是第几号服务器,B是这个服务器的IP地址,C第一个端口用来集群成员的信息交换,表示这个服务器与集群中的leader服务器交换信息的端口,D是在leader挂掉时专门用来进行选举leader所用的端口

          server.1=172.16.8.235:801:802

          server.2=172.16.8.236:801:802

          server.3=172.16.8.237:801:802

6、配置环境变量:

vim /etc/profile

     #设置软连接的路径

    ${ZOOKEEPER_HOME}/bin #用于在任何文件目录都可以启动

    ${ZOOKEEPER_HOME}/conf #用于稍后配置的自启动

    export ZOOKEEPER_HOME=/usr/local/src/zookeeper

    PATH=$PATH:${ZOOKEEPER_HOME}/bin:${ZOOKEEPER_HOME}/conf

   保存退出后:source /etc/profile命令使修改生效

7、配置myid文件:

先创建data和logs文件夹 :mkdir -p /usr/local/src/zookeeper/{data,logs}

     创建myid文件:echo "1" > /usr/local/src/zookeeper/data/myid #在zoo.cfg文件中配置的dataDir路径中创建myid文件,使用下面的命令,将数字“1”写入myid文件,这个文件里面有一个数据就是A的值(该A就是zoo.cfg文件中server.A=B:C:D中的A)

8、配置从服务器:

复制主服务器的zookeeper到从服务器 :scp -r /usr/local/src/apache-zookeeper-3.5.5-bin root@ip地址:/usr/local/src

     创建软链接:ln -s zookeeper-apache-zookeeper-3.5.5-bin zookeeper

     配置myid文件:先mkdir -p /usr/local/src/zookeeper/{data,logs} 在:echo "2" > /usr/local/src/zookeeper/data/myid

复制主服务器的zookeeper到从服务器 :scp -r /usr/local/src/apache-zookeeper-3.5.5-bin root@ip地址:/usr/local/src

     创建软链接:ln -s zookeeper-apache-zookeeper-3.5.5-bin zookeeper

     配置myid文件:先mkdir -p /usr/local/src/zookeeper/{data,logs} 在:echo "3 > /usr/local/src/zookeeper/data/myid

9、启动每一个服务器上的zookeeper节点:

cd zookeeper 执行 bin/zkServer.sh start

     启动后查看每个节点的状态 :/usr/local/src/zookeeper/bin/zkServer.sh status

10、zookeeper集群测试:

       /usr/local/src/zookeeper/bin/zkCli.sh -server  从服务器IP地址 

11、添加服务启动脚本:vim /etc/init.d/zookeeper (每个几点上面都要操作)

#!/bin/bash
export JAVA_HOME=/usr/java/jdk1.8.0_131
zoo=/usr/local/src/zookeeper/bin/zkServer.sh
case "$1" in
start)
$zoo start /usr/local/src/zookeeper/conf/zoo.cfg
;;
stop)
$zoo stop /usr/local/src/zookeeper/conf/zoo.cfg
;;
status)
$zoo status /usr/local/src/zookeeper/conf/zoo.cfg
;;
restart)
$zoo restart /usr/local/src/zookeeper/conf/zoo.cfg
;;
esac

12、给zookeeper启动脚本文件添加执行权限:

       chmod +x /etc/init.d/zookeeper

13、部署zkweb(这里使用的docker部署zkweb)

创建dockeryum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum -y install docker-ce

docker启动
systemctl enable docker && systemctl start docker

zkweb页面docker安装

docker run -d -p8099:8099 --name zkweb peterpoker/zkweb:v1.2.1

 

 

 

posted @ 2020-06-17 01:48  小毅哥博客  阅读(592)  评论(0编辑  收藏  举报