1.设置yum文件,方便yum安装rabbitmq 3.7
安装rabbitmq3.7以上版本,需要erlang的兼容版本在20以上
增加文件:/etc/yum.repos.d/rabbitmq.repo
[bintray-rabbitmq-server]
name=bintray-rabbitmq-rpm
baseurl=https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.7.x/el/7/
gpgcheck=0
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=1
增加文件:/etc/yum.repos.d/rabbitmq_erlang.repo
[rabbitmq_erlang]
name=rabbitmq_erlang
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch
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_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
2.卸载现有erlang现有版本
rpm -qa |grep erlang
yum remove *****
#安装相关依赖
yum -y install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel java-1.7.0-openjdk-devel.x86_64
yum install socat
3.yum安装rabbitmq
yum install -y rabbitmq-server
4.修改hosts文件
因为mq集群需要通过机器名称访问,所以需要将集群的每个节点都设置到hosts文件里:
vi /etc/hosts
10.248.201.76 host-10-248-201-76
10.248.201.57 host-10-248-201-57
10.248.201.48 host-10-248-201-48
10.248.201.71 host-10-248-201-71
10.248.201.90 host-10-248-201-90
10.248.201.50 host-10-248-201-50
10.248.201.22 host-10-248-201-22
5.配置rabbitmq
设置自启动:
systemctl enable rabbitmq-server
选择第一个节点,重启rabbitmq:
systemctl restart rabbitmq-server
6.配置集群cookie文件
Rabbitmq集群需要一个统一的认证方式,这里采用cookie方式,将第一个节点生成的cookie文件,复制到其他节点,即可实现统一认证。
第一次启动以后,会生成 cookie 文件,将该文件拷贝到集群其他节点的对应目录:
scp /var/lib/rabbitmq/.erlang.cookie root@controller02:/var/lib/rabbitmq/.erlang.cookie
在其它节点上设置一下 cookie 文件权限:
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
chmod 400 /var/lib/rabbitmq/.erlang.cookie
查看节点状态:
systemctl status rabbitmq-server
7.修改rabbitmq集群配置文件
vi /etc/rabbitmq/rabbitmq.conf
# this is rabbitmq setting
listeners.tcp.local = 0.0.0.0:5672
heartbeat = 60
frame_max = 131072
channel_max = 128
vm_memory_high_watermark.relative = 0.4
vm_memory_high_watermark_paging_ratio = 0.5
vm_memory_high_watermark.absolute = 8GB
disk_free_limit.absolute = 50000
log.console = false
log.console.level = error
log.exchange = false
log.exchange.level = error
tcp_listen_options.backlog = 8192
tcp_listen_options.nodelay = true
tcp_listen_options.linger.on = true
tcp_listen_options.linger.timeout = 0
tcp_listen_options.sndbuf = 32768
tcp_listen_options.recbuf = 32768
handshake_timeout = 20000
将配置文件复制到其他集群节点:
scp /etc/rabbitmq/rabbitmq.conf root@host-10-248-201-71:/etc/rabbitmq/rabbitmq.conf
8.在集群其他节点执行
systemctl restart rabbitmq-server
rabbitmqctl stop_app
rabbitmqctl reset
#默认为磁盘节点
rabbitmqctl join_cluster "rabbit@host-10-248-201-76"
#设置为加入内存节点
rabbitmqctl join_cluster --ram "rabbit@host-10-248-201-76"
rabbitmqctl start_app
9.查看集群状态
rabbitmqctl cluster_status
10.设置访问用户
rabbitmqctl add_user admin 123456
rabbitmqctl change_password guest ******
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
rabbitmqctl list_users
11.设置为镜像模式
默认安装完成后,为普通模式,即没有实现高可用,只是单点存储队列消息,丢失后无法继续访问。配置为镜像模式后,每个节点都保存完整的队列消息,实现了高可用。
在集群里任一个节点上,只需执行一个命令:
rabbitmqctl set_policy -p coresystem ha-all "^" '{"ha-mode":"all"}'
"coresystem" vhost名称, "^"匹配所有的队列, ha-all 策略名称为ha-all, '{"ha-mode":"all"}' 策略模式为 all 即复制到所有节点,包含新增节点。
12.监控界面配置插件
开启某个插件:
rabbitmq-plugins enable xxx
关闭某个插件:
rabbitmq-plugins disable xxx
如:
rabbitmq-plugins enable rabbitmq_management
#查看插件列表
rabbitmq-plugins list