开始
新建一个docker-compose.yml文件。通过编写yml文件来学习如果使用docker compose
yml文件是非常类似于json文件的,但是它和json又有非常不一样的地方。它不需要大括号,它用的是换行。
version是docker compose 的version ,我们平时用2.0就可以了。它也支撑非常多的特性,
services代表我们要启动哪几个容器。
我们要启动3个容器,先把容器的名称写上
容器内部相当于是一个小虚拟机,它的hostname叫做rabbit1
端口映射用ports 下面用横线 后面跟着端口映射。
环境变量,rabbitmq在启动的时候会要读取容器里面的环境变量来配置自己,有用的环境变量就是,
环境变量也是数组,例如下面配置的是默认的用户名和密码。
搭建集群需要传递 erlang_cookie.在使用docker-compose的时候,还有个窍门就是,给它写一个环境变量 叫做rabbitmq_erlang_cookie 我们可以自己给它设置erlang_cookie,我们把三个容器的erlang_cookie设置成一样的。这样就不需要我们再互相传输erlang_cookie
第二个容器的配置
写第二个容器,直接复制第一个的就可以
第二个容器就不需要再开放15672端口了。我们有了rabbit1就可以了。
因为我们要把多个docker镜像都部署在一个服务器上,所以这里我们端口也要改一下。
环境变量只保留了erlang_cookie。 因为我们没有开放控制台的端口,所以默认的账号密码也不需要设置了。
第三个容器
docker网络打通
rabbit2和1要用docker网络打通。3和2也要网络打通。
这样rabbit2加了一个和rabbit1的链接。这样网络就可以打通了。
3要和1和2打通。
安装dokcer compose
docker compose是用python写的 所以需要先安装python的依赖。pip是python的包管理器。
pip安装docker compose
docker-compose version: 查看docker compose 的版本。
启动集群
目前还不是集群,只是3个rabbitmq的单节点。-d让他在后台启动。
配置成集群
登陆到3个集群节点里面,将这三个配置成集群。
-it是交互模式。用交互模式启用这个bash应用。bash其实就是我们的命令行。
这样就进入到这个容器里面了。容器就相当于一个小的虚拟机。
我们执行下top命令
先停掉这个rabbitMQ
加入集群,rabbit1为主节点。
然后在启动这个节点
启动后,rabbit2就和rabbit1组成集群了。 exit退出这个容器。
节点3组成集群
进入管控台,查看集群
总结
缺点:这3台容器都都放在一台服务器上。一个服务器宕机,整个3台服务器就都挂掉了。没有办法实现真正的高可用。
怎样用一个脚本,将rabbitmq的3个节点部署在3台服务器上呢?就需要用到下面要讲的k8s