环境
[
root
@rabbitmq06
sbin
]
net
.
ipv6
.
conf
.
all
.
disable_ipv6
=
1
net
.
ipv6
.
conf
.
default
.
disable_ipv6
=
1
net
.
ipv4
.
ip_local_port_range
=
10000
65000
net
.
ipv4
.
tcp_keepalive_time
=
300
net
.
ipv4
.
tcp_keepalive_intvl
=
30
net
.
ipv4
.
tcp_keepalive_probes
=
9
net
.
ipv4
.
tcp_fin_timeout
=
3
net
.
ipv4
.
tcp_syn_retries
=
1
net
.
ipv4
.
tcp_synack_retries
=
1
net
.
ipv4
.
tcp_retries2
=
5
net
.
ipv4
.
tcp_orphan_retries
=
3
net
.
ipv4
.
tcp_tw_reuse
=
1
net
.
ipv4
.
tcp_max_tw_buckets
=
36000
cat
/
etc
/
security
/
limits
.
d
/
20
-
nproc
.
conf
root soft nproc unlimited
修改三个主机的hostname
hostnamectl
set
-
hostname rabbitmq1
hostnamectl
set
-
hostname rabbitmq2
hostnamectl
set
-
hostname rabbitmq3
修改hosts文件
RabbitMQ版本 和 Erlang 版本兼容性关系
官方安装包下载地址
安装C++依赖环境
yum install build
-
essential openssl openssl
-
devel unixODBC unixODBC
-
devel make gcc gcc
-
c
+
+
kernel
-
devel m4 ncurses
-
devel tk tc xz
安装erl相关包
rpm
-
ivh erlang
-
25.3
.2
.3
-
1.
el7
.
x86_64
.
rpm
rpm
-
ivh socat
-
1.7
.3
.2
-
2.
el7
.
x86_64
.
rpm
Erlang
/
OTP
25
[
erts
-
13.2
.2
.2
]
[
source
]
[
64
-
bit
]
[
smp:
16
:
16
]
[
ds:
16
:
16
:
10
]
[
async
-
threads:
1
]
安装rabbitmq
tar
-
xvf rabbitmq
-
server
-
generic
-
unix
-
3.11
.20
.
tar
.
xz
-
C
/
opt
/
rabbitmq
export PATH
=
/
opt
/
rabbitmq
/
sbin:$PATH
开启管理界面
rabbitmq
-
plugins
enable
rabbitmq_management
启动主节点的rabbitmq服务
rabbitmq
-
server
-
detached
拷贝.erlang.cookie
将rabbitmq01的/root/.erlang.cookie拷贝到rabbitmq02和rabbitmq03的/root目录下。
cookie文件权限必须是400,不然启动时会报错
将其他两个节点加入rabbitmq集群
rabbitmq02和rabbitmq03执行如下:
rabbitmqctl join_cluster rabbit
@rabbitmq1
-
RabbitMQ只要求在集群中至少有一个磁盘节点,所有其他节点可以是内存节点。
-
若是保证集群信息的高可靠性,建议全部使用磁盘节点。
-
若是需要提高集群的高可用性,可以保证至少两个磁盘节点和至少一个内存节点。
rabbitmqctl cluster_status
可以看到一个disk node和两个ram node
创建用户(集群主节点执行)
rabbitmqctl set_permissions
[
-
p
<
vhostpath
>
]
<
user
>
<
conf
>
<
write
>
<
read
>
上面命令意思是用户名admin具有
/
vhost1这个virtual host中所有的配置,写读权限
rabbitmqctl delete_user guest
rabbitmqctl change_password {username} {newpassword}
rabbitmqctl list_user_permissions aa
rabbitmqctl list_permissions
-
p vhost(
/
sleuth)
rabbitmqctl clear_permissions
[
-
p VHostPath
]
User
登录管理界面
镜像队列模式集群
通过前面的步骤搭建的集群属于普通模式集群,是通过共享元数据实现集群。
开启镜像队列模式需要在管理页面添加策略,添加方式有两种:
rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}'
控制台queue tab页面添加一个测试用的queue , install-test-queue
进入管理页面 -> Admin -> Policies(在页面右侧)-> Add / update a policy 在表单中填入:
name: 策略名称,如果使用已有的名称,保存后将会修改原来的信息
Pattern:策略应用到对象时,对象名称的匹配规则(正则表达式)
Priority:优先级,数值越大,优先级越高,相同优先级取最后一个
Definition:策略定义的内容,对于镜像队列的配置来说,只需要包含3个部分: ha-mode 、ha-params 和 ha-sync-mode。其中,ha-sync-mode是同步的方式,自动还是手动,默认是自动。ha-mode 和 ha-params 组合使用。组合方式如下:
镜像队列模式相比较普通模式,镜像模式会占用更多的带宽来进行同步,所以镜像队列的吞吐量会低于普通模式。但普通模式不能实现高可用,某个节点挂了后,这个节点上的消息将无法被消费,需要等待节点启动后才能被消费。
将rabbitmq设置为开机启动
cat
/
usr
/
lib
/
systemd
/
system
/
rabbitmq
-
server
.
service
Description
=
RabbitMQ broker
After
=
syslog
.
target network
.
target
WorkingDirectory
=
/
opt
/
rabbitmq_server
-
3.11
.20
/
ExecStart
=
/
opt
/
rabbitmq_server
-
3.11
.20
/
sbin
/
rabbitmq
-
server
ExecStop
=
/
opt
/
rabbitmq_server
-
3.11
.20
/
sbin
/
rabbitmqctl stop
WantedBy
=
multi
-
user
.
target
systemctl
start
rabbitmq
-
server
systemctl enablerabbitmq
-
server
启停mq
虚拟主机的操作
rabbitmqctl add_vhost
/
cloudmall
rabbitmqctl list_permissions
-
p
/
cloudmall
rabbitmqctl delete_vhost
/
cloudmall
操作队列命令
rabbitmqctl
-
p vhostpath purge_queue blue
rabbitmq常用管理命令
rabbitmqctl set_vm_memory_high_watermark 0.8
rabbitmqctl eval 'supervisor2:terminate_child(rabbit_mgmt_sup_sup, rabbit_mgmt_sup),rabbit_mgmt_sup_sup:start_child().'
rabbitmq日志路经
:/opt/rabbitmq_server-3.11.15/var/log/rabbitmq
rabbitmqctl status
查看节点状态
rabbitmqctl stop [pid_file]
停止运行的RabbitMQ的Erlang虚拟机和RabbitMQ服务应用 如果指定了pid_file,还需要等待指定进程的结束。pid_file是通过调用rabbitmq-server命令启动RabbitMQ服务时创建的,默认情况下存放于Mnesia目录中。 如果使用rabbitmq-server -detach这个带有-detach后缀的命令来启动RabbitMQ服务则不会生成pid_file文件。
rabbitmqctl stop_app
停止RabbitMQ服务应用,但是Erlang虚拟机还是处于运行状态 此命令的执行优先于其他管理操作(这些操作需要先停止RabbitMQ应用,如rabbitmqctl reset)
rabbitmqctl start_app
启动RabbitMQ应用,此命令典型的用途就是执行了其他管理操作之后,重新启动之前停止的RabbitMQ应用。
rabbitmqctl reset
将RabbitMQ节点重置还原到最初状态 包括从原来的集群中删除此节点,从管理
数据库
中删除所有的配置数据,如已配置的用户,vhost等,以及删除所有的持久化数据 执行rabbitmqctl reset 命令前必须停止RabbitMQ应用
rabbitmqctl force_reset
强制将RabbitMQ节点重置还原到最初状态。此命令不论当前管理数据库的状态和集群配置是什么,都会无条件的重置节点,只能在数据库或集群配置已损坏的情况下使用
rabbitmqctl [-n nodename] join_cluster {cluster_node} [—ram]
将节点加入指定的集群中。在这个命令执行前需要停止RabbitMQ应用并重置节点。 -n nodename:指定需要操作的目标节点,如rabbit@node1 cluster_node:需要加入的集群节点名,如rabbit@node2 —ram:集群节点类型,有ram,disc两种,默认为disc
rabbitmqctl cluster_status
查看集群状态
rabbitmqctl change_cluster_node_type {disc|ram}
修改集群节点的类型,使用此命令前要停止RabbitMQ应用
rabbitmqctl forget_cluster_node [—offline]
将节点从集群中删除,允许离线执行
rabbitmqctl update_cluster_nodes {clusternode}
在集群中的节点应用启动前咨询clusternode节点的最新信息,并更新相应的集群信息。这个和join_cluster不同,它不加入集群
rabbitmqctl force_boot
确保节点可以启动,即使它不是最后一个关闭的节点
rabbitmqctl set_cluster_name {name}
设置集群名称。集群名称在客户端连接时会通报给客户端 集群名称默认是集群中第一个节点的名称,通过这个命令可以重新设置
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28916011/viewspace-3007179/
,如需转载,请注明出处,否则将追究法律责任。