跳转至

zookeeper部署

1 安装jdk

1.1 yum安装

# 查找可用jdk安装
[root@zookeeper ~]# yum search jdk
# 安装指定版本jdk
[root@zookeeper ~]# yum install  java-1.8.0-openjdk-devel java-1.8.0-openjdk

2 下载zookeeper

  • 官方下载地址
  • 下载bin.tar.gz结尾的安装包,如apache-zookeeper-3.7.1-bin.tar.gz

3 单机安装zookeeper

  1. 解压安装包
  2. 重命名(可选)
  3. 修改配置
    1. 修改dataDirclientPort配置
  4. 启动服务端:进入安装目录下的bin目录,执行sh zkServer.sh start
  5. 查看状态:进入安装目录下的bin目录,执行sh zkServer.sh status
  6. 客户端连接:sh zkCli.sh -server 127.0.0.1:port,如果port改变了,需要指定端口,默认连接的时2181端口
[root@zookeeper ~]# tar -xzf apache-zookeeper-3.7.1-bin.tar.gz &&\
mv apache-zookeeper-3.7.1-bin zookeeper-3.7.1 &&\
cd zookeeper-3.7.1/conf/ &&\
cp zoo_sample.cfg zoo.cfg &&\
vi zoo.cfg

4 集群安装zookeeper

  1. 配置zoo.cfg文件,添加上集群中服务ip、port
  2. 在data目录下新建myid文件,并写入对应的id,即zoo.cfg中配置的server.1、server.2中的数值1、2
  3. 启动集群中每一个zookeeper服务
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/root/zookeeper-3.7.1-1/data
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true
extendedTypesEnabled=true
server.1=192.168.211.6:2287:3387
server.2=192.168.211.7:2288:3388
server.3=192.168.211.8:2289:3389
## 进入打他目录,编辑myid文件
### 在server.1上
[root@zookeeper data]# echo 1 > myid
### 在server.2上
[root@zookeeper data]# echo 2 > myid
### 在server.3上
[root@zookeeper data]# echo 3 > myid

5 zookeeper集群启停脚本

5.1 伪集群脚本

  • 启动:sh zk.sh start
  • 停止:sh zk.sh stop
  • 查状态:sh zk.sh status
#!/bin/bash
#filename=zk.sh
ZKPATH=/root/zookeeper-3.7.1
option_num=$#
option=$1
options=("start" "stop" "status")
check()
{
    local exist_flag=0
    if [ ${option_num} -ne 1 ]
    then
        help
    fi
    for op in ${options[*]}
    do
        if [ "$option" != "$op" ]
        then
            exist_flag=0
            continue
        else
            exist_flag=1
            break
        fi
    done
    if [ $exist_flag -eq 0 ]
    then
        help
    fi
}
help()
{
    echo "---------------------------------------------------------------"
    echo "输入语法错误"
    echo "启动zookeeper集群:    sh ${0} start"
    echo "停止zookeeper集群:    sh ${0} stop"
    echo "查看zookeeper集群状态:sh ${0} status"
    echo "---------------------------------------------------------------"
    exit 1
}
main()
{
    for((i=1;i<=3;i++))
    do
        echo "------------------zookeeper-${i} $option-----------------------"
        cd "${ZKPATH}-${i}/bin" && sh zkServer.sh $option
    done
}
check
main