国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
RabbitMQ集群環(huán)境生產(chǎn)實(shí)例部署
生產(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

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

幾個(gè)概念說明:

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

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

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

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

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

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

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

下面我們?cè)倭私庀孪㈥?duì)列RabbitMQ集群,由于RabbitMQ是用erlang開發(fā)的,RabbitMQ 完全依賴 Erlang Cluster,而Erlang集群非常方便,因此配置RabbitMQ集群變得非常簡(jiǎn)單。

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ù)放在磁盤。不過,如前文所述,如果在投遞消息時(shí),打開了消息的持久化,那么即使是內(nèi)存節(jié)點(diǎn),數(shù)據(jù)還是安全的放在磁盤。

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

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

安裝非常簡(jiǎn)單,只需幾步搞定:

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.com/rabbitmq-signing-key-public.asc

3. 安裝rabbitmq

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

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

本文選擇rpm包安裝:

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

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

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

  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

啟動(dòng)腳本順序:先運(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)!集群簡(jiǎn)單配置到此完成!!

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
【消息隊(duì)列 MQ 專欄】RabbitMQ
Springboot 1.5.x 集成基于Centos7的RabbitMQ集群安裝及配置
深度解析RabbitMQ集群——超大規(guī)模高可用OpenStack平臺(tái)核心技術(shù)深入解析系列高級(jí)篇(三)
Rabbitmq的安裝及集群環(huán)境的搭建
rabbitmq集群部署及配置
使用Docker部署RabbitMQ集群
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服