Ubuntu安装RabbitMQ及部署集群

由于为了学习RabbitMQ的使用,我在我服务器上安装了RabbitMQ.
目前服务器配置如下:

{
    vCPU: 2核,
    RAM : 3GB,
    ROM : 50G,
    Disk Nodes: 192.168.2.25,
    RAM Nodes: [192.168.2.26,192.168.2.28],
    haproxy: {
        vCPU: 1,
        RAM : 1GB,
        ROM : 30GB,
        IP  : 192.168.2.27
    }
}
  • 更多的节点添加方式是一样的,这里就不再添加更多的了.
  • 部署方案按照这个图来,Kafka那边暂时不用管.(图片参考自互联网)
安装RabbitMQ
  • 要使用RabbitMQ首先肯定需要先在服务器上安装.
系统版本 代号
Ubuntu 23.04 jammy
Ubuntu 22.04 jammy
Ubuntu 20.04 focal
Ubuntu 18.04 bionic
Debian Bookworm bullseye
Debian Bullseye bullseye
Debian Sid bullseye
  • 从官网上我们可以查询到安装脚本的代码.这里可以使用我创建的一键安装脚本快速安装.
curl -s https://raw.githubusercontent.com/joesdu/rabbitmq-server-install-bash/main/install.sh | sudo bash
  • 安装完成后,再执行相关命令启动,以及其他常用命令
# 启动 rabbitmq 服务
sudo service rabbitmq-server start
# 关闭 rabbitmq 服务
sudo service rabbitmq-server stop
# 重启 rabbitmq 服务
sudo service rabbitmq-server restart
# 查看 rabbitmq 状态
sudo service rabbitmq-server status
  • 另一台服务器也使用该命令安装RabbitMQ.
  • 注意,启动RabbitMQ之后要启动管理服务插件,否则15672管理页面无法登录
# 启用 rabbitmq_manager
sudo rabbitmq-plugins enable rabbitmq_management
  • 由于guest用户默认只能在localhost登录,所以我们需要创建一个新的用户.
##设置账号密码
joe@rabbitmq-01:~$ sudo rabbitmqctl add_user admin 123456
Adding user "admin" ...
joe@rabbitmq-01:~$ sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
Setting permissions for user "admin" in vhost "/" ...
joe@rabbitmq-01:~$ sudo rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator] ...
  • 到这里我们安装就完成了,并且可以通过15672端口访问到管理页面,并使用admin账户进行登录.

添加集群
  • RabbitMQ集群之间通信确认是否可以通信,使用的是cookie,所以需要保证所有节点的cookie文件中的值一样.
  • 由于我们没有开通Ubuntu系统的root账户,所以我们先通过scp命令将25节点的cookie文件发送到用户目录.
sudo scp /var/lib/rabbitmq/.erlang.cookie joe@192.168.2.26:/home/joe/
sudo scp /var/lib/rabbitmq/.erlang.cookie joe@192.168.2.28:/home/joe/
  • 发送成功后,登入到26,28服务器将该cookie文件覆盖到原安装的默认cookie文件
sudo mv ./.erlang.cookie /var/lib/rabbitmq/.erlang.cookie
  • 完成后可以通过cat命令查看两个cookie是否一致.
  • 注意,由于我们是由joe账户操作的文件,所以文件所有者发生了变化.导致RabbitMQ无法读取.所以这里还得改一下文件的所有者.
sudo chown rabbitmq /var/lib/rabbitmq/.erlang.cookie
  • 然后配置各个节点的hosts文件.使其对应内容一致.
sudo nano /etc/hosts
# 根据自己的实际情况,加入如下信息
192.168.2.25 rabbitmq-01
192.168.2.26 rabbitmq-02
192.168.2.28 rabbitmq-03
  • 调整好后逐个节点执行
sudo rabbitmq-server -detached
  • 停止26,28节点的RabbitMQ服务.
# 停止服务
sudo rabbitmqctl stop_app
# 重置服务
sudo rabbitmqctl reset
# 加入时候设置节点为内存节点(默认加入的为磁盘节点)
sudo rabbitmqctl join_cluster rabbit@rabbitmq-01 --ram
#也通过下面方式修改的节点的类型,使用该命令前需要先停止当前节点.
sudo rabbitmqctl change_cluster_node_type disc | ram
  • 搞好了后,即可通过管理页面查看

安装haproxy
  • 首先我们根据官方地址来查看自己所属版本的命令,这里我是用的Ubuntu 20.04,所以执行如下命令,来安装haproxy
sudo apt-get install --no-install-recommends software-properties-common
sudo add-apt-repository ppa:vbernat/haproxy-2.5
sudo apt-get install haproxy=2.5.\*
  • 等待数秒安装成功后,即可使用命令验证是否安装成功
sudo haproxy -v
  • 若是能够输出相应的信息表示安装成功.
HAProxy version 2.5.5-1ppa1~focal 2022/03/14 - https://haproxy.org/
Status: stable branch - will stop receiving fixes around Q1 2023.
Known bugs: http://www.haproxy.org/bugs/bugs-2.5.5.html
Running on: Linux 5.4.0-107-generic #121-Ubuntu SMP Thu Mar 24 16:04:27 UTC 2022 x86_64
  • 接下来编辑haproxy配置信息
sudo nano /etc/haproxy/haproxy.cfg
  • 在配置文件中加入如下信息
#绑定配置
listen rabbitmq_cluster
        bind 0.0.0.0:5672
        #配置TCP模式
        mode tcp
        #加权轮询
        balance roundrobin
        #RabbitMQ集群节点配置,其中ip1~ip(n)为RabbitMQ集群节点ip地址
        server rabbitmq-02 192.168.2.25:5672 check inter 5000 rise 2 fall 3 weight 1
        server rabbitmq-02 192.168.2.26:5672 check inter 5000 rise 2 fall 3 weight 1
        server rabbitmq-03 192.168.2.28:5672 check inter 5000 rise 2 fall 3 weight 1

#haproxy监控页面地址
listen monitor
        bind 0.0.0.0:8100
        mode http
        option httplog
        stats enable
        stats uri /status
        stats refresh 5s
  • 最终该文件看起来是如下样子
global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

        # Default SSL material locations
        ca-base /etc/ssl/certs
        crt-base /etc/ssl/private

        # See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediate
        ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
        ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
        ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http

#绑定配置
listen rabbitmq_cluster
        bind 0.0.0.0:5672
        #配置TCP模式
        mode tcp
        #加权轮询
        balance roundrobin
        #RabbitMQ集群节点配置,其中ip1~ip(n)为RabbitMQ集群节点ip地址
        server rabbitmq-02 192.168.2.25:5672 check inter 5000 rise 2 fall 3 weight 1
        server rabbitmq-02 192.168.2.26:5672 check inter 5000 rise 2 fall 3 weight 1
        server rabbitmq-03 192.168.2.28:5672 check inter 5000 rise 2 fall 3 weight 1

#haproxy监控页面地址
listen monitor
        bind 0.0.0.0:8100
        mode http
        option httplog
        stats enable
        stats uri /status
        stats refresh 5s
        # 添加验证
        stats auth admin:123456
  • 接下来启动haproxy服务,以及常用命令
# 启动服务
sudo systemctl start haproxy
# 查看状态
sudo systemctl status haproxy
# 重启服务
sudo systemctl restart haproxy
# 停止服务
sudo systemctl stop haproxy
  • 通过查看服务状态确认无异常后,即可将haproxy服务加入开机自启
sudo systemctl enable haproxy
  • 在一切都完成后,我们就可以登录配置的页面查看状态, http://192.168.2.27:8100/stats 由于我们配置了登录验证,输入刚才配置的账号密码(admin:123456)就可以进入页面了
  • 使用haproxy做负载均衡后,为了高可用还可以再对haproxy进行集群,做一个主备,使用keepalived来进行监控做热切换,这里我们就不再深入做集群了,单节点负载均衡暂时用着.以后挂了再说.😁😁😁😁

调整镜像模式
  • 为了高可用服务,将服务设置为镜像模式.
  • 参数说明
rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority]
-p Vhost: 可选参数,针对指定vhost下的queue进行设置
Name: policy的名称
Pattern: queue的匹配模式(正则表达式)
Definition:镜像定义,包括三个部分ha-mode, ha-params, ha-sync-mode
        ha-mode:指明镜像队列的模式,有效值为 all/exactly/nodes
            all:表示在集群中所有的节点上进行镜像
            exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定
            nodes:表示在指定的节点上进行镜像,节点名称通过ha-params指定
        ha-params:作为参数,为ha-mode的补充
        ha-sync-mode:进行队列中消息的同步方式,有效值为automatic和manual
priority:可选参数,policy的优先级
  • 使用命令的方式
sudo rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}' --apply-to all
  • 或者使用web管理页面添加.
  • 首先登入web管理界面,点击Admin,然后选择 Policies 按照如图显示配置.
开启延时队列
  • 使用延时队列需要先去下载延时队列的插件
  • 下载完成后上传到服务器,我这里默认上传到root文件夹.
  • 使用如下命令查看Ubuntu系统插件目录
sudo rabbitmq-plugins directories -s
  • 会输出大概如下内容
Plugin archives directory: /usr/lib/rabbitmq/plugins:/usr/lib/rabbitmq/lib/rabbitmq_server-3.10.8/plugins
Plugin expansion directory: /var/lib/rabbitmq/mnesia/rabbit@mysql-plugins-expand
Enabled plugins file: /etc/rabbitmq/enabled_plugins
  • 可以看出来我们的插件目录就是/usr/lib/rabbitmq/lib/rabbitmq_server-3.10.8/plugins其中版本号可能会有所变化,依据实际情况
  • 然后我们复制下载好的插件到该目录
sudo cp /root/rabbitmq_delayed_message_exchange*.ez /usr/lib/rabbitmq/lib/rabbitmq_server-3.10.8/plugins
  • 完成后使用如下命令开启插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
  • 之后我们就可以使用x-delayed-message交换机了.
posted @ 2022-04-13 07:07  Joe_du  阅读(622)  评论(3编辑  收藏  举报