开始

新建一个docker-compose.yml文件。通过编写yml文件来学习如果使用docker compose
image.png
yml文件是非常类似于json文件的,但是它和json又有非常不一样的地方。它不需要大括号,它用的是换行。

version是docker compose 的version ,我们平时用2.0就可以了。它也支撑非常多的特性,
image.png
services代表我们要启动哪几个容器。
image.png
我们要启动3个容器,先把容器的名称写上
image.png
容器内部相当于是一个小虚拟机,它的hostname叫做rabbit1
image.png
端口映射用ports 下面用横线 后面跟着端口映射。
image.png
环境变量,rabbitmq在启动的时候会要读取容器里面的环境变量来配置自己,有用的环境变量就是,
环境变量也是数组,例如下面配置的是默认的用户名和密码。
image.png
搭建集群需要传递 erlang_cookie.在使用docker-compose的时候,还有个窍门就是,给它写一个环境变量 叫做rabbitmq_erlang_cookie 我们可以自己给它设置erlang_cookie,我们把三个容器的erlang_cookie设置成一样的。这样就不需要我们再互相传输erlang_cookie
image.png

第二个容器的配置

写第二个容器,直接复制第一个的就可以
image.png
第二个容器就不需要再开放15672端口了。我们有了rabbit1就可以了。
image.png
因为我们要把多个docker镜像都部署在一个服务器上,所以这里我们端口也要改一下。
image.png
环境变量只保留了erlang_cookie。 因为我们没有开放控制台的端口,所以默认的账号密码也不需要设置了。
image.png

第三个容器

前面是物理机的端口。
image.png

docker网络打通

rabbit2和1要用docker网络打通。3和2也要网络打通。

这样rabbit2加了一个和rabbit1的链接。这样网络就可以打通了。
image.png
3要和1和2打通。
image.png

安装dokcer compose

docker compose是用python写的 所以需要先安装python的依赖。pip是python的包管理器。
image.png
pip安装docker compose
image.png
docker-compose version: 查看docker compose 的版本。
image.png

image.png
直接把刚才写的脚本 粘贴进来。保存这个脚本。
image.png

启动集群

目前还不是集群,只是3个rabbitmq的单节点。-d让他在后台启动。
image.png

image.png

image.png

配置成集群

登陆到3个集群节点里面,将这三个配置成集群。

-it是交互模式。用交互模式启用这个bash应用。bash其实就是我们的命令行。
image.png
这样就进入到这个容器里面了。容器就相当于一个小的虚拟机。
image.png
我们执行下top命令
image.png

image.png
image.png
先停掉这个rabbitMQ
image.png
加入集群,rabbit1为主节点。
image.png
然后在启动这个节点
image.png
启动后,rabbit2就和rabbit1组成集群了。 exit退出这个容器。
image.png

节点3组成集群

image.png
1,先停止
2.加入集群。
3.再启动。
image.png

进入管控台,查看集群

image.png

image.png

总结

缺点:这3台容器都都放在一台服务器上。一个服务器宕机,整个3台服务器就都挂掉了。没有办法实现真正的高可用。

怎样用一个脚本,将rabbitmq的3个节点部署在3台服务器上呢?就需要用到下面要讲的k8s

结束