搭建自己的服务器环境之安装zookeeper

3. 安装zookeeper

3.1 使用docker

https://hub.docker.com/_/zookeeper

后续内容需要使用到docker以及docker-compose, 需要先行安装,如果还未安装,可以搜索其它文章或者查看该安装系列docker安装

创建临时镜像,拷贝配置文件,以备后用

# 先拉取镜像
docker pull zookeeper:3.6.2
# 创建本地挂载目录
mkdir -p /opt/zookeeper/conf & mkdir -p /opt/zookeeper/data & mkdir -p /opt/zookeeper/datalog
# 随便启动一下,只是为了将配置文件拷贝出来
docker run -d --name zookeeper zookeeper:3.6.2
# 拷贝文件
docker cp zookeeper:/conf/zoo.cfg /opt/zookeeper/conf
# 停止并删除临时启动的容器
docker stop zookeeper
docker rm zookeeper
 
3.1.1 单机
docker run -d --name zookeeper -v /opt/zookeeper/conf:/conf -v /opt/zookeeper/data:/data -v /opt/zookeeper/datalog:/datalog -p 2181:2181 zookeeper:3.6.2
3.1.2 集群

使用docker-compose的方式,请先安装docker-compose

# 创建三个zk实例,以及各自实例的数据目录和配置文件
mkdir -p /opt/zookeeper/data/1 /opt/zookeeper/data/2 /opt/zookeeper/data/3
mkdir -p /opt/zookeeper/datalog/1 /opt/zookeeper/datalog/2 /opt/zookeeper/datalog/3
touch /opt/zookeeper/data/1/myid && echo 1 >> /opt/zookeeper/data/1/myid
touch /opt/zookeeper/data/2/myid && echo 2 >> /opt/zookeeper/data/2/myid
touch /opt/zookeeper/data/3/myid && echo 3 >> /opt/zookeeper/data/3/myid

如果还未创建网络,请先创建桥接网络,已创建,则忽略

docker network create --driver=bridge --subnet=172.20.12.0/16 mynet

编写docker-compose, vim docker-compose.yml

version: "3"
services:
  zookeeper1:
    image: zookeeper
    restart: always
    hostname: zookeeper1
    container_name: zookeeper1
    ports:
      - "2181:2181"
    volumes:
      - /etc/localtime:/etc/localtime
      - /opt/zookeeper/data/1:/data
      - /opt/zookeeper/datalog/1:/datalog
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=zookeeper1:2888:3888;2181 server.2=zookeeper2:2888:3888;2181 server.3=zookeeper3:2888:3888;2181
    networks:
      default:
        ipv4_address: 172.20.0.10
  zookeeper2:
    image: zookeeper
    restart: always
    hostname: zookeeper2
    container_name: zookeeper2
    ports:
      - "2182:2181"
    volumes:
      - /etc/localtime:/etc/localtime
      - /opt/zookeeper/data/2:/data
      - /opt/zookeeper/datalog/2:/datalog
    environment:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=zookeeper1:2888:3888;2181 server.2=zookeeper2:2888:3888;2181 server.3=zookeeper3:2888:3888;2181
    networks:
      default:
        ipv4_address: 172.20.0.11
  zookeeper3:
    image: zookeeper
    restart: always
    hostname: zookeeper3
    container_name: zookeeper3
    ports:
      - "2183:2181"
    volumes:
      - /etc/localtime:/etc/localtime
      - /opt/zookeeper/data/3:/data
      - /opt/zookeeper/datalog/3:/datalog
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=zookeeper1:2888:3888;2181 server.2=zookeeper2:2888:3888;2181 server.3=zookeeper3:2888:3888;2181
    networks:
      default:
        ipv4_address: 172.20.0.12
networks:
  default:
    external:
      name: mynet

运行docker-compose

# 先启动看下日志,是否有报错,注意,由于启动时间间隔不大,几个实例刚启动时的通讯可能会报错,可以先忽略,查看后续日志
docker-compose up
# 后台运行
docker-compose up -d

查看集群状态

root@zookeeper1:/apache-zookeeper-3.6.2-bin/bin# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
root@zookeeper1:/apache-zookeeper-3.6.2-bin/bin# cd ..
root@zookeeper1:/apache-zookeeper-3.6.2-bin# ls
LICENSE.txt  NOTICE.txt  README.md  README_packaging.md  bin  conf  docs  lib
root@zookeeper1:/apache-zookeeper-3.6.2-bin# exit
exit
[root@ddf-develop zookeeper]# docker exec -it zookeeper2 /bin/bash
root@zookeeper2:/apache-zookeeper-3.6.2-bin# ls
LICENSE.txt  NOTICE.txt  README.md  README_packaging.md  bin  conf  docs  lib
root@zookeeper2:/apache-zookeeper-3.6.2-bin# cd bin
root@zookeeper2:/apache-zookeeper-3.6.2-bin/bin# ls
README.txt  zkCleanup.sh  zkCli.cmd  zkCli.sh  zkEnv.cmd  zkEnv.sh  zkServer-initialize.sh  zkServer.cmd  zkServer.sh  zkSnapShotToolkit.cmd  zkSnapShotToolkit.sh  zkTxnLogToolkit.cmd  zkTxnLogToolkit.sh
root@zookeeper2:/apache-zookeeper-3.6.2-bin/bin# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
root@zookeeper2:/apache-zookeeper-3.6.2-bin/bin# exit
exit
[root@ddf-develop zookeeper]# docker exec -it zookeeper3 /bin/bash
root@zookeeper3:/apache-zookeeper-3.6.2-bin# cd bin
root@zookeeper3:/apache-zookeeper-3.6.2-bin/bin# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值