IP | HOSTNAME |
---|---|
192.168.140.11 | rabbitmq01 |
192.168.140.12 | rabbitmq02 |
#以下操作两台服务器均需执行
#修改主机名
vim /etc/hostname
rabbitmq01
#修改hosts文件
cat >> /etc/hosts
192.168.140.11 rabbitmq01
192.168.140.12 rabbitmq02
# 配置好yum源
cd /etc/yum.repos.d && mkdir back
mv *.repo back
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
# 下载 rabbit mq包
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm
# 安装rabbitmq
yum -y localinstall rabbitmq-server-3.6.6-1.el7.noarch.rpm
#添加开机启动
systemctl enable rabbitmq-server.service
#安装管理插件
rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled: mochiweb webmachine
rabbitmq_web_dispatch amqp_client rabbitmq_management_agent
rabbitmq_managementApplying plugin configuration to rabbit@rabbitmq01… failed. * Could
not contact node rabbit@rabbitmq01. Changes will take effect at
broker restart. * Options: --online - fail if broker cannot be
contacted.
–offline - do not try to contact broker.
#为保证数据安全,建议您删除默认用户。RabbitMQ默认的账号用户名和密码都是guest
#启动rabbitmq
systemctl start rabbitmq-server
#删除默认用户
rabbitmqctl delete_user guest
# 创建一个管理员账号 # rabbitmqctl add_user <用户名> <密码>
rabbitmqctl add_user admin huxuezheng
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
启用RabbitMQ的web管理界面
rabbitmq-plugins enable rabbitmq_management
登陆网页 http://192.168.140.11:15672
#停止rabbitmq服务
rabbitmqctl stop
#定义一台RabbitMq01 作为主节点,将主节点的cookie复制给其他节点
#在Rabbitmq01上操作,文件(.erlang.cookie)同步
scp -rp /var/lib/rabbitmq/.erlang.cookie 192.168.140.12:/var/lib/rabbitmq/
#启动rabbitmq服务
rabbitmq-server -detached
Warning: PID file not written; -detached was passed.
查看服务端口是否监听
lsof -i :15672
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME beam.smp
9102 rabbitmq 49u IPv4 44936 0t0 TCP *:15672 (LISTEN)
在 rabbitmq02 执行操作
#停止rabbit mq 应用
rabbitmqctl stop_app
Stopping node rabbit@rabbitmq02 …
在rabbitmq02执行操作
RabbitMQ对于queue中的message的保存方式有两种方式:disc和ram。如果采用disc,则需要对exchange/queue/delivery
mode都要设置成durable模式。Disc方式的好处是当RabbitMQ失效了,message仍然可以在重启之后恢复。而使用ram方式,RabbitMQ处理message的效率要高很多,ram和disc两种方式的效率比大概是3:1。所以如果在有其它HA手段保障的情况下,选用ram方式是可以提高消息队列的工作效率的。*提示:
RAM节点仅将其元数据保留在内存中,如果群集停止,该节点的所有数据将会丢失。在实际生产中,为了提高性能,不需要所有节点都是disc的节点,如果是3节点的情况下,可以主节点做disc,2个副节点做RAM。
不加参数默认是disc
rabbitmqctl join_cluster rabbit@rabbitmq01
在两台服务器分别执行
rabbitmqctl start_app
配置镜像队列
在两台服务器分别执行
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
附:修改节点类型
rabbitmqctl -n rabbit@rabbitmq02 stop_app
rabbitmqctl -n rabbit@rabbitmq02 change_cluster_node_type ram
rabbitmqctl -n rabbit@rabbitmq02 start_app
以上