Skip to main content

2 posts tagged with "zookeeper"

View All Tags

· 3 min read
jeesk

安装前置条件

  • 3台安装JDK 8 的虚拟机,假设地址分别是192.168.17.81,192.168.17.82,192.168.17.83

zookeeper 发行版页面, 有许多版本的发行版的下载链接,可以根据不同的版本,下载不同的链接 https://zookeeper.apache.org/releases.html

  1. $\color{#FF0000}{修改 hosts }$
vim /etc/hosts
加入一下内容
192.168.17.81 zk01
192.168.17.82 zk02
192.168.17.83 zk03

后面我将使用zk01 代替192.168.17.81 2. $\color{#FF0000}{在zk01机器上面下载zookeeper}$

mkdir -p /opt/soft/ && cd  /opt/soft
wget https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
如果机器没有安装wget, 那么执行下面命令安装
yum -y install wget
  1. $\color{#FF0000}{分发zoookeeper软件 到另外两台机器}$
1. 首先在另外两台机器创建目录
mkdir -p /opt/soft/ && cd /opt/soft
2. 在zk01 的/opt/soft 的目录下执行
scp apache-zookeeper-3.6.2-bin.tar.gz root@zk02:/opt/soft/
scp apache-zookeeper-3.6.2-bin.tar.gz root@zk03:/opt/soft/
  1. $\color{#FF0000}{解压文件}$
    1. 在3台的机器的/opt/soft/ 文件夹执行解压命令 tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz
    2. 在3台的机器的/opt/soft/ 继续执行软连接 ln -s /opt/soft/apache-zookeeper-3.6.2-bin zookeeper
    3. 创建需要的数据文件夹,和日志文件夹, 在后面的配置文件使用需要 cd zookeeper && mkdir {data,log}
  2. $\color{#FF0000}{增加配置文件}$ 在zk01上 的/opt/soft/zookeeper-3.5.2-alpha/conf增加 zoo.cfg文件,文件内容如下
      initLimit=10
    syncLimit=5
    clientPort=2181
    tickTime=2000
    dataDir=/opt/soft/apache-zookeeper-3.6.2-bin/data/
    dataLogDir=/opt/apache-zookeeper-3.6.2-bin/logs/
    dynamicConfigFile=/opt/soft/apache-zookeeper-3.6.2-bin/conf/zoo.cfg.dynamic.100000000
  • 在/opt/soft/zookeeper-3.5.2-alpha/conf 增加配置zoo.cfg.dynamic.100000000 文件, 这个文件是说明zk 的集群机器的ip地址,文件内容如下
server.1=zk01:2888:3888:participant
server.2=zk02:2888:3888:participant
server.3=zk03:2888:3888:participant
  • 将这个两个文件分发到zk02,zk03,在zk01 的/opt/soft/zookeeper-3.5.2-alpha/conf/ 执行命令
scp zoo.cfg root@zk02:/opt/soft/zookeeper-3.5.2-alpha/conf/
scp zoo.cfg root@zk02:/opt/soft/zookeeper-3.5.2-alpha/conf/
scp zoo.cfg.dynamic.100000000 root@zk03:/opt/soft/zookeeper-3.5.2-alpha/conf/
scp zoo.cfg.dynamic.100000000 root@zk03:/opt/soft/zookeeper-3.5.2-alpha/conf/
  1. $\color{#FF0000}{增加每一台机器的标识 }$ 在3台机器上面的 /opt/soft/zookeeper-3.5.2-alpha/conf/data 执行命令 zk01 执行 echo 1 > myid zk02 执行 echo 2 > myid zk03 执行 echo 3 > myid

  2. $\color{#FF0000}{常用命令 }$

在3 台机器的 /opt/soft/zookeeper-3.5.2-alpha/bin/ 执行

  • 启动命令 ./zkServer.sh start
  • 查看启动状态 ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/soft/zookeeper-3.5.2-alpha/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
------------------- 192.168.17.82 -------------------
ZooKeeper JMX enabled by default
Using config: /opt/soft/zookeeper-3.5.2-alpha/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader
------------------- 192.168.17.83 -------------------
ZooKeeper JMX enabled by default
Using config: /opt/soft/zookeeper-3.5.2-alpha/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: followe
  • 关闭命令: ./zkServer.sh status
  1. $\color{#FF0000}{常见问题:}$
  • 确保3台机器的防火墙端口2181 已经放开, 如果是本地环境建议直接service fillwalld stop 关闭防火墙
  • 3台机器分别执行太麻烦, 参考 zookeeper 集群脚本

    完结撒花, 路过点赞, 月入10 W!

· 2 min read
jeesk

为了方便管理zookeeper 集群, 我们写了一个zookeeper 脚本

  1. 在bin/zkEnv.sh文件中,zk 增加JAVA_HOME .(有些时候无法找到JAVA_HOME,所以先增加JAVA_HOME)
    ZOOBINDIR="${ZOOBINDIR:-/usr/bin}"
    ZOOKEEPER_PREFIX="${ZOOBINDIR}/.."
    #在上面的2段文字下面增加 JAVA_HOME, 下面的路径是你的 jdk HOME目录
    export JAVA_HOME=/opt/soft/jdk1.8.0_161
2.  3 台机器免密登录, 分别为zk01,zk02,zk03

zk01 执行

ssh-copy-id root@zk02 ssh-copy-id root@zk03

 

zk02 执行

ssh-copy-id root@zk01 ssh-copy-id root@zk03


zk03 执行

ssh-copy-id root@zk01 ssh-copy-id root@zk02

这个时候, 你可以使用 在任意一台机器上面执行免密登录
3. 在2台机器下面的 bin 目录下面增加 zkCluster.sh

#!/bin/bash

red='\e[91m' green='\e[92m' yellow='\e[93m' magenta='\e[95m' cyan='\e[96m' none='\e[0m'

zk_home=$zk_home cluster_array=(192.168.17.81 192.168.17.82 192.168.17.83)

1. 获取输入参数个数,如果没有参数,直接退出

if (($# == 0)); then echo -e ------------------- ${yellow}no args${none} ------------------- exit fi

2. 根据指令循环操作集群

case $1 in "start") { for host in ${cluster_array[@]}; do echo -e ------------------- $yellow$host$none ------------------- ssh $host "$zk_home/bin/zkServer.sh start" done } ;;

"stop") { for host in ${cluster_array[@]}; do echo -e ------------------- $yellow$host$none ------------------- ssh $host "$zk_home/bin/zkServer.sh stop" done } ;;

"status") { for host in ${cluster_array[@]}; do echo -e ------------------- $yellow$host$none ------------------- ssh $host "$zk_home/bin/zkServer.sh status" done } ;;

esac

上面的 cluster_array 就是你的3台机器ip ,也可以使用别名代替
这个时候, 你可以在任意一台机器的zk bin目录下面执行
- 群启动: ./zkCluster.sh start
- 群关闭: ./zkCluster.sh stop
- 群查看状态: ./zkCluster.sh status
如果脚本没有执行权限, 增加执行权限 `chmod u+x zkCluster.sh` 即可.

> 完结撒花, 路过点赞, 月入10W !