前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过流水线部署2节点RabbitMQ镜像集群(Ubuntu)

通过流水线部署2节点RabbitMQ镜像集群(Ubuntu)

原创
作者头像
airxiechao
发布2022-04-27 17:04:28
2430
发布2022-04-27 17:04:28
举报

RabbitMQ最基本的集群的通过 rabbitmqctl join_cluster 命令组建的,但是这种集群只会同步配置信息,不会同步队列里面的消息。要实现同步队列消息,需要在这个基础上,再设置 ha-mode 的 Policy,就可以了。

这里需要注意,因为RabbitMQ集群节点之间的通信是基于节点名的,所以在安装前,节点需要做以下准备工作:

  1. 每个节点设置好主机名,比如:node1、node2
  2. 每个节点设置好主机名的DNS解析

机器准备

两台腾讯云Ubuntu主机,10.0.16.12、10.0.16.16。

节点内网中,全部端口可相互访问。

节点的主机名设置为 node1、node2。

节点名可以通过DNS解析。

手动安装

【步骤1】在RabbitMQ官网,复制安装脚本,保存到文件 install-rabbitmq-cloudsmith.sh

代码语言:javascript
复制
#!/usr/bin/sh

sudo apt-get install curl gnupg apt-transport-https -y

## Team RabbitMQ's main signing key
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null
## Cloudsmith: modern Erlang repository
curl -1sLf https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/gpg.E495BB49CC4BBE5B.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/io.cloudsmith.rabbitmq.E495BB49CC4BBE5B.gpg > /dev/null
## Cloudsmith: RabbitMQ repository
curl -1sLf https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/gpg.9F4587F226208342.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/io.cloudsmith.rabbitmq.9F4587F226208342.gpg > /dev/null

## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases
##
deb [signed-by=/usr/share/keyrings/io.cloudsmith.rabbitmq.E495BB49CC4BBE5B.gpg] https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/deb/ubuntu bionic main
deb-src [signed-by=/usr/share/keyrings/io.cloudsmith.rabbitmq.E495BB49CC4BBE5B.gpg] https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/deb/ubuntu bionic main

## Provides RabbitMQ
##
deb [signed-by=/usr/share/keyrings/io.cloudsmith.rabbitmq.9F4587F226208342.gpg] https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/deb/ubuntu bionic main
deb-src [signed-by=/usr/share/keyrings/io.cloudsmith.rabbitmq.9F4587F226208342.gpg] https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/deb/ubuntu bionic main
EOF

## Update package indices
sudo apt-get update -y

## Install Erlang packages
sudo apt-get install -y erlang-base \
                        erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
                        erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
                        erlang-runtime-tools erlang-snmp erlang-ssl \
                        erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl

## Install rabbitmq-server and its dependencies
sudo apt-get install rabbitmq-server -y --fix-missing

【步骤2】在节点1,安装、配置RabbitMQ

代码语言:javascript
复制
sudo chmod +x install-rabbitmq-cloudsmith.sh
./install-rabbitmq-cloudsmith.sh

# 设置管理员用户和密码
sudo rabbitmqctl add_user admin 123456
sudo rabbitmqctl set_user_tags admin administrator
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

# 设置镜像策略
sudo rabbitmqctl set_policy ha-all '' '{"ha-mode":"all"}'

# 开启管理页面
sudo rabbitmq-plugins enable rabbitmq_management

【步骤3】在节点2,安装、配置RabbitMQ

代码语言:javascript
复制
sudo chmod +x install-rabbitmq-cloudsmith.sh
./install-rabbitmq-cloudsmith.sh

# 设置管理员用户和密码
sudo rabbitmqctl add_user admin 123456
sudo rabbitmqctl set_user_tags admin administrator
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

# 开启管理页面
sudo rabbitmq-plugins enable rabbitmq_management

【步骤4】将节点1的 /var/lib/rabbitmq/.erlang.cookie 拷贝到节点2的 /var/lib/rabbitmq/.erlang.cookie。这样节点2才能和节点1通信。

【步骤5】节点2加入节点1的集群

代码语言:javascript
复制
sudo systemctl restart rabbitmq-server

sudo rabbitmqctl stop_app
sudo rabbitmqctl join_cluster rabbit@node1
sudo rabbitmqctl start_app

查看集群状态

代码语言:javascript
复制
> sudo rabbitmqctl cluster_status
Cluster status of node rabbit@node2 ...
Basics

Cluster name: rabbit@localhost.localdomain

Disk Nodes

rabbit@node1
rabbit@node2

Running Nodes

rabbit@node1
rabbit@node2

Versions

rabbit@node1: RabbitMQ 3.9.15 on Erlang 24.3.3
rabbit@node2: RabbitMQ 3.9.15 on Erlang 24.3.3

Maintenance status

Node: rabbit@node1, status: not under maintenance
Node: rabbit@node2, status: not under maintenance

Alarms

(none)

Network Partitions

(none)

Listeners

Node: rabbit@node1, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit@node1, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Node: rabbit@node1, interface: [::], port: 15672, protocol: http, purpose: HTTP API
Node: rabbit@node2, interface: [::], port: 15672, protocol: http, purpose: HTTP API
Node: rabbit@node2, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit@node2, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0

Feature flags

Flag: drop_unroutable_metric, state: disabled
Flag: empty_basic_get_metric, state: disabled
Flag: implicit_default_bindings, state: enabled
Flag: maintenance_mode_status, state: enabled
Flag: quorum_queue, state: enabled
Flag: stream_queue, state: enabled
Flag: user_limits, state: enabled
Flag: virtual_host_metadata, state: enabled

这样RabbitMQ镜像集群就安装好了!

流水线安装

通过 Y20持续部署系统,把以上步骤编排为流水线 部署RabbitMQ镜像集群,可以实现自动部署。

下面演示一下,更多细节请登录 y20.work

视频内容

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 机器准备
  • 手动安装
  • 流水线安装
相关产品与服务
持续部署
CODING 持续部署(CODING Continuous Deployment,CODING-CD)用以管理软件在经过构建之后的发布和部署交付过程,可以无缝对接上游 Git 仓库、制品仓库实现全自动化部署,同时支持 Webhook 等外部对接能力,方便集成各种开发、运维工具。在配以合适的技术架构、运维工具的基础上,可以方便地实现蓝绿发布、灰度发布(金丝雀发布)、滚动发布、快速回滚等功能。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档