rabbitmq集群搭建_mongodb集群搭建

rabbitmq集群搭建_mongodb集群搭建docker单容器部署创建桥接网络,用于容器间通信$dockernetworkcreatemq-network首先启动3个rabbitmq容器$dockerrun–namerabbit01\ -eRABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=”-setcookieCOUBJLKLQCIAPKIQZGGJ”\ –hostnamerabbit01–networkmq-network\ -p5672:5672-p1567

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

docker 单容器部署

创建桥接网络,用于容器间通信

$ docker network create mq-network

首先启动 3个 rabbitmq 容器

$ docker run --name rabbit01 \
	-e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-setcookie COUBJLKLQCIAPKIQZGGJ" \
	--hostname rabbit01 --network mq-network \
	-p 5672:5672 -p 15672:15672 \
	-d rabbitmq:3.9-management
# -e ... 通过环境变量指定 cookie,其格式为:"-setcookie <value>" 
$ docker run --hostname  rabbit02 --name rabbit02 \
	-e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-setcookie COUBJLKLQCIAPKIQZGGJ" \
	--network mq-network \
	-p 5673:5672 -p 15673:15672 \
	-d rabbitmq:3.9-management
$ docker run --hostname rabbit03 --name rabbit03 \
	-e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-setcookie COUBJLKLQCIAPKIQZGGJ" \
	--network mq-network \
	-p 5674:5672 -p 15674:15672 \
	-d rabbitmq:3.9-management

然后需要复制一份 .erlang.cookie 文件至容器中

# 假设当前目录中已经有.erlang.cookie 文件,内容为:COUBJLKLQCIAPKIQZGGJ

$ docker cp .erlang.cookie rabbit01:/var/lib/rabbitmq/
$ docker cp .erlang.cookie rabbit02:/var/lib/rabbitmq/
$ docker cp .erlang.cookie rabbit03:/var/lib/rabbitmq/

❗️ 注意:环境变量 RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS .erlang.cookie 文件两处都需要修改,否则会使 rabbitmqctl 工具不可用,无法创建集群。

使用 rabbitmqctl 手动创建集群

# 进入容器终端
$ docker exec -it rabbit02 bash
# 简化写法
$ rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl join_cluster rabbit@rabbit01 && rabbitmqctl start_app

# rabbit03 同理

Docker Swarm 部署

初始化 docker swarm

docker swarm init 

创建 rabbitmq 集群容器间访问的网络

docker network create \
  --driver overlay \
  rabbitmq_network

使用 docker secrets,创建指定的 erlang cookie

# .eralng.cookie 文件自己创建,或者复制一个 rabbitmq 容器内的
$ cat .erlang.cookie | docker secret create my-erlang-cookie -

使用 docker service

$ docker service create --container-label rabbit --replicas 3 \
    --name rabbitmq-cluster \
    -p 5672:5672 -p 15672:15672 \
    --network rabbitmq-network \
# --hostname="rabbit-{ 
   {.Task.ID}}" \
    --secret source=my-erlang-cookie,target=/var/lib/rabbitmq/.erlang.cookie,uid=999,gid=999,mode=0600 \
    rabbitmq:3.9-management

# --hostname 指定 hostname,可以通过占位符指定,否则就是随机字符串
# --network 指定网络 
# 指定 uid,gid,mode 是为了让rabbitmq 可以正确的读取 .eralng.cookie 文件
# uid,gid 分别是rabbitmq 用户id和用户组id,根据mode指定访问文件权限

通过 rabbitmqctl 手动创建集群

# 显示服务名为 rabbitmq-cluster 的 service 中所有容器 
docker service ps rabbitmq-cluster
# 进入容器终端,rabbit1
docker exec -it rabbitmq-cluster.1.rzxlu3oksqchjthknse7mk3b2 bash
# 说明:7bdb16ce5c21 是 rabbit1的主机名(hostname)
# on rabbit2
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@7bdb16ce5c21 --ram
rabbitmqctl start_app

# on rabbit3
同理

简化写法

# 简化写法
rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl join_cluster rabbit@7bdb16ce5c21

image-20220502153636527

因为在docker服务构建过程中,使用了端口映射,可以从docker节点的物理机ip直接进行访问,http://yourip:16572

image-20220502153729116

设置集群策略后,集群中节点将会同步数据 —> 参考

image-20220502154356949

破坏性测试,关闭其中一个 rabbitmq 节点

# on rabbit2
rabbitmqctl stop_app

image-20220502153844782

Exchanges 和 Queues 不会丢失,通过其他 rabbitmq 节点仍然可以完成工作。

? 参考资料

  1. RabbitMQ集群搭建

  2. 集群搭建-官方文档

  3. docker部署rabbitmq集群

  4. Docker Swarm 部署 RabbitMQ 集群—【通过配置文件】

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195067.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • k8s的apiserver_kube_apiserver

    k8s的apiserver_kube_apiserverAPIserverfunc main() { … #核心 command := app.NewAPIServerCommand() #日志 logs.InitLogs() defer logs.FlushLogs() …}#NewAPIServerCommand#核心是调用run函数 运行AIPserver 永远不会退出return Run(completedOptions, genericapiserver.SetupSignalHandler())#Run#创建

    2022年8月9日
    6
  • pycharm怎么切换到vim编辑模式

    pycharm怎么切换到vim编辑模式首先 进行打开一个 pycharm 的编辑的代码的界面当中 进行点击 tools 的菜单 进行点击了 tools 的菜单之后 弹出了下拉菜单选中为 vimemulator 的选项 切换完成之后 的可以鼠标点击会显示了一个黑色块的 需要的 vim 的命令方式来操作的 进行再键盘中按 i 才能输入 可以看到的就输入的信息了 编辑的完成的按 esc 来退出的输入的操作

    2025年7月11日
    2
  • 国内CMS技术发展的外在表现形式「建议收藏」

    国内CMS技术发展的外在表现形式「建议收藏」网站作为企事业单位的网上名片已经成为必需。大多数单位都选择利用成熟的CMS(内容管理系统)交给专业的公司或者本单位负责人(相当于站长)建设自己的网站。国内CMS技术的不断发展的外在表现,以便站长和建站公司选择合适的CMS系统建设更强大的网站。我建站时用过很多CMS系统,各有各的特点。现在之所以选择主要用We7的CMS是觉得在以下方面还是不错的。一产品成熟度。据我了解We7CMS系统

    2022年5月18日
    35
  • java pdf 转 word_PDF怎么转换成Word,免费,完整的那种

    java pdf 转 word_PDF怎么转换成Word,免费,完整的那种简介PDF可以分为文字型PDF和图片型PDF,文字型PDF即可以选中文字内容的PDF,反之图片型PDF即无法选中文字的PDF,其内容实际上是图片。本文针对不同类型,介绍PDF转Word方法,可以说是目前的最优解,没有之一。文字型PDF转Word方法1-直接用Word打开优点简单方便缺点部分样式丢失,排版错位,转换并不完美部分文件会有乱码无法识别图片型PDF里的文字总结适合对样式不敏感,主要关心正文…

    2022年4月30日
    55
  • Python读取h5文件_html python

    Python读取h5文件_html python原文链接:https://blog.csdn.net/leibaojiangjun1/article/details/53635353 h5接受的数据是矩阵跟mat方法一致,但是具有更强的压缩性能使用hdf5依赖于python的工具包:h5pyimporth5py #导入工具包importnumpyasnp#HDF5的写入:imgData=np.zeros((30,3…

    2022年9月8日
    3
  • pycharm快捷键和常规设置[通俗易懂]

    pycharm快捷键和常规设置[通俗易懂]记录下我常用的pycharm快捷键和设置(Windows10)1、更换背景:文件—设置—-外观与行为—外观—背景图像本来是没想到设置背景图像的。脑子一抽换了一个,感觉发现了新大陆。(程序员鼓励师)2、列模式Alt+Shift+鼠标左键可以批量选中并修改3、Ctrl+E打开最近文件。多用于打开了多个文件时快速定位。也可以在tab标签里找,不过tab打开多了就会挤压之前标签,看起来特别费劲。4、Ctrl+B快速定位变量在哪定义的快速定位函数定义代码5、Shift+Enter

    2022年8月27日
    12

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号