一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

RabbitMQ集群環(huán)境生產(chǎn)實(shí)例部署

 用勿龍潛 2014-06-08
生產(chǎn)環(huán)境:CentOS 6.3 x86_64

服務(wù)器主機(jī)名與IP列表:

mq136      172.28.2.136
mq137      172.28.2.137
mq164      172.28.2.164
mq165      172.28.2.165

在各節(jié)點(diǎn)服務(wù)器上作好hosts解析

  1. cat >>/etc/hosts/<<EOF

  2. mq136      172.28.2.136

  3. mq137      172.28.2.137

  4. mq164      172.28.2.164

  5. mq165      172.28.2.165

  6. EOF

一、簡介
RabbitMQ
是流行的開源消息隊(duì)列系統(tǒng),用erlang語言開發(fā)。Erlang的分布式通訊安全策略,可以歸結(jié)為 All or None。。RabbitMQAMQP(高級消息隊(duì)列協(xié)議)的標(biāo)準(zhǔn)實(shí)現(xiàn)。RabbitMQ的結(jié)構(gòu)圖如下:

171753607.jpg

幾個概念說明:

Broker:簡單來說就是消息隊(duì)列服務(wù)器實(shí)體。
Exchange
:消息交換機(jī),它指定消息按什么規(guī)則,路由到哪個隊(duì)列。
Queue
:消息隊(duì)列載體,每個消息都會被投入到一個或多個隊(duì)列。
Binding
:綁定,它的作用就是把exchangequeue按照路由規(guī)則綁定起來。
Routing Key
:路由關(guān)鍵字,exchange根據(jù)這個關(guān)鍵字進(jìn)行消息投遞。
vhost
:虛擬主機(jī),一個broker里可以開設(shè)多個vhost,用作不同用戶的權(quán)限分離。
producer
:消息生產(chǎn)者,就是投遞消息的程序。
consumer
:消息消費(fèi)者,就是接受消息的程序。
channel
:消息通道,在客戶端的每個連接里,可建立多個channel,每個channel代表一個會話任務(wù)。

消息隊(duì)列的使用過程大概如下:

1)客戶端連接到消息隊(duì)列服務(wù)器,打開一個channel。
2)客戶端聲明一個exchange,并設(shè)置相關(guān)屬性。
3)客戶端聲明一個queue,并設(shè)置相關(guān)屬性。
4)客戶端使用routing key,在exchangequeue之間建立好綁定關(guān)系。
5)客戶端投遞消息到exchange。

exchange接收到消息后,就根據(jù)消息的key和已經(jīng)設(shè)置的binding,進(jìn)行消息路由,將消息投遞到一個或多個隊(duì)列里。

exchange也有幾個類型,完全根據(jù)key進(jìn)行投遞的叫做Direct交換機(jī),例如,綁定時設(shè)置了routing key”abc”,那么客戶端提交的消息,只有設(shè)置了key”abc”的才會投遞到隊(duì)列。對key進(jìn)行模式匹配后進(jìn)行投遞的叫做Topic交換機(jī),符號”#”匹配一個或多個詞,符號”*”匹配正好一個詞。例如”abc.#”匹配”abc.def.ghi”,”abc.*”只匹配”abc.def”。還有一種不需要key的,叫做Fanout交換機(jī),它采取廣播模式,一個消息進(jìn)來時,投遞到與該交換機(jī)綁定的所有隊(duì)列。

RabbitMQ支持消息的持久化,也就是數(shù)據(jù)寫在磁盤上,為了數(shù)據(jù)安全考慮,我想大多數(shù)用戶都會選擇持久化。消息隊(duì)列持久化包括3個部分:
1exchange持久化,在聲明時指定durable => 1
2queue持久化,在聲明時指定durable => 1
3)消息持久化,在投遞時指定delivery_mode => 21是非持久化)

如果exchangequeue都是持久化的,那么它們之間的binding也是持久化的。如果exchangequeue兩者之間有一個持久化,一個非持久化,就不允許建立綁定。

下面我們再了解下消息隊(duì)列RabbitMQ集群,由于RabbitMQ是用erlang開發(fā)的,RabbitMQ 完全依賴 Erlang Cluster,而Erlang集群非常方便,因此配置RabbitMQ集群變得非常簡單。

RabbitMQ的集群節(jié)點(diǎn)包括內(nèi)存節(jié)點(diǎn)、磁盤節(jié)點(diǎn)。顧名思義內(nèi)存節(jié)點(diǎn)就是將所有數(shù)據(jù)放在內(nèi)存,磁盤節(jié)點(diǎn)將數(shù)據(jù)放在磁盤。不過,如前文所述,如果在投遞消息時,打開了消息的持久化,那么即使是內(nèi)存節(jié)點(diǎn),數(shù)據(jù)還是安全的放在磁盤。

良好的設(shè)計(jì)架構(gòu)可以如下:在一個集群里,有3臺以上機(jī)器,其中1臺使用磁盤模式,其它使用內(nèi)存模式。其它幾臺為內(nèi)存模式的節(jié)點(diǎn),無疑速度更快,因此客戶端(consumer、producer)連接訪問它們。而磁盤模式的節(jié)點(diǎn),由于磁盤IO相對較慢,因此僅作數(shù)據(jù)備份使用。

二、各節(jié)點(diǎn)安裝rabbitmq

安裝非常簡單,只需幾步搞定:

1. 安裝epel源

  1. rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm

  2. wget -O /etc/yum.repos.d/epel-erlang.repo http://repos.fedorapeople.org/repos/peter/erlang/epel-erlang.repo

2. 安裝erlang

  1. yum install erlang xmlto git -y

  2. rpm --import http://www./rabbitmq-signing-key-public.asc

3. 安裝rabbitmq

可以選擇用yum安裝,也可以選擇下載rpm包安裝,也可以用源碼編譯安裝!

下載地址: http://www./download.html

本文選擇rpm包安裝:

  1. wget http://www./releases/rabbitmq-server/v2.8.6/rabbitmq-server-2.8.6.noarch.rpm

  2. rpm -ivh  rabbitmq-server-2.8.6.noarch.rpm  

4. 啟動各節(jié)點(diǎn)rabbitmq,并驗(yàn)證啟動情況

  1. [root@mq136 ~]# rabbitmq-server --detached &

  2. [root@mq136 ~]# ps aux |grep rabbitmq

  3. rabbitmq  1394  0.0  0.0  10828   540 ?        S    Oct08   0:11 /usr/lib64/erlang/erts-5.8.5/bin/epmd -daemon

  4. root      2483  0.0  0.0 103244   836 pts/1    S+   17:40   0:00 grep rabbitmq

  5. rabbitmq  5657  6.3  1.9 2224044 157200 ?      Sl   Oct08 959:17 /usr/lib64/erlang/erts-5.8.5/bin/beam.smp -W w -K true -A30 -P 1048576 -- -root /usr/lib64/erlang -progname erl -- -home /var/lib/rabbitmq -- -noshell -noinput -sname rabbit@mq136 -boot /var/lib/rabbitmq/mnesia/rabbit@mq136-plugins-expand/rabbit -kernel inet_default_connect_options [{nodelay,true}] -sasl errlog_type error -sasl sasl_error_logger false -rabbit error_logger {file,"/var/log/rabbitmq/rabbit@mq136.log"} -rabbit sasl_error_logger {file,"/var/log/rabbitmq/rabbit@mq136-sasl.log"} -os_mon start_cpu_sup false -os_mon start_disksup false -os_mon start_memsup false -mnesia dir"/var/lib/rabbitmq/mnesia/rabbit@mq136" -noshell -noinput

  6. rabbitmq  5698  0.0  0.0  10788   520 ?        Ss   Oct08   0:00 inet_gethost 4

  7. rabbitmq  5699  0.0  0.0  12892   692 ?        S    Oct08   0:00 inet_gethost 4

  8. rabbitmq 11446  0.0  0.0  12892   680 ?        S    Oct13   0:00 inet_gethost 4

  9. [root@mq136 ~]# lsof -i:5672

  10. COMMAND   PID     USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME

  11. beam.smp 5657 rabbitmq   18u  IPv4 5879364      0t0  TCP *:amqp (LISTEN)


三、集群配置

集群環(huán)境說明:

mq136作為磁盤節(jié)點(diǎn),其它所有節(jié)點(diǎn)都作為內(nèi)存節(jié)點(diǎn)!

1. 在各節(jié)點(diǎn)創(chuàng)建加入集群腳本

  1. mq136:

  2. cat >>/home/zjqui/scripts/cluster.sh<<EOF

  3. rabbitmqctl stop_app

  4. rabbitmqctl reset

  5. rabbitmqctl cluster  

  6. rabbitmqctl start_app

  7. EOF

  8. mq137:

  9. cat >>/home/zjqui/scripts/cluster.sh<<EOF

  10. rabbitmqctl stop_app

  11. rabbitmqctl reset

  12. rabbitmqctl cluster rabbit@mq136

  13. rabbitmqctl start_app

  14. EOF

  15. mq164:

  16. cat >>/home/zjqui/scripts/cluster.sh<<EOF

  17. rabbitmqctl stop_app

  18. rabbitmqctl reset

  19. rabbitmqctl cluster rabbit@mq136

  20. rabbitmqctl start_app

  21. EOF

  22. mq165:

  23. cat >>/home/zjqui/scripts/cluster.sh<<EOF

  24. rabbitmqctl stop_app

  25. rabbitmqctl reset

  26. rabbitmqctl cluster rabbit@mq136

  27. rabbitmqctl start_app

  28. EOF


2. 各節(jié)點(diǎn)加入集群環(huán)境

  1. [root@mq136 ~]# chmod +x /home/zjqui/scripts/cluster.sh

啟動腳本順序:先運(yùn)行mq136節(jié)點(diǎn)集群腳本,然后再運(yùn)行其它節(jié)點(diǎn)集群腳本:

  1. [root@mq136 ~]# /home/zjqui/scripts/cluster.sh

各節(jié)點(diǎn)運(yùn)行成功后,查看集群整體狀態(tài):

  1. [root@mq136 ~]# rabbitmqctl cluster_status

  2. Cluster status of node rabbit@mq136 ...

  3. [{nodes,[{disc,[rabbit@mq136]},

  4.         {ram,[rabbit@mq165,rabbit@mq164,rabbit@mq137]}]},

  5. {running_nodes,[rabbit@mq164,rabbit@mq165,rabbit@mq137,rabbit@mq136]}]

  6. ...done.

可以看到mq136作為disc節(jié)點(diǎn),其它節(jié)點(diǎn)是ram節(jié)點(diǎn)!集群簡單配置到此完成??!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    九九久久精品久久久精品| 中文字幕一区二区三区中文| 日韩高清一区二区三区四区| 亚洲中文字幕综合网在线| 偷自拍亚洲欧美一区二页| 亚洲男女性生活免费视频| 亚洲黄色在线观看免费高清| 日本深夜福利视频在线| 色好吊视频这里只有精| 亚洲国产精品肉丝袜久久| 久热在线视频这里只有精品| 粉嫩国产美女国产av| 国产又长又粗又爽免费视频| 欧美夫妻性生活一区二区| 国内欲色一区二区三区| 中文字幕精品一区二区年下载| 日韩欧美在线看一卡一卡| 特黄大片性高水多欧美一级| 日本精品中文字幕在线视频| 99久热只有精品视频免费看| 91偷拍与自偷拍精品| 深夜日本福利在线观看| 亚洲高清中文字幕一区二三区| 国产精品美女午夜视频| 亚洲熟女乱色一区二区三区| 亚洲欧美日韩在线中文字幕| 国产成人精品一区二区在线看| 国产极品粉嫩尤物一区二区| 色婷婷日本视频在线观看| 精品久久久一区二区三| 久热青青草视频在线观看| 99亚洲综合精品成人网色播 | 国产成人精品午夜福利| 妻子的新妈妈中文字幕| 国产精品蜜桃久久一区二区| 午夜精品一区免费视频| 老司机精品视频免费入口| 久热久热精品视频在线观看| 日韩美成人免费在线视频| 精品香蕉国产一区二区三区| 青青免费操手机在线视频|