RabbitMQ部署

准备

  1. RabbitMQ安装机器建议采用16C*32G以上配置,千兆网卡,至少普通SAS硬盘,16以上剩余空间
  2. 创建rabbimt用户:useradd -m -d /home/rabbit -s /bin/bash rabbit并设置密码:passwd rabbit,设置.bashrc中export LANG=en_US,并source生效。
  3. 机器建议3台以上机器,2个磁盘节点,1个内存节点。

安装

安装erlang

  • 要求erlang版本为15.0或更新版本。
  • 通过yum安装可以查看版本:yum list | grep erlang ==>   erlang.x86_64                           R16B-03.18.el7                 epel
  • 执行yum install erlang进行安装
  • 执行erl,确保进入erl shell界面,并有提示:Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]
  • 按CTRL+G然后q退出erl shell

安装RabbitMQ

  • 上传软件包到rabbit用户下,当前稳定版本是3.6.10   
  • 解压tar -Jxvf rabbitmq-server-generic-unix-3.6.10.tar.xz
  • 进入RabbitMQ目录:cd rabbitmq_server-3.6.10/sbin
  • 后台启动RabbitMQ:./rabbitmq-server -detached
  • 开启管理插件:./rabbitmq-plugins enable rabbitmq_management,可以在etc/rabbmitmq/enabled_plugins文件中查看已启用的插件
  • 可以在etc/rabbmitmq/rabbitmq-env.conf中设置MNESIA_BASE=dir来将数据文件目录设置到高速磁盘当中,默认在var/lib/rabbitmq/mnesia/下  

集群

  • 要求consul集群已部署OK,本机consul agent已部署,准备3个RabbitMQ环境并安装完毕。
  • 三个RabbitMQ环境的${HOME}/.erlang.cookie文件同步成完全一样(以任意一个为准即可),否则不能组成集群
  • 下载autocluster版本:https://github.com/rabbitmq/rabbitmq-autocluster/releases
  • 将autocluster-0.8.0.ez和rabbitmq_aws-0.8.0.ez上传到RabbitMQ的plugins目录
  • 启用插件:./rabbitmq-plugins enable autocluster --offline
  • 新增etc/rabbmitmq/rabbitmq.config文件(%%xx为注释,正式配置时删除):

    [
    {rabbit, []}, %%可以增加rabbit的其他配置
    {autocluster, [
    {backend, consul},
    {node_type, disc}, %%节点类型,至少一个阶段是磁盘disc,其他可以是内存ram
    {cluster_name, "rabbitmqcluster-1"}, %%集群名称
    {consul_host, "localhost"},
    {consul_port, 8500},
    {consul_use_longname, true},
    {consul_svc, "rabbitmq-1"}, %%服务名称
    {consul_svc_addr_nic, "eth0"}, %%使用eth0网卡的ip地址注册服务,一般调测时使用为了区分环境,生产多agent部署,此条配置要删除,否则组成不了集群
    {autocluster_log_level, info} %%可选有debug等
    ]}
    ].

  • 在sbin目录下执行停止:./rabbitmqctl stop,然后后台启动:./rabbitmq-server -detached
  • 执行./rabbitmqctl cluster_status查看机器状态
  • 修改集群名称:./rabbitmqctl set_cluster_name rabbitmqcluster-1,因为autocluster的cluster_name配置可能会不生效,只影响consul上的KV路径
  • 检查consul上的注册结果http://ip:8500/ui和http://ip:8500/v1/catalog/service/rabbitmq-1,查看ServiceAddress是否是正确的IP地址
  • 在三个环境上都执行以上操作

配置

  • 创建vhost:./rabbitmqctl add_vhost /svr
  • 删除guest用户:./rabbitmqctl delete_user guest
  • 增加admin用户
    • 新增用户: ./rabbitmqctl add_user admin admin
    • 设置角色: ./rabbitmqctl set_user_tags admin administrator
    • 设置权限: ./rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
    • 设置权限:./rabbitmqctl set_permissions -p /svr admin ".*" ".*" ".*"
  • 增加service用户:
    • 增加用户:./rabbitmqctl add_user service service
    • 设置角色:./rabbitmqctl set_user_tags service none
    • 设置权限:./rabbitmqctl set_permissions -p /svr service "^spring.*" ".*" ".*"  spring.*表示SpringCloud可以配置自己的动态队列等
  • 设置镜像模式:./rabbitmqctl set_policy -p /svr ha-all "^" '{"ha-mode":"all"}'
  • 通过http://ip:15672使用admin/admin用户,查看集群情况

监控

对接open-falcon,可以使用rabbitmq-monitor插件进行监控,此插件是一个cron,需要修改配置后定时调用。

调优

RabbitMQ的默认配置一般可以很好的工作,处于性能考虑,可以根据实际测试结果进行调优。

调优分为操作系统、erlang和RabbitMQ三个部分。

猜你喜欢

转载自blog.csdn.net/qq_33315102/article/details/80586393