转载

2. Dubbo入门——注册中心zookeeper的安装与使用

2. Dubbo入门——注册中心zookeeper的安装与使用
hub.docker.com/_/zookeeper

1. dubbo支持的注册中心成熟度

Feature Maturity Strength Problem Advise User
Zookeeper注册中心 Stable 支持基于网络的集群方式,有广泛周边开源产品,建议使用dubbo-2.3.3以上版本(推荐使用) 依赖于Zookeeper的稳定性 可用于生产环境
Redis注册中心 Stable 支持基于客户端双写的集群方式,性能高 要求服务器时间同步,用于检查心跳过期脏数据 可用于生产环境
Multicast注册中心 Tested 去中心化,不需要安装注册中心 依赖于网络拓扑和路由,跨机房有风险 小规模应用或开发测试环境
Simple注册中心 Tested Dogfooding,注册中心本身也是一个标准的RPC服务 没有集群支持,可能单点故障 试用
Simple监控中心 Stable 支持JFreeChart统计报表 没有集群支持,可能单点故障,但故障后不影响RPC运行 可用于生产环境

2. docker安装zookeeper

docker pull zookeeper

3. zookeeper的使用

单点zookeeper

docker run --name some-zookeeper --restart always -d zookeeper
复制代码

从其他的容器链接zoo

docker run --name some-app --link some-zookeeper:zookeeper -d application-that-uses-zookeeper
复制代码

使用zookeeper命令行连接

docker run -it --rm --link some-zookeeper:zookeeper zookeeper zkCli.sh -server zookeeper
复制代码

如果出现无法访问的问题

Docker 在起一个容器时,会为其创建一个默认网络-containerName_defaul,所以使用--link方式互联容器时由于默认不在一个网络中,会报上述错误,解决办法即添加--net XX_default,使新的container与link目标在同一个网络中

docker run -it --rm --net zk_test_default --link zk_test_zoo1_1:zookeeper zookeeper zkCli.sh -server zookeeper
复制代码

查看zk运行情况(日志前台输出)

docker logs -f some-zookeeper
复制代码

zookeeper集群

新建一个zookeeper.yml

version: '3.1'

services:
  zoo1:
    image: zookeeper
    restart: always
    hostname: zoo1
    ports:
      - 2181:2181
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181

  zoo2:
    image: zookeeper
    restart: always
    hostname: zoo2
    ports:
      - 2182:2181
    environment:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zoo3:2888:3888;2181

  zoo3:
    image: zookeeper
    restart: always
    hostname: zoo3
    ports:
      - 2183:2181
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181
复制代码

可以使用本地配置文件修改容器中的配置

首先把容器中的/conf/zoo.cfg复制到本地

docker cp 容器ID:/conf/zoo.cfg zoo.cfg
复制代码

修改后映射容器中的配置

docker run --name some-zookeeper --restart always -d -v $(pwd)/zoo.cfg:/conf/zoo.cfg zookeeper
复制代码

如果容器中没有zoo.cfg,可以重写环境变量

docker run -e "ZOO_INIT_LIMIT=10" --name some-zookeeper --restart always -d 容器ID/zookeeper
复制代码

配置日志

docker run --name some-zookeeper --restart always -e ZOO_LOG4J_PROP="INFO,ROLLINGFILE" zookeeper
复制代码

compose使用流程

启动容器,执行compose文件,在当前目录

# 为避免与其他项目混淆,所有compose前都加了环境变量COMPOSE_PROJECT_NAME=zk_test
COMPOSE_PROJECT_NAME=zk_test docker-compose up -d
复制代码

查看容器状态

COMPOSE_PROJECT_NAME=zk_test docker-compose ps
复制代码

查看容器日志

COMPOSE_PROJECT_NAME=zk_test docker-compose logs zoo1
复制代码
2. Dubbo入门——注册中心zookeeper的安装与使用

使用客户端工具连接到服务端

首先以交互的方式进入容器
docker exec -it 41fcadf97863 /bin/bash
使用客户端连接到服务端, IP为宿主机地址
./bin/zkCli.sh -server 192.168.31.178:2181
复制代码
2. Dubbo入门——注册中心zookeeper的安装与使用

检查服务器状态

# 首先以交互的方式进入容器
docker exec -it 41fcadf97863 /bin/bash
使用服务端工具检查服务器状态
./bin/zkServer.sh status
复制代码

4. 查看zookeeper,使用 ZooInspector 客户端

这个垃圾软件有个大bug,第一次连接如果失败,后边就算成功他也提示失败 IP为宿主机IP

2. Dubbo入门——注册中心zookeeper的安装与使用
2. Dubbo入门——注册中心zookeeper的安装与使用
原文  https://juejin.im/post/5e6caa25f265da573d61bdde
正文到此结束
Loading...