运维技术-中间件-消息队列-RabbitMQ01

简介

Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件,是一个纯Java程序!

部署

集群

基于SMB、NFS 类的共享存储,对持久话文件的锁定作为Master。

 

 

安装RabbitMQ

https://rabbitmq.com/install-rpm.html

本次安装操作系统:CentOS7.9 

安装方式: yum安装

其他系统或版本请参考官方:https://rabbitmq.com/install-rpm.html 配置yum源

配置yum源

# 单机安装RabbitMQ 可以直接通过yum安装
# 这里一定确认自己需要安装的RabbitMQ版本
# 以下是本次安装配置的yum源
# vi /etc/yum.repos.d/rabbitmq.repo

[rabbitmq_erlang]
name=rabbitmq_erlang
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch
repo_gpgcheck=1
gpgcheck=1
enabled=1
# PackageCloud's repository key and RabbitMQ package signing key
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
       https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[rabbitmq_erlang-source]
name=rabbitmq_erlang-source
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

##
## RabbitMQ server
##

[rabbitmq_server]
name=rabbitmq_server
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/$basearch
repo_gpgcheck=1
gpgcheck=1
enabled=1
# PackageCloud's repository key and RabbitMQ package signing key
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
       https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[rabbitmq_server-source]
name=rabbitmq_server-source
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

 安装RabbitMQ 

# 如果yum源安装正确,RabbitMQ安装将会非常方便
# RabbitMQ 依赖socat、logrotate、erlang
# 以下命令会自动安装
 yum install erlang rabbitmq-server -y  

# 单机启动
  service rabbitmq-server start

 

集群配置

hosts配置

# RabbitMQ集群需要配置/etc/hosts满足节点直接相互访问
# /etc/hosts 配置如下(最后一列有时可以不要)
192.168.1.101  RabbitMQ01       rabbit@RabbitMQ01
192.168.1.102  RabbitMQ02       rabbit@RabbitMQ02
192.168.1.103  RabbitMQ03       rabbit@RabbitMQ03

 

同步erlang.cookie文件

# 拷贝RabbitMQ01的 /var/lib/rabbitmq/.erlang.cookie 到RabbitMQ02RabbitMQ03节点
# 注:.erlang.cookie文件的权限应为400,属主rabbitmq
scp /var/lib/rabbitmq/.erlang.cookie 192.168.1.102:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie 192.168.1.103:/var/lib/rabbitmq/

 停止服务

# 停止3个节点的服务
# 注:这里不要用service rabbitmq-server stop
rabbitmqctl stop

 启动并加入集群

# 所有节点以detached方式启动
# 启动集群也使用此命令
rabbitmq-server -detached # 分别在RabbitMQ02RabbitMQ03执行如下命令加入集群 # 注: 确保/etc/hosts 已经配置
rabbitmqctl stop_app rabbitmqctl join_cluster --ram rabbit@rabbitmq01 rabbitmqctl start_app # 如果需要移除节点,需要在另外两个节点操作如下 rabbitmqctl forget_cluster_node rabbit@rabbitmq01

 修改集群名称

# 修改集群名称(默认是第一个节点node名称)
rabbitmqctl set_cluster_name rabbitmq_cluster01
  • 返回: Setting cluster name to rabbitmq_cluster01 ...

 

查看集群状态

# 查看集群状态
rabbitmqctl cluster_status    
  • 返回如下:
Cluster status of node rabbit@RabbitMQ01 ...
Basics

Cluster name: RabbitMQ_cluster01

Disk Nodes

rabbit@RabbitMQ01

RAM Nodes

rabbit@RabbitMQ02
rabbit@RabbitMQ03

Running Nodes

rabbit@RabbitMQ01
rabbit@RabbitMQ02
rabbit@RabbitMQ03

Versions

rabbit@RabbitMQ01: RabbitMQ 3.8.19 on Erlang 23.3.4.4
rabbit@RabbitMQ02: RabbitMQ 3.8.19 on Erlang 23.3.4.4
rabbit@RabbitMQ03: RabbitMQ 3.8.19 on Erlang 23.3.4.4

Maintenance status

Node: rabbit@RabbitMQ01, status: not under maintenance
Node: rabbit@RabbitMQ02, status: not under maintenance
Node: rabbit@RabbitMQ03, status: not under maintenance

Alarms

(none)

Network Partitions

(none)

Listeners

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

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: user_limits, state: enabled
Flag: virtual_host_metadata, state: enabled

 

 


配置RabbitMQ WEB管理界面

  • 在linux上运行,输入 /usr/sbin/rabbitmq-plugins enable rabbitmq_management 启动可视化插件;
  • 默认guest用户(密码guest)只能本机(localhost或127.0.0.1)访问,所以需要配置添加一个其他的用户名,对该用户进行授权,才可以用web 访问;
  • 在web浏览器中,输入自己的ip地址和端口号访问,如:http://192.168.x.x:15672
  • 可以登录查看rabbitmq里的资源信息
  • 集群部署需要每个节点都启动管理界面服务,用户只需添加一次;

以下:添加admin用户,对admin用户进行登录授权。

#启动管理界面服务
/usr/sbin/rabbitmq-plugins enable rabbitmq_management
#创建用户admin及密码password
rabbitmqctl add_user admin password
#设置管理员角色权限
rabbitmqctl set_user_tags admin administrator
#授权登陆
rabbitmqctl set_permissions -p / admin '.*' '.*' '.*'
#list 所有用户及权限
rabbitmqctl list_permissions

 

 

添加用户并授权后,就可以用ip的形式进行访问了。

 

 

posted @ 2021-06-28 12:02  i学笔记  阅读(107)  评论(0)    收藏  举报