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运行 | 可用于生产环境 |
docker pull zookeeper
docker run --name some-zookeeper --restart always -d zookeeper 复制代码
docker run --name some-app --link some-zookeeper:zookeeper -d application-that-uses-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 复制代码
docker logs -f some-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_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 复制代码
使用客户端工具连接到服务端
首先以交互的方式进入容器 docker exec -it 41fcadf97863 /bin/bash 使用客户端连接到服务端, IP为宿主机地址 ./bin/zkCli.sh -server 192.168.31.178:2181 复制代码
检查服务器状态
# 首先以交互的方式进入容器 docker exec -it 41fcadf97863 /bin/bash 使用服务端工具检查服务器状态 ./bin/zkServer.sh status 复制代码
这个垃圾软件有个大bug,第一次连接如果失败,后边就算成功他也提示失败 IP为宿主机IP