rabbitmq 集群搭建

消息隊(duì)列對于處理高并發(fā)還是非常不錯(cuò)的選擇。所以電商必然會采取這種方式。廢話不多說。貼代碼先。

1 .搭建環(huán)境

 Mac OS X 10.10.5   
 VMware Fusion8  
 Centos 6.7 
 rabbitmq-server-3.5.6-1.noarch.rpm 
 erlang-17.4-1.el6.x86_64.rpm
  1. rabbitmq的搭建
wget http://www.rabbitmq.com/releases/erlang/erlang-17.4-1.el6.x86_64.rpm
yum install erlang-17.4-1.el6.x86_64.rpm
  1. 安裝rabbitmq
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.6/rabbitmq-server-3.5.6-1.noarch.rpm
rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
yum install rabbitmq-server-3.5.6-1.noarch.rpm
  1. 安裝rabbitmq插件
    安裝RabbitMQ WebUI管理插件
rabbitmq-plugins enable rabbitmq_management
service abbitmq-server restart

打開瀏覽器登錄http://127.0.0.1: 15672

啟動RabbitMQ Server

service rabbitmq-server start
  1. 集群搭建

太啰嗦的就不說了。需要注意的我會在這里提出:

  1. 你的host需要修改 在node1代碼塊可以看到。如果不改變,重啟 shutdown -r now
  2. 你的.erlang.cookie 也是需要修改并都保持一樣。
  3. 修改配置文件的時(shí)候要注意括號。
    stop [<pid_file>] 停止服務(wù)根據(jù)進(jìn)程號
    stop_app
    start_app
    wait <pid_file>   暫停
    reset             重置
    force_reset       強(qiáng)制重置
    rotate_logs <suffix> 日志文件 后綴

    join_cluster <clusternode> [—ram]  加入集群
    cluster_status                     集群狀態(tài)
    change_cluster_node_type disc | ram  改變集群節(jié)點(diǎn)類型
    forget_cluster_node [--offline]      取消節(jié)點(diǎn)
    rename_cluster_node oldnode1 newnode1 [oldnode2] [newnode2 …]  重命名節(jié)點(diǎn)
    update_cluster_nodes clusternode  更新節(jié)點(diǎn)
    force_boot                        重置引導(dǎo)
    sync_queue queue                  同步隊(duì)列
    cancel_sync_queue queue           取消同步隊(duì)列
    purge_queue queue                 清除隊(duì)列
    set_cluster_name name             設(shè)置集群名稱

    add_user <username> <password>    添加用戶
    delete_user <username>            刪除用戶
    change_password <username> <newpassword>  修改密碼
    clear_password <username>         清除密碼
    set_user_tags <username> <tag> ...設(shè)置角色權(quán)限
    list_users                        查看所有的用戶

    add_vhost <vhostpath>             添加主機(jī)
    delete_vhost <vhostpath>          刪除主機(jī)
    list_vhosts [<vhostinfoitem> …]   所有主機(jī)
    set_permissions [-p <vhostpath>] <user> <conf> <write> <read>  給主機(jī)指定用戶
    clear_permissions [-p <vhostpath>] <username>     清除一個(gè)主機(jī)的用戶
    list_permissions [-p <vhostpath>]                 一個(gè)主機(jī)下面的綁定的用戶
    list_user_permissions <username>                  用戶的權(quán)限

node1:

sjk@192.168.10.73's password: 

Last login: Tue Nov  3 00:16:23 2015 from 192.168.10.14

[sjk@rabbitmq-node1 ~]$ ls

Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos

[sjk@rabbitmq-node1 ~]$ cd /usr/local/

[sjk@rabbitmq-node1 local]$ ls

bin  games    jdk1.7.0_80  lib64    nginx    sbin   src     usr

etc  include  lib          libexec  openssl  share  tomcat

[sjk@rabbitmq-node1 local]$ ls

bin  games    jdk1.7.0_80  lib64    nginx    sbin   src     usr

etc  include  lib          libexec  openssl  share  tomcat

[sjk@rabbitmq-node1 local]$ cd /usr/programmer/

[sjk@rabbitmq-node1 programmer]$ ls

apache-tomcat-8.0.26.tar.gz     nginx-1.9.4.tar.gz

erlang-17.4-1.el6.x86_64.rpm    openssl-1.0.2c.tar.gz

go1.4.2.linux-amd64.tar.gz      rabbitmq-server-3.5.6-1.noarch.rpm

jdk-7u80-linux-x64.tar.gz       redis-3.0.3.tar

mongodb-linux-x86_64-3.0.6.tgz  solr-5.2.1.tgz

mongodb-osx-x86_64-3.0.6.tgz    zookeeper-3.4.6.tar.gz

nginx-1.8.0.tar.gz

[sjk@rabbitmq-node1 programmer]$ cat /etc/hosts

192.168.10.73   rabbitmq-node1.com rabbitmq-node1

192.168.10.74   rabbitmq-node2.com rabbitmq-node2

192.168.10.75   rabbitmq-node3.com rabbitmq-node3

[sjk@rabbitmq-node1 programmer]$ vim /etc/hosts

[sjk@rabbitmq-node1 programmer]$ sudo -i

[sudo] password for sjk: 

[root@rabbitmq-node1 ~]# vim /etc/hosts

[root@rabbitmq-node1 ~]# service rabbitmq-server start

Starting rabbitmq-server: SUCCESS

rabbitmq-server.

[root@rabbitmq-node1 ~]# cd /etc/rabbitmq/

[root@rabbitmq-node1 rabbitmq]# ls

enabled_plugins

[root@rabbitmq-node1 rabbitmq]# mv /usr/rabbitmq.config /etc/rabbitmq/

[root@rabbitmq-node1 rabbitmq]# cat /var/lib/rabbitmq/.erlang.cookie 

ATDTSAHIFSBKTQDSYKMA

[root@rabbitmq-node1 rabbitmq]# service rabbitmq-server stop

Stopping rabbitmq-server: rabbitmq-server.

[root@rabbitmq-node1 rabbitmq]# vim rabbitmq.config 

[root@rabbitmq-node1 rabbitmq]# vim /etc/rabbitmq/rabbitmq-env.conf

[root@rabbitmq-node1 rabbitmq]# vim /etc/rabbitmq/rabbitmq-env.conf

[root@rabbitmq-node1 rabbitmq]# service rabbitmq-server start

Starting rabbitmq-server: SUCCESS

rabbitmq-server.

[root@rabbitmq-node1 rabbitmq]# service rabbitmq-server stop

Stopping rabbitmq-server: rabbitmq-server.

[root@rabbitmq-node1 rabbitmq]# ls

enabled_plugins  rabbitmq.config  rabbitmq-env.conf

[root@rabbitmq-node1 rabbitmq]# cat rabbitmq-env.conf 

RABBITMQ_MNESIA_BASE=/var/lib/rabbitmq/

#需要使用的MNESIA數(shù)據(jù)庫的路徑

RABBITMQ_LOG_BASE=/var/log/rabbitmq/

#log的路徑

RABBITMQ_PLUGINS_DIR=/usr/lib/rabbitmq/lib/rabbitmq_server-3.5.6/plugins/

#插件的路徑

[root@rabbitmq-node1 rabbitmq]# vim rabbitmq.config 

[root@rabbitmq-node1 rabbitmq]# service rabbitmq-server start

Starting rabbitmq-server: FAILED - check /var/log/rabbitmq/startup_{log, _err}

rabbitmq-server.

[root@rabbitmq-node1 rabbitmq]# cat /var/log/rabbitmq/startup_err 

Crash dump was written to: erl_crash.dump

could not start kernel pid (application_controller) (error in config file "/etc/rabbitmq/rabbitmq.config" (253): syntax error before: ']')

[root@rabbitmq-node1 rabbitmq]# vim rabbitmq.config 

[root@rabbitmq-node1 rabbitmq]# service rabbitmq-server start

Starting rabbitmq-server: SUCCESS

rabbitmq-server.

[root@rabbitmq-node1 rabbitmq]# service rabbitmq-server stop

Stopping rabbitmq-server: rabbitmq-server.

[root@rabbitmq-node1 rabbitmq]# service rabbitmq-server start

Starting rabbitmq-server: SUCCESS

rabbitmq-server.

[root@rabbitmq-node1 rabbitmq]# rabbitmqctl cluster_status

Cluster status of node 'rabbit@rabbitmq-node1' ...

[{nodes,[{disc,['rabbit@rabbitmq-node1']}]},

 {running_nodes,['rabbit@rabbitmq-node1']},

 {cluster_name,<<"rabbit@rabbitmq-node1.com">>},

 {partitions,[]}]

[root@rabbitmq-node1 rabbitmq]# rabbitmqctl stop_app

Stopping node 'rabbit@rabbitmq-node1' ...

[root@rabbitmq-node1 rabbitmq]# rabbitmqctl reset

Resetting node 'rabbit@rabbitmq-node1' ...

[root@rabbitmq-node1 rabbitmq]# rabbitmqctl join_cluster rabbit@rabbitmq-node1

Clustering node 'rabbit@rabbitmq-node1' with 'rabbit@rabbitmq-node1' ...

Error: cannot_cluster_node_with_itself

[root@rabbitmq-node1 rabbitmq]# rabbitmqctl start_app

Starting node 'rabbit@rabbitmq-node1' ...

[root@rabbitmq-node1 rabbitmq]# rabbitmqctl cluster_status

Cluster status of node 'rabbit@rabbitmq-node1' ...

[{nodes,[{disc,['rabbit@rabbitmq-node1','rabbit@rabbitmq-node2',

                'rabbit@rabbitmq-node3']}]},

 {running_nodes,['rabbit@rabbitmq-node1']},

 {cluster_name,<<"rabbit@rabbitmq-node1.com">>},

 {partitions,[]}]

[root@rabbitmq-node1 rabbitmq]# rabbitmqctl add_user lxc root

Creating user "lxc" ...

[root@rabbitmq-node1 rabbitmq]# rabbitmqctl set_user_tags lxc  administrator

Setting tags for user "lxc" to [administrator] ...

[root@rabbitmq-node1 rabbitmq]# 

node2:

sjk@192.168.10.74's password: 

Last login: Tue Nov  3 12:52:44 2015 from 192.168.10.14

[sjk@rabbitmq-node2 ~]$ cd /usr/local/

[sjk@rabbitmq-node2 local]$ ls

bin  games    jdk1.7.0_80  lib64    sbin   src

etc  include  lib          libexec  share  tomcat

[sjk@rabbitmq-node2 local]$ cd /usr/programmer/

[sjk@rabbitmq-node2 programmer]$ l;s

-bash: l: command not found

-bash: s: command not found

[sjk@rabbitmq-node2 programmer]$ ls

apache-tomcat-8.0.26.tar.gz     nginx-1.8.0.tar.gz

erlang-17.4-1.el6.x86_64.rpm    nginx-1.9.4.tar.gz

go1.4.2.linux-amd64.tar.gz      rabbitmq-server-3.5.6-1.noarch.rpm

jdk-7u80-linux-x64.tar.gz       redis-3.0.3.tar

mongodb-linux-x86_64-3.0.6.tgz  solr-5.2.1.tgz

mongodb-osx-x86_64-3.0.6.tgz    zookeeper-3.4.6.tar.gz

[sjk@rabbitmq-node2 programmer]$ sudo -i

[sudo] password for sjk: 

[root@rabbitmq-node2 ~]# vim /etc/hosts

[root@rabbitmq-node2 ~]# service rabbitmq-server start

Starting rabbitmq-server: SUCCESS

rabbitmq-server.

[root@rabbitmq-node2 ~]# cd /etc/rabbitmq/

[root@rabbitmq-node2 rabbitmq]# ls

enabled_plugins

[root@rabbitmq-node2 rabbitmq]# mv /usr/rabbitmq.config /etc/rabbitmq/

[root@rabbitmq-node2 rabbitmq]# cat /var/lib/rabbitmq/.erlang.cookie 

ATDTSAHIFSBKTQDSYKMA

[root@rabbitmq-node2 rabbitmq]# service rabbitmq-server stop

Stopping rabbitmq-server: rabbitmq-server.

[root@rabbitmq-node2 rabbitmq]# ls

enabled_plugins  rabbitmq.config

[root@rabbitmq-node2 rabbitmq]# vim rabbitmq-env.conf 

[root@rabbitmq-node2 rabbitmq]# vim rabbitmq-env.conf 

[root@rabbitmq-node2 rabbitmq]# vim rabbitmq.config 

[root@rabbitmq-node2 rabbitmq]# service rabbitmq-server start

Starting rabbitmq-server: SUCCESS

rabbitmq-server.

[root@rabbitmq-node2 rabbitmq]# rabbitmqctl cluster_status

Cluster status of node 'rabbit@rabbitmq-node2' ...

[{nodes,[{disc,['rabbit@rabbitmq-node2']}]},

 {running_nodes,['rabbit@rabbitmq-node2']},

 {cluster_name,<<"rabbit@rabbitmq-node2.com">>},

 {partitions,[]}]

[root@rabbitmq-node2 rabbitmq]# rabbitmqctl stop_app

Stopping node 'rabbit@rabbitmq-node2' ...

[root@rabbitmq-node2 rabbitmq]# rabbitmqctl reset

Resetting node 'rabbit@rabbitmq-node2' ...

[root@rabbitmq-node2 rabbitmq]# rabbitmqctl join_cluster rabbit@rabbitmq-node1

Clustering node 'rabbit@rabbitmq-node2' with 'rabbit@rabbitmq-node1' ...

[root@rabbitmq-node2 rabbitmq]# 

[root@rabbitmq-node2 rabbitmq]# rabbitmqctl start_app

Starting node 'rabbit@rabbitmq-node2' ...

[root@rabbitmq-node2 rabbitmq]# 

node3:

sjk@192.168.10.75's password: 

Last login: Tue Nov  3 12:59:37 2015 from 192.168.10.14

[sjk@rabbitmq-node3 ~]$ cat /etc/rabbitmq/

cat: /etc/rabbitmq/: 是一個(gè)目錄

[sjk@rabbitmq-node3 ~]$ ls

Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos

[sjk@rabbitmq-node3 ~]$ sudo -i

[sudo] password for sjk: 

[root@rabbitmq-node3 ~]# vim /etc/hosts

[root@rabbitmq-node3 ~]# 

[root@rabbitmq-node3 ~]# 

[root@rabbitmq-node3 ~]# service rabbitmq-server start

Starting rabbitmq-server: SUCCESS

rabbitmq-server.

[root@rabbitmq-node3 ~]# cd /etc/rabbitmq/

[root@rabbitmq-node3 rabbitmq]# ls

enabled_plugins  rabbitmq.config  rabbitmq.config.example

[root@rabbitmq-node3 rabbitmq]# scp rabbitmq.config root@192.168.10.73:/usr/

The authenticity of host '192.168.10.73 (192.168.10.73)' can't be established.

RSA key fingerprint is ba:e1:f0:bd:2f:67:15:cd:50:e2:cf:df:87:01:b9:13.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.10.73' (RSA) to the list of known hosts.

root@192.168.10.73's password: 

rabbitmq.config                               100%   19KB  19.1KB/s   00:00    

[root@rabbitmq-node3 rabbitmq]# scp rabbitmq.config root@192.168.10.74:/usr/

The authenticity of host '192.168.10.74 (192.168.10.74)' can't be established.

RSA key fingerprint is ba:e1:f0:bd:2f:67:15:cd:50:e2:cf:df:87:01:b9:13.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.10.74' (RSA) to the list of known hosts.

root@192.168.10.74's password: 

rabbitmq.config                               100%   19KB  19.1KB/s   00:00    

[root@rabbitmq-node3 rabbitmq]# cat /var/lib/rabbitmq/.erlang.cookie 

ATDTSAHIFSBKTQDSYKMA

[root@rabbitmq-node3 rabbitmq]# service rabbitmq-server stop

Stopping rabbitmq-server: rabbitmq-server.

[root@rabbitmq-node3 rabbitmq]# ls

enabled_plugins  rabbitmq.config  rabbitmq.config.example

[root@rabbitmq-node3 rabbitmq]# vim rabbitmq-env.conf 

[root@rabbitmq-node3 rabbitmq]# vim rabbitmq-env.conf 

[root@rabbitmq-node3 rabbitmq]# vim rabbitmq.config

[root@rabbitmq-node3 rabbitmq]# service rabbitmq-server start

Starting rabbitmq-server: SUCCESS

rabbitmq-server.

[root@rabbitmq-node3 rabbitmq]# rabbitmqctl cluster_status

Cluster status of node 'rabbit@rabbitmq-node3' ...

[{nodes,[{disc,['rabbit@rabbitmq-node3']}]},

 {running_nodes,['rabbit@rabbitmq-node3']},

 {cluster_name,<<"rabbit@rabbitmq-node3.com">>},

 {partitions,[]}]

[root@rabbitmq-node3 rabbitmq]# rabbitmqctl stop_app

Stopping node 'rabbit@rabbitmq-node3' ...

[root@rabbitmq-node3 rabbitmq]# rabbitmqctl reset

Resetting node 'rabbit@rabbitmq-node3' ...

[root@rabbitmq-node3 rabbitmq]# rabbitmqctl join_cluster rabbit@rabbitmq-node1

Clustering node 'rabbit@rabbitmq-node3' with 'rabbit@rabbitmq-node1' ...

Error: mnesia_not_running

[root@rabbitmq-node3 rabbitmq]# rabbitmqctl join_cluster rabbit@rabbitmq-node1

Clustering node 'rabbit@rabbitmq-node3' with 'rabbit@rabbitmq-node1' ...

[root@rabbitmq-node3 rabbitmq]# rabbitmqctl start_app

Starting node 'rabbit@rabbitmq-node3' ...

[root@rabbitmq-node3 rabbitmq]# 

rabbitmq.config 的內(nèi)容:我刪除了一些注釋。因?yàn)镾o Long~

%% -*- mode: erlang -*-
%% ----------------------------------------------------------------------------
%% RabbitMQ Sample Configuration File.
%%
%% See http://www.rabbitmq.com/configure.html for details.
%% ----------------------------------------------------------------------------
[
 {rabbit,
  [
   {cluster_nodes, {[' rabbit@rabbitmq-node1', ' rabbit@rabbitmq-node2', ' rabbit@rabbitmq-node3'], disc}}
  ]},

 %% ----------------------------------------------------------------------------
 %% Advanced Erlang Networking/Clustering Options.
 %%
 %% See http://www.rabbitmq.com/clustering.html for details
 %% ----------------------------------------------------------------------------
 {kernel,
  [%% Sets the net_kernel tick time.
   %% Please see http://erlang.org/doc/man/kernel_app.html and
   %% http://www.rabbitmq.com/nettick.html for further details.
   %%
   %% {net_ticktime, 60}
  ]},

 %% ----------------------------------------------------------------------------
 %% RabbitMQ Management Plugin
 %%
 %% See http://www.rabbitmq.com/management.html for details
 %% ----------------------------------------------------------------------------

 {rabbitmq_management,
  [
{listener, [{port,     8080},
             {ip,       "0.0.0.0"},
             {ssl,     false}]} 
 ]},

 %% ----------------------------------------------------------------------------
 %% RabbitMQ Shovel Plugin
 %%
 %% See http://www.rabbitmq.com/shovel.html for details
 %% ----------------------------------------------------------------------------

 {rabbitmq_shovel,
  [{shovels,
    [
    ]}
   %% Rather than specifying some values per-shovel, you can specify
   %% them for all shovels here.
   %%
   %% {defaults, [{prefetch_count,     0},
   %%             {ack_mode,           on_confirm},
   %%             {publish_fields,     []},
   %%             {publish_properties, [{delivery_mode, 2}]},
   %%             {reconnect_delay,    2.5}]}
  ]},

 %% ----------------------------------------------------------------------------
 %% RabbitMQ Stomp Adapter
 %%
 %% See http://www.rabbitmq.com/stomp.html for details
 %% ----------------------------------------------------------------------------

 {rabbitmq_stomp,
  [
  ]},

 %% ----------------------------------------------------------------------------
 %% RabbitMQ MQTT Adapter
 %%
 %% See https://github.com/rabbitmq/rabbitmq-mqtt/blob/stable/README.md
 %% for details
 %% ----------------------------------------------------------------------------

 {rabbitmq_mqtt,
  [
  ]},

 %% ----------------------------------------------------------------------------
 %% RabbitMQ AMQP 1.0 Support
 %%
 %% See https://github.com/rabbitmq/rabbitmq-amqp1.0/blob/stable/README.md
 %% for details
 %% ----------------------------------------------------------------------------

 {rabbitmq_amqp1_0,
  [
  ]},

 %% ----------------------------------------------------------------------------
 %% RabbitMQ LDAP Plugin
 %%
 %% See http://www.rabbitmq.com/ldap.html for details.
 %%
 %% ----------------------------------------------------------------------------

 {rabbitmq_auth_backend_ldap,
  [
  ]}
].
這里寫圖片描述

我也借鑒了一些大神的博客。也看了官方文檔。還在繼續(xù)提高中~~~

歡迎光臨我的個(gè)人博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本帖內(nèi)容轉(zhuǎn)自博客:http://88250.b3log.org/rabbitmq-clustering-ha。部分...
    dzgdp888閱讀 8,900評論 2 15
  • 集群配置 資源下載 遠(yuǎn)程復(fù)制文件到slave1和slave2 以下需要在三臺虛擬機(jī)上重復(fù)操作: 安裝需要的依賴 解...
    Harlan1994閱讀 945評論 0 2
  • 集群概述 通過 Erlang 的分布式特性(通過 magic cookie 認(rèn)證節(jié)點(diǎn))進(jìn)行 RabbitMQ 集群...
    你清澈又神秘閱讀 5,099評論 0 10
  • 1 環(huán)境 兩個(gè)節(jié)點(diǎn) 1.1 修改hostname 修改3個(gè)地方 /etc/hosts /etc/sysconfig...
    atecher閱讀 433評論 0 2
  • 引用類型(Date 和 RegExp) Date 類型 js 中的 Date 類型是在早期 java 中的 jav...
    YxxxHao閱讀 193評論 0 0

友情鏈接更多精彩內(nèi)容