美文网首页
rabbitmq安装步骤

rabbitmq安装步骤

作者: 夜雨宵城 | 来源:发表于2017-07-09 22:14 被阅读0次

    简介

    rabbitmq依赖于erlang虚拟机,因此需要先安装erlang虚拟机。需要注意的是erlang虚拟机与rabbitmq是有对应关系的,所以安装的时候注意版本匹配。具体可以查看如下的链接:
    http://www.rabbitmq.com/which-erlang.html
    我所使用的版本是rabbitmq3.7.8以及otp_src_21.0
    可以直接在 http://erlang.org/download/ 下载

    erlang安装

    在安装erlang之前,需要先安装一下以下的几个包:

    yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
    ./configure --prefix=/data/program/erlang-21.0 --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe --without-javac
    make -j4 & make install
    

    安装完erlang之后,可以配置以下的环境变量。如果只是提供rabbitmq的运行环境,也可以不进行配置

    vim /etc/profile
    export ERL_HOME=/data/program/erlang-21.0/
    export PATH=$PATH:$ERL_HOME/bin
    

    rabbitmq安装

    下载Binary包,解压到指定的目录下,并rabbitmq用户。修改sbin/rabbitmq-defaults文件,指定安装目录。在文件的最开始增加

    RABBITMQ_HOME="/data/program/rabbitmq-server-3.7.8"
    ERL_DIR="/data/program/erlang-21.0/bin/"
    

    这两个目录分别指定了rabbitmq的安装目录以及erlang的程序可执行目录。
      除了这两个参数,也可以指定其他的必要参数.此外,也可以在如下的配置文件中进行配置.从3.7.0开始,配置文件改为key-value的格式,以下链接是一个样例配置
    https://github.com/rabbitmq/rabbitmq-server/blob/master/docs/rabbitmq.conf.example

    vim etc/rabbitmq/rabbitmq.conf
    #文件内容如下
    log.file.level = warning
    #也可以对IP进行监听
    listeners.tcp.local    = 127.0.0.1:5672
    

    etc/rabbitmq/rabbitmq-env.conf是一个shell文件,用于覆盖变量

    启动:

    sudo adduser -s /sbin/nologin rabbitmq
    sudo chown -R rabbitmq /data/program/rabbitmq-server-3.7.8/
    sudo -u rabbitmq /data/program/rabbitmq-server-3.7.8/sbin/rabbitmq-server
    

    增加-detached参数,可以以deamon的方式运行
    状态查看:

    sudo -u rabbitmq /data/program/rabbitmq-server-3.7.8/sbin/rabbitmqctl status
    

    停止:

    sudo -u rabbitmq /data/program/rabbitmq-server-3.7.8/sbin/rabbitmqctl stop
    

    ps
    如果出现ERROR: epmd error for host "yourhostname": timeout
    原因是:主机名和ip不匹配,需要更改hostname或者/etc/hosts文件

    使用客户端时,记得使用相同的用户,例如rabbitmq,否则会导致erlang cookie不一致,客户端无法连接

    集群搭建

    假定有两个机器,分别为host1和host2,ip分别为ip1和ip2。首先需要分别在两台机器上面配置host,使得这两个机器可以通过hostname直接互相通信。分别在两个机器上面添加如下的host

    ip1 host1
    ip2 host2
    

    将host2加入host1组成一个集群,安装上面的命令启动rabbitmq的话可以在rabbitmq账号的home目录下获取到一个.erlang.cookie文件,该文件是隐藏的。将host1的该文件拷贝到host2的对应目录下,只有rabbitmq启动之后,该文件才会生成。该文件是用来做集群间的通讯认证的。如果有多个结点,确保多个结点的该文件内容一致。在各个结点上面启动rabbitmq之后,需要在从节点上面执行如下的命令,在本文中是在host2上面执行:

    sudo -u rabbitmq /data/program/rabbitmq-server-3.7.8/sbin/rabbitmqctl stop_app
    sudo -u rabbitmq /data/program/rabbitmq-server-3.7.8/sbin/rabbitmqctl reset
    sudo -u rabbitmq /data/program/rabbitmq-server-3.7.8/sbin/rabbitmqctl join_cluster rabbit@host1 --ram
    sudo -u rabbitmq /data/program/rabbitmq-server-3.7.8/sbin/rabbitmqctl start_app
    

    其中--ram参数用于指定队列保存在内存中,这种方式性能会好一些,默认是保存在disc中,将会进行持久化。配置之后可以通过如下命令

    sudo -u rabbitmq /data/program/rabbitmq-server-3.7.8/sbin/rabbitmqctl cluster_status
    

    通过这种方式设置之后的集群,主要是起到了分散压力的作用。客户端连上之后,rabbitmq将自动将不同的队列分散到不同的节点。对于一些较为敏感的数据,需要确保数据的安全性,可以通过rabbitmq提供的镜像模式确保高可用。为了达到该目的,在继续搭建完成之后,可以通过如下的命令搭建镜像机器

    sudo -u rabbitmq /data/program/rabbitmq-server-3.7.8/sbin/rabbitmqctl set_policy ha-all-policy "^" '{"ha-mode":"all", "ha-sync-mode":"automatic"}'
    

    该命令可以根据不同的参数,指定具体的队列是否采用镜像,或者将队列同步到多少个子节点。
    此外,对于该命令的一些详细的配置可以参考http://www.rabbitmq.com/ha.html

    相关文章

      网友评论

          本文标题:rabbitmq安装步骤

          本文链接:https://www.haomeiwen.com/subject/zduehxtx.html