Docker 安装zookeeper 集群&dubbo 环境隔离

本文探讨了在Spring+SpringMVC+Zookeeper+Dubbo框架下,面对多个项目同时开发与灰度升级带来的挑战,提出了通过代码分支隔离、Docker镜像管理和Zookeeper分组注册等策略,实现开发与生产环境的有效隔离,确保版本稳定升级。

一、由来

1、工作中框架是spring+springMVC+zookeeper+dubbox

2、目前有正在运行的项目,正在使用;另外需要加新功能和新项目。

3、同一时间有多个项目在开发

3、当前只有一个代码master 库在支撑

4、每次灰度升级都会带来大大小小的一些问题,影响线上用户使用

5、如何解决?

二、问题分析

1、多个项目同时在跑、却只有一个代码库;大家都往上面push 代码,每次升级都把所有代码升级上去。并且有些代码是没有开发完成的,也没有通过测试。这是非常危险的

2、希望每次升级都只升级开发完成的代码,并且是通过测试的。

3、开发服务器只有一台,有两个基础服务与一个业务服务,及多个消费应用,需要尽可能充分利用这台服务器

4、后台写好代码后发布到开发服务器运行以供,前端开发人员对接接口

5、每个版本都以一个消费应用划分,即:一个总业务服务,一个消费应用

三、问题解决思路

1、每个项目与版本代码通过分支隔离。仅仅只能开发完成时拿到master 中去

2、当开发完成后合并到master 中去,然后发布到测试环境,让测试人员测试,测试通过后再发布到生产环境

2、使用docker,管理zookeeper将基础服务注册到zookeeper 中,并且将业务服务按分组的方式注册到zookeeper中,可以使用单机版,也可以集群

3、业务服务与开发的版本打包成docker 镜像,代码是分支的代码,按版本划分。多个项目同时开发的过程中,因为业务服务是重叠部分。将接口重复注册到zookeeper 中肯定有问题,消费的时候或者调用不到我想要的服务。所以需要通过 dubbo.registery.group隔离

4、将业务服务给定一个group 名称,并且应用在发现服务的时候也是通过group 去发现的。所以可以将不同的项目,隔离出来。

另外也有考虑过使用,注册中心隔离,但考虑到有公用部分(两个基础服务),所以“注册中心隔离”是不合适的。

四、zookeeper 安装与集群

1、安装

#拉取zookeeper 容器
docker pull zookeeper

#创建docker-compose.yml 文件
version: '2'
services:
    zoo1:
        image: zookeeper
        restart: always
        container_name: zoo1
        ports:
            - "2181:2181"
        environment:
            ZOO_MY_ID: 1
            ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888

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

    zoo3:
        image: zookeeper
        restart: always
        container_name: zoo3
        ports:
            - "2183:2181"
        environment:
            ZOO_MY_ID: 3
            ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888

2、运行

#将路径切换到 docker-compose.yml 文件夹下,执行
COMPOSE_PROJECT_NAME=zk_test docker-compose up -d

考虑教程:https://segmentfault.com/a/1190000006907443?utm_source=tag-newest

五、创建版本镜像

 

 

 

 

 

### 如何在本地安装 ZooKeeper 并配合 Dubbo 使用 #### 1. 安装 ZooKeeper 为了使 Dubbo 能够正常工作,需要先安装并配置 ZooKeeper。以下是具体的步骤: - **拉取 ZooKeeper 镜像** 如果使用 Docker 来部署 ZooKeeper,则可以直接从官方仓库中拉取镜像: ```bash docker pull zookeeper ``` - **编写配置文件** 在安装之前,建议提前准备好 ZooKeeper 的配置文件 `zoo.cfg` 或其他自定义配置[^3]。 - **启动单点 ZooKeeper** 启动一个简单的单节点 ZooKeeper 实例,命令如下: ```bash docker run --name my-zookeeper -p 2181:2181 -d zookeeper ``` 此处 `-p 2181:2181` 表示将主机的 2181 端口映射到容器内的默认端口[^1]。 - **验证 ZooKeeper 是否成功运行** 可以通过以下方式确认 ZooKeeper 已经启动并监听指定端口: ```bash telnet localhost 2181 echo stat | nc localhost 2181 ``` #### 2. 配置 Dubbo 注册中心 完成 ZooKeeper安装后,需将其地址配置到 Dubbo 应用程序中。通常情况下,在项目的 `application.yml` 文件中添加以下内容即可[^4]: ```yaml dubbo: application: name: dubbo-provider protocol: name: dubbo port: -1 registry: address: zookeeper://127.0.0.1:2181 server: port: 8080 ``` 上述配置指定了 Dubbo注册中心为本地运行的 ZooKeeper 实例,并绑定至 `127.0.0.1:2181` 地址。 #### 3. 测试连接与功能验证 - **进入容器内部操作** 若要进一步调试或查看 ZooKeeper 数据状态,可进入正在运行的容器: ```bash docker exec -it my-zookeeper /bin/bash zkCli.sh ``` - **创建和读取节点** 利用 ZooKeeper 命令行工具执行基本的操作,例如创建路径 `/test` 和获取其值: ```bash create /test "hello" get /test ``` #### 4. 结合 Dubbo Admin 进行监控 Dubbo Admin 是一款可视化管理工具,可以帮助开发者更方便地观察服务的状态。按照以下流程进行安装和配置: - 下载源码并编译生成 JAR 包; - 修改资源目录下的 `application.properties` 文件,确保指向正确的 ZooKeeper 地址; - 启动应用程序并通过浏览器访问 `http://localhost:7001/` 登录界面。 --- ### 注意事项 - 默认情况下,ZooKeeper 的客户端通信端口为 2181,而非某些文档提到的 2081,请务必核对实际使用的端口号。 - 若计划扩展为多节点集群模式,则需要额外调整配置参数以及网络环境设置[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值