运维技术-中间件-消息队列-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 到RabbitMQ02、RabbitMQ03节点 # 注:.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 # 分别在RabbitMQ02、RabbitMQ03执行如下命令加入集群 # 注: 确保/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的形式进行访问了。