zoukankan      html  css  js  c++  java
  • Centos 6.5 Rabbitmq 安装和集群,镜像部署

    centos 6.5 rabbitmq 安装和集群,镜像部署

    安装erlang:

    yum install gcc glibc-devel make ncurses-devel openssl-devel xmlto
    
    wget http://erlang.org/download/otp_src_20.2.tar.gz
    
    tar -zxvf otp_src_20.2.tar.gz
    cd otp_src_20.2
    ./configure --prefix=/data/soft/erlang
    make && make install
    
    # 添加环境变量:
    export PATH=$PATH:/data/soft/erlang/bin
    
    
    

    安装rabbitmq:

    wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.1/rabbitmq-server-generic-unix-3.6.1.tar.xz
    xz -d rabbitmq-server-generic-unix-3.6.1.tar.xz
    tar -xvf rabbitmq-server-generic-unix-3.6.1.tar
    
    mv rabbitmq_server-3.6.1 /data/soft/rabbitmq
    
    # 启动:
    ./rabbitmq-server -detached
    
    # 关闭:
     ./rabbitmqctl stop
    
    # 配置网页插件:
    mkdir /etc/rabbitmq
    ./rabbitmq-plugins enable rabbitmq_management 
    
    默认账号:guest   密码:guest    
    ***   默认账号和密码无法登陆,下面的操作是创建一个可以登陆的账号。
    # web 网页登陆:
    http:IP:15672/   回车
    
    ## 创建一个账号 admin 密码是admin:
    rabbitmqctl add_user admin admin
    
    ## 给admin 赋予权限:                              
    rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
    
    ## 给admin 赋予新的身份:
    rabbitmqctl set_user_tags admin administrator   
    
    ## 给admin 更改密码:   
    rabbitmqctl change_password  admin xianlife.com
    
    
    
    ###  配置文件:
    git clone https://github.com/rabbitmq/rabbitmq-server.git
    

    镜像集群配置:

    RABBITMQ搭建集群
    环境:有二台主机,主机名和IP如下,rabbitmq的执行用户为rabbitmq,所属组为rabbitmq。
    
      IP            主机名       
    10.81.35.124   rabbitmq-m
    10.81.35.119   rabbitmq-s
    
    
    同步erlang.cookie
    杀掉rabbitmq-s 的rabbitmq进程:
    
    ps –ef|grep rab|awk ‘{print $2}’|xargs kill -9。–用service rabbitmq-servier stop停会有遗留进程。
    
    登陆rabbitmq-m(rabbitmq-m上的rabbitmq服务不能关),执行
    
    cd /root/    –进入erlang.cookie所在目录,只有ls –al能看见此文件
    
    chmod 777 .erlang*       –该文件默认为400权限,为方便传输,先修改权限,非必须操作
    
    scp .erlang.cookie  rabbitmq@10.81.35.119:/root/ –将此文件传给另外两条主机
    
    chmod 400 .er*          –恢复文件权限
    
    分别在rabbitmq-s 上执行
    
    chown rabbitmq:rabbitmq .er*  –修改文件所属用户和所属组
    
    chmod 400 .er*  –修改文件权限
    
    service rabbitmq-server start
    
    # 加入集群
    
    ## 查询rabbitmq-m节点名称
    
    rabbitmqctl cluster_status
    
    Cluster status of node rabbit@rabbitmq-m …
    
    [{nodes,[{disc,[rabbit@rabbitmq-m]}]},{running_nodes,[rabbit@ rabbitmq-m]}]
    
    …done.
    
    ### rabbitmq-s 加入rabbitmq-m 节点.
    
    #关掉rabbitmq-s服务
    rabbitmqctl stop_app   
    
    #rabbitmq-s加入rabbitmq-m, rabbitmq-s必须能通过rabbitmq-m的主机名ping通rabbitmq-m。
    rabbitmqctl join_cluster rabbit@rabbitmq-m    
    
    #启动rabbitmq2服务
    rabbitmqctl start_app  
    
    查看集群信息
    #此时里面就应该能看见其他的多个节点。集群名字为rabbit@rabbitmq。
    rabbitmqctl cluster_status 
    
    用相同的方法把rabbitmq3 或者其他rabbitmq 主机也加入rabbitmq-m。
    
    

    更改节点属性:

    # –停止rabbitmq服务
    rabbitmqctl stop_app 
    
    # –更改节点为磁盘或内存节点
    rabbitmqctl change_cluster_node_type disc/ram      
    
    # –开启rabbitmq服务
    rabbitmqctl start_app 
    
    # 查看状态:
    1  master 上管理页面看
    2  rabbitmqctl cluster_status   命令查看
    
    [root@rabbitmq-m rabbitmq]# rabbitmqctl cluster_status
    Cluster status of node 'rabbit@rabbitmq-m' ...
    [{nodes,[{disc,['rabbit@rabbitmq-m']},{ram,['rabbit@rabbitmq-s']}]},
     {running_nodes,['rabbit@rabbitmq-s','rabbit@rabbitmq-m']},
     {cluster_name,<<"rabbit@rabbitmq-m">>},
     {partitions,[]},
     {alarms,[{'rabbit@rabbitmq-s',[]},{'rabbit@rabbitmq-m',[]}]}]
    [root@rabbitmq-m rabbitmq]# 
    
    

    创建测试queue:

    rabbitmqctl eval 'rabbit_exchange:declare({resource, <<"/">>, exchange, <<"test-topic">>}, topic, true, false, false, []).'
    
    rabbitmqctl eval 'rabbit_amqqueue:declare({resource, <<"/">>, queue, <<"test-queue">>}, true, false, [], none).'
    
    rabbitmqctl eval 'rabbit_binding:add({binding, {resource, <<"/">>, exchange, <<"test-topic">>}, <<"*.com.cn">>, {resource, <<"/">>, queue, <<"test-queue">>}, []}).'
    
    这三条命令执行后的最终结果是:在 / 虚拟主机下创建了topic类型的,持久化的,名为 test-topic的exchange,创建了持久化的,名为 test-queue 的queue,该队列以 *.com.cn 的routing key绑定到了 test-topic这个exchange上。
    
    
    1  web页面查看是否创建成功。
    2  查看从机器的queue 是否同步信息。
    

    使用发现的问题

    1   rabbitmq   
        1.1 hosts 要写主机名和IP的对应关系进去。
        1.2 DNS 解析要能解析到rabbitmq-m 的对应ip,否则从启动会很慢,因为要去连接mq的主机,一直找不到就会等到超时。 
     
    
    
    2   rabbitmq cluster_status    
         2.1 mq全都挂了,一定是最后退出的,先启动.  
         2.2 如果主挂了而从还在运行的状况。
             2.2.1  等最后退出的mq起来,其他的启动后自动连接cluster。  
             2.2.2  加入其它的mq-m。 
    
    
    需要确定master 是哪台,如果最后退出的自动升级成 master。
    
    
    
  • 相关阅读:
    redis删除指定前缀的缓存
    php生成N个不重复的随机数实例
    Redis数据持久化,安全
    MySQL LOAD DATA
    utf 8无bom和utf 8什么区别
    MySQL直接导出CSV文件,并解决中文乱码的问题
    php 中将完整的年月日时分秒的时间转换成 年月日的形式
    PHP如何根据数组中的键值进行排序
    PHP array_multisort—对多个数组或多维数组进行排序
    sql case 函数与详细说明
  • 原文地址:https://www.cnblogs.com/zhenxing06/p/13957983.html
Copyright © 2011-2022 走看看