使用docker 搭建rabbitmq 集群

3,549 阅读3分钟

前言

之前几篇文章简要的介绍了一下rabbitmq的使用场景和特性,但是对rabbitmq的集群和网络分区这块没有提及到。本文主要介绍一下rabbitmq 集群的搭建过程,包括相应的命令使用,关于rabbitmq的网络分区,后面再总结。

本篇文章要点:

  • docker 使用简单介绍
  • 使用docker 搭建rabbitmq 集群

docker 使用简单介绍:

  • 问:什么是docker?
  • 答: docker 是容器化技术的一种实现,它是一个轻量级、便携式、与外界隔离的容器,也是一个可以在容器中很方便地构建、传输、运行应用的引擎。和传统的虚拟化技术不同的是,Docker 引擎并不虚拟出一台虚拟机,而是直接使用宿主机的内核和硬件,直接在宿主机上运行容器内应用。

  • docker 主要用来解决什么问题?

    docker 主要通过将程序和运行环境打包到一起,解决部署的环境依赖问题,真正做到跨平台的分发与使用。

  • docker 常用概念介绍:
    docker 容器: docker 容器从形态上看是运行在虚拟机上的一个进程,该进程加入了资源的隔离和限制。

    docker 镜像:相比容器而言,docker镜像是一个相对静态的概念,可以看做是容器对应的文件系统。

    容器和镜像时可以相互转换的:

docker 镜像仓库:存储docker 镜像的地方,可以与maven的仓库做类比。

  • docker 的常见操作:
    docker info : 查看docker 运行状态以及版本相关信息的概念,是整个docker daemon 守护进程运行状况的缩影,包括容器个数,镜像个数,daemon 版本,使用的存储驱动等信息。 docker pull :从docker 镜像仓库拉取镜像
    docker push: 提交镜像到镜像仓库 (和git的操作命令很类似)
    docker ps :查看容器(运行的docker进程)
    docker run :运行docker 镜像
    docker start/stop: 启停docker 容器 docker build :构建Docker镜像 docker tag:给镜像打标签 docker exec :在docker 容器类执行命令

    关于每个命令的相关参数和选项有很多的资料对这块做介绍,这里就不啰嗦了。

    当然针对docker 还有很多知识,比如dockerfile 的相关指令,docker 网络类型,存储驱动类型,docker compose ,docker swarm 等等偏运维的知识点特别多,后续在对docker 的实践总结中再细说。

    docker 搭建rabbitmq 集群:

    • docker 安装运行rabbitmq;
    • 加入rabbitmq节点到集群

docker 安装运行rabbitmq:

docker run -d --hostname rabbit1 --name myrabbit1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq

docker run -d --hostname rabbit2 --name myrabbit2 -p 5673:5672 --link myrabbit1:rabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq

docker run -d --hostname rabbit3 --name myrabbit3 -p 5674:5672 --link myrabbit1:rabbit1 --link myrabbit2:rabbit2 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq

注意:RABBITMQ_ERLANG_COOKIE 集群中不同节点的erlang cookie值要相同

加入rabbitmq 到集群:

 设置节点1:
 docker exec -it myrabbit1 bash rabbitmqctl stop_app 
 rabbitmqctl reset
 rabbitmqctl start_app
 
 设置节点2:
 docker exec -it myrabbit2 bash 
 rabbitmqctl stop_app 
 rabbitmqctl reset 
 rabbitmqctl join_cluster --ram rabbit@rabbit1 
 rabbitmqctl start_app
 
 设置节点3:
 docker exec -it myrabbit2 bash 
 rabbitmqctl stop_app 
 rabbitmqctl reset 
 rabbitmqctl join_cluster --ram rabbit@rabbit1 
 rabbitmqctl start_app

设置好之后,使用http://物理机ip:15672 进行访问了,默认账号密码是guest/guest 启动了3个节点,1个磁盘节点和2个内存节点。

##总结 本文只是简单的介绍了一下通过docker搭建一个简单的集群的相关步骤和命令。关于rabbitmq网络分区的相关机制,后续文章再进一步介绍。