• openstack搭建4、部署rabbitmq消息队列


    4、部署rabbitmq消息队列
    4.1、所有控制节点安装rabbitmq和erlang软件包(controller1、controller2、controller3)

    //节点:controller1
    [root@controller1:/root]# yum install epel-release -y
    [root@controller1:/root]# yum install -y erlang rabbitmq-server.noarch
    [root@controller1:/root]# systemctl enable rabbitmq-server && systemctl start rabbitmq-server
    [root@controller1:/root]# systemctl status rabbitmq-server
    [root@controller1:/root]# netstat -ntlpa | grep 5672
    //节点:controller2
    [root@controller2:/root]# yum install epel-release -y
    [root@controller2:/root]# yum install -y erlang rabbitmq-server.noarch
    [root@controller2:/root]# systemctl enable rabbitmq-server && systemctl start rabbitmq-server
    [root@controller2:/root]# systemctl status rabbitmq-server
    [root@controller2:/root]# netstat -ntlpa | grep 5672
    //节点:controller3
    [root@controller3:/root]# yum install epel-release -y
    [root@controller3:/root]# yum install -y erlang rabbitmq-server.noarch
    [root@controller3:/root]# systemctl enable rabbitmq-server && systemctl start rabbitmq-server
    [root@controller3:/root]# systemctl status rabbitmq-server
    [root@controller3:/root]# netstat -ntlpa | grep 5672

    4.2 查看集群状态

    (提示:Rabbitmq的配置文件/etc/rabbitmq/rabbitmq.config)
    [root@controller1:/root]# rabbitmqctl cluster_status
    Cluster status of node rabbit@controller1 ...
    [{nodes,[{disc,[rabbit@controller1]}]},
    {running_nodes,[rabbit@controller1]},
    {cluster_name,<<"rabbit@controller1">>},
    {partitions,[]}]
    ...done.
    [root@controller2:/root]# rabbitmqctl cluster_status
    Cluster status of node rabbit@controller2 ...
    [{nodes,[{disc,[rabbit@controller2]}]},
    {running_nodes,[rabbit@controller2]},
    {cluster_name,<<"rabbit@controller2">>},
    {partitions,[]}]
    ...done.
    [root@controller3:/root]# rabbitmqctl cluster_status
    Cluster status of node rabbit@controller3 ...
    [{nodes,[{disc,[rabbit@controller3]}]},
    {running_nodes,[rabbit@controller3]},
    {cluster_name,<<"rabbit@controller3">>},
    {partitions,[]}]
    ...done.
    //*注:partitions里如果有节点一般非正常,可以通过重启rabbitmq-server服务来恢复*//
    
     

    4.3 编辑rabbitmq变量文件

    [root@controller1:/root]# vim /etc/rabbitmq/rabbitmq-env.conf
    ##
    RABBITMQ_NODE_PORT=5672
    ulimit -S -n 4096
    RABBITMQ_SERVER_ERL_ARGS="+K true +A30 +P 1048576 -kernel inet_default_connect_options [{nodelay,true},{raw,6,18,<<5000:64/native>>}] -kernel inet_default_listen_options [{raw,6,18,<<5000:64/native>>}]"
    RABBITMQ_NODE_IP_ADDRESS=192.168.110.121
    
    [root@controller2:/root]# vim /etc/rabbitmq/rabbitmq-env.conf
    ##
    RABBITMQ_NODE_PORT=5672
    ulimit -S -n 4096
    RABBITMQ_SERVER_ERL_ARGS="+K true +A30 +P 1048576 -kernel inet_default_connect_options [{nodelay,true},{raw,6,18,<<5000:64/native>>}] -kernel inet_default_listen_options [{raw,6,18,<<5000:64/native>>}]"
    RABBITMQ_NODE_IP_ADDRESS=192.168.110.122
    
    [root@controller3:/root]# vim /etc/rabbitmq/rabbitmq-env.conf
    ##
    RABBITMQ_NODE_PORT=5672
    ulimit -S -n 4096
    RABBITMQ_SERVER_ERL_ARGS="+K true +A30 +P 1048576 -kernel inet_default_connect_options [{nodelay,true},{raw,6,18,<<5000:64/native>>}] -kernel inet_default_listen_options [{raw,6,18,<<5000:64/native>>}]"
    RABBITMQ_NODE_IP_ADDRESS=192.168.110.123

    4.4 查看rabbitmq插件

    [root@controller1:/root]# /usr/lib/rabbitmq/bin/rabbitmq-plugins list
    [ ] amqp_client 3.3.5
    [ ] cowboy 0.5.0-rmq3.3.5-git4b93c2d
    [ ] eldap 3.3.5-gite309de4
    [ ] mochiweb 2.7.0-rmq3.3.5-git680dba8
    [ ] rabbitmq_amqp1_0 3.3.5
    [ ] rabbitmq_auth_backend_ldap 3.3.5
    [ ] rabbitmq_auth_mechanism_ssl 3.3.5
    [ ] rabbitmq_consistent_hash_exchange 3.3.5
    [ ] rabbitmq_federation 3.3.5
    [ ] rabbitmq_federation_management 3.3.5
    [ ] rabbitmq_management 3.3.5
    [ ] rabbitmq_management_agent 3.3.5
    [ ] rabbitmq_management_visualiser 3.3.5
    [ ] rabbitmq_mqtt 3.3.5
    [ ] rabbitmq_shovel 3.3.5
    [ ] rabbitmq_shovel_management 3.3.5
    [ ] rabbitmq_stomp 3.3.5
    [ ] rabbitmq_test 3.3.5
    [ ] rabbitmq_tracing 3.3.5
    [ ] rabbitmq_web_dispatch 3.3.5
    [ ] rabbitmq_web_stomp 3.3.5
    [ ] rabbitmq_web_stomp_examples 3.3.5
    [ ] sockjs 0.3.4-rmq3.3.5-git3132eb9
    [ ] webmachine 1.10.3-rmq3.3.5-gite9359c7

    4.5 所有node开启rabbitmq的web管理页面

    rabbitmq-plugins enable rabbitmq_management
    systemctl restart rabbitmq-server 
    systemctl status rabbitmq-server

    4.6 查看rabbitmq插件是否加载成功(成功后前面有E)

    [root@controller1:/root]# /usr/lib/rabbitmq/bin/rabbitmq-plugins list
    [e] amqp_client 3.3.5
    [ ] cowboy 0.5.0-rmq3.3.5-git4b93c2d
    [ ] eldap 3.3.5-gite309de4
    [e] mochiweb 2.7.0-rmq3.3.5-git680dba8
    [ ] rabbitmq_amqp1_0 3.3.5
    [ ] rabbitmq_auth_backend_ldap 3.3.5
    [ ] rabbitmq_auth_mechanism_ssl 3.3.5
    [ ] rabbitmq_consistent_hash_exchange 3.3.5
    [ ] rabbitmq_federation 3.3.5
    [ ] rabbitmq_federation_management 3.3.5
    [E] rabbitmq_management 3.3.5
    [e] rabbitmq_management_agent 3.3.5
    [ ] rabbitmq_management_visualiser 3.3.5
    [ ] rabbitmq_mqtt 3.3.5
    [ ] rabbitmq_shovel 3.3.5
    [ ] rabbitmq_shovel_management 3.3.5
    [ ] rabbitmq_stomp 3.3.5
    [ ] rabbitmq_test 3.3.5
    [ ] rabbitmq_tracing 3.3.5
    [e] rabbitmq_web_dispatch 3.3.5
    [ ] rabbitmq_web_stomp 3.3.5
    [ ] rabbitmq_web_stomp_examples 3.3.5
    [ ] sockjs 0.3.4-rmq3.3.5-git3132eb9
    [e] webmachine 1.10.3-rmq3.3.5-gite9359c7
    
    
    提示:rabbitmq: web默认端口15672 rabbitmq: server默认端口5672

    4.7 访问:http://192.168.110.122:15672/
    注:如果是阿里云服务器,需要打开15672端口.(后期可能有80端口被占用情况)

    默认账户:guest/guest

    4.8 所有node修改guest密码为adminrabbitmq(默认用户为:guest 密码为:guest)

    [root@controller1:/root]# rabbitmqctl change_password guest adminrabbitmq
    Changing password for user "guest" ...
    ...done.
    [1]+ Done rabbitmqctl change_password guest admin
    [root@controller2:/root]# rabbitmqctl change_password guest adminrabbitmq
    Changing password for user "guest" ...
    ...done.
    [1]+ Done rabbitmqctl change_password guest admin
    [root@controller3:/root]# rabbitmqctl change_password guest adminrabbitmq
    Changing password for user "guest" ...
    ...done.

    4.9 controller1添加一个openstack的用户,并设密码为adminopenstack。并设置权限成为管理员(成集群后,controller2和controller3上也可以登录)

    [root@controller1:/root]# rabbitmqctl add_user openstack adminopenstack
    Creating user "openstack" ...
    ...done.
    [root@controller1:/root]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
    Setting permissions for user "openstack" in vhost "/" ...
    ...done.
    [root@controller1:/root]# rabbitmqctl set_user_tags openstack administrator
    Setting tags for user "openstack" to [administrator] ...
    ...done.
    [root@controller1:/root]# rabbitmqctl list_users
    Listing users ...
    guest    [administrator]
    openstack    [administrator]
    ...done.
    
     

    4.10 发送controller1上的erlang.cookie到其他节点配置集群

    [root@controller1:/root]# rabbitmqctl status
    Status of node rabbit@controller1 ...
    [{pid,12512},
    {running_applications,
    [{rabbitmq_management,"RabbitMQ Management Console","3.3.5"},
    {rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.3.5"},
    {webmachine,"webmachine","1.10.3-rmq3.3.5-gite9359c7"},
    {mochiweb,"MochiMedia Web Server","2.7.0-rmq3.3.5-git680dba8"},
    {rabbitmq_management_agent,"RabbitMQ Management Agent","3.3.5"},
    {rabbit,"RabbitMQ","3.3.5"},
    {os_mon,"CPO CXC 138 46","2.2.14"},
    {inets,"INETS CXC 138 49","5.9.8"},
    {mnesia,"MNESIA CXC 138 12","4.11"},
    {amqp_client,"RabbitMQ AMQP Client","3.3.5"},
    {xmerl,"XML parser","1.3.6"},
    {sasl,"SASL CXC 138 11","2.3.4"},
    {stdlib,"ERTS CXC 138 10","1.19.4"},
    {kernel,"ERTS CXC 138 10","2.16.4"}]},
    {os,{unix,linux}},
    {erlang_version,
    "Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [smp:8:8] [async-threads:30] [hipe] [kernel-poll:true]
    "},
    {memory,
    [{total,41896520},
    {connection_procs,5600},
    {queue_procs,5600},
    {plugins,385080},
    {other_proc,13866040},
    {mnesia,60888},
    {mgmt_db,50256},
    {msg_index,34528},
    {other_ets,1114200},
    {binary,74848},
    {code,20229052},
    {atom,711569},
    {other_system,5358859}]},
    {alarms,[]},
    {listeners,[{clustering,25672,"::"},{amqp,5672,"192.168.110.122"}]},
    {vm_memory_high_watermark,0.4},
    {vm_memory_limit,8331886592},
    {disk_free_limit,50000000},
    {disk_free,178624393216},
    {file_descriptors,
    [{total_limit,3996},
    {total_used,3},
    {sockets_limit,3594},
    {sockets_used,1}]},
    {processes,[{limit,1048576},{used,190}]},
    {run_queue,0},
    {uptime,369}]
    ...done.
    
    [root@controller1:/root]# scp /var/lib/rabbitmq/.erlang.cookie controller2:/var/lib/rabbitmq/ 
    [root@controller1:/root]# scp /var/lib/rabbitmq/.erlang.cookie controller3:/var/lib/rabbitmq/

    4.11 controller2、controller3停止应用,并ram的方式加入controller1节点,之后重启应用(先查看controller1集群名字)

    [root@controller1:/root]# rabbitmqctl cluster_status
    Cluster status of node rabbit@controller1 ...
    [{nodes,[{disc,[rabbit@controller1]}]},
    {running_nodes,[rabbit@controller1]},
    {cluster_name,<<"rabbit@controller1">>},
    {partitions,[]}]
    ...done.
    
    [root@controller2:/root]# systemctl restart rabbitmq-server
    [root@controller2:/root]# systemctl status rabbitmq-server
    [root@controller2:/root]# rabbitmqctl stop_app
    Stopping node rabbit@controller2 ...
    ...done.
    [root@controller2:/root]# rabbitmqctl join_cluster --ram rabbit@controller1
    Clustering node rabbit@controller1 with rabbit@controller1 ...
    ...done.
    [root@controller2:/root]# rabbitmqctl start_app
    Starting node rabbit@controller2 ...
    ...done.
    
    [root@controller3:/root]# systemctl restart rabbitmq-server
    [root@controller3:/root]# systemctl status rabbitmq-server
    [root@controller3:/root]# rabbitmqctl stop_app
    [root@controller3:/root]# rabbitmqctl join_cluster --ram rabbit@controller1
    Clustering node rabbit@controller3 with rabbit@controller1 ...
    ...done.
    [root@controller3:/root]# rabbitmqctl start_app
    Starting node rabbit@controller3 ...
    ...done.

    4.12 检测集群状态

    [root@controller1:/root]# rabbitmqctl cluster_status
    Cluster status of node rabbit@controller1 ...
    [{nodes,[{disc,[rabbit@controller1]},
    {ram,[rabbit@controller2,rabbit@controller3]}]},
    {running_nodes,[rabbit@controller2,rabbit@controller3,rabbit@controller1]},
    {cluster_name,<<"rabbit@controller1">>},
    {partitions,[]}]
    ...done.
    
    [root@controller2:/root]# rabbitmqctl cluster_status
    Cluster status of node rabbit@controller2 ...
    [{nodes,[{disc,[rabbit@controller1]},
    {ram,[rabbit@controller2,rabbit@controller3]}]},
    {running_nodes,[rabbit@controller3,rabbit@controller1,rabbit@controller2]},
    {cluster_name,<<"rabbit@controller1">>},
    {partitions,[]}]
    ...done.
    
    [root@controller3:/root]# rabbitmqctl cluster_status
    Cluster status of node rabbit@controller3 ...
    [{nodes,[{disc,[rabbit@controller1]},
    {ram,[rabbit@controller2,rabbit@controller3,]}]},
    {running_nodes,[rabbit@controller1,rabbit@controller2,rabbit@controller3]},
    {cluster_name,<<"rabbit@controller1">>},
    {partitions,[]}]
    ...done.

    4.13 为了保持rabbitmq的消息一致性,可以设置消息镜像模式策略 所有节点执行

    rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
  • 相关阅读:
    6. matlab入门——结构体、元胞数组、字符串
    5. matlab入门——图形标注、特殊绘图、三维绘图
    PyQt5Day17--输入控件QTextEdit纯文本输入
    【转】防止表单重复提交
    【转】MVC HtmlHelper用法大全
    【转】什么是.Net以及.Net的基本语法
    【转】ASP.NET MVC实现权限控制
    JavaScript 中,定义函数时用 var foo = function () {} 和 function foo() {}有什么区别?
    【转】java缩放图片、java裁剪图片代码工具类
    【转】探讨:ASP.NET技术的学习顺序问题
  • 原文地址:https://www.cnblogs.com/tartarush/p/14306795.html
Copyright © 2020-2023  润新知