Kolla部署(Ocata)——rabbitmq集群化部署

概念介紹

AMQP 當中有四個概念非常重要:虛擬主機( virtual host )衩椒,交換機( exchange )骂维,隊列(queue )和綁定( binding )惹资。

虛擬主機( virtual host ):一個虛擬主機持有一組交換機、隊列和綁定航闺。為什么需要多個虛擬主機呢布轿? RabbitMQ 當中,用戶只能在虛擬主機的粒度進行權(quán)限控制来颤。因此,如果需要禁止 A 組訪問 B 組的交換機 / 隊列 / 綁定稠肘,必須為 A 和 B 分別創(chuàng)建一個虛擬主機福铅。每一個 RabbitMQ 服務(wù)器都有一個默認的虛擬主機 “/” 。

隊列( Queue ):由消費者建立的项阴,是 messages 的終點滑黔,可以理解成裝消息的容器笆包。消息一直存在隊列里,直到有客戶端或者稱為 Consumer 消費者連接到這個隊列并將 message 取走為止略荡。隊列可以有多個庵佣。

交換機( Exchange ):可以理解成具有路由表的路由程序。每個消息都有一個路由鍵( routing key )汛兜,就是一個簡單的字符串巴粪。交換機中有一系列的綁定( binding ),即路由規(guī)則( routes )粥谬。交換機可以有多個肛根。多個隊列可以和同一個交換機綁定,同時多個交換機也可以和同一個隊列綁定漏策。(多對多的關(guān)系)

三種交換機:

  1. Fanout Exchange (不處理路由鍵):一個發(fā)送到交換機上的消息都會被轉(zhuǎn)發(fā)到與該交換機綁定的所有隊列上派哲。 Fanout 交換機發(fā)消息是最快的。

  2. Direct Exchange (處理路由鍵):如果一個隊列綁定到該交換機上掺喻,并且當前要求路由鍵為 X 芭届,只有路由鍵是 X 的消息才會被這個隊列轉(zhuǎn)發(fā)。

  3. Topic Exchange (將路由鍵和某模式進行匹配感耙,可以理解成模糊處理):路由鍵的詞由 “.”隔開褂乍,符號 “#” 表示匹配 0 個或多個詞,符號 “” 表示匹配不多不少一個詞抑月。因此 “ audit.# ” 能夠匹配到 “ audit.irs.corporate ” 树叽,但是 “ audit. ” 只會匹配到 “ audit.irs ”

幾個概念說明:

  1. Broker:簡單來說就是消息隊列服務(wù)器實體。

  2. Exchange:消息交換機谦絮,它指定消息按什么規(guī)則题诵,路由到哪個隊列。

  3. Queue:消息隊列載體层皱,每個消息都會被投入到一個或多個隊列性锭。

  4. Binding:綁定,它的作用就是把exchange和queue按照路由規(guī)則綁定起來叫胖。

  5. Routing Key:路由關(guān)鍵字草冈,exchange根據(jù)這個關(guān)鍵字進行消息投遞。

  6. vhost:虛擬主機瓮增,一個broker里可以開設(shè)多個vhost怎棱,用作不同用戶的權(quán)限分離。

  7. producer:消息生產(chǎn)者绷跑,就是投遞消息的程序拳恋。

  8. consumer:消息消費者,就是接受消息的程序砸捏。

  9. channel:消息通道谬运,在客戶端的每個連接里隙赁,可建立多個channel,每個channel代表一個會話任務(wù)梆暖。

消息隊列的使用過程大概如下:

  1. 客戶端連接到消息隊列服務(wù)器伞访,打開一個channel。

  2. 客戶端聲明一個exchange轰驳,并設(shè)置相關(guān)屬性厚掷。

  3. 客戶端聲明一個queue,并設(shè)置相關(guān)屬性滑废。

  4. 客戶端使用routing key蝗肪,在exchange和queue之間建立好綁定關(guān)系。

  5. 客戶端投遞消息到exchange蠕趁。

  6. exchange接收到消息后薛闪,就根據(jù)消息的key和已經(jīng)設(shè)置的binding,進行消息路由俺陋,將消息投遞到一個或多個隊列里豁延。

高可用配置

配置文件:rabbitmq.config

[
    # 集群(CLustering)監(jiān)聽地址配置。Port used for inter-node and CLI tool communition
    {kernel, [
    {inet_dist_use_interface, {192,168,102,15}},
    {inet_dist_listen_min, 25672},
    {inet_dist_listen_max, 25672}
  ]},
# rabbit的默認服務(wù)端口配置腊状,監(jiān)聽AMQP connections
  {rabbit, [
    {tcp_listeners, [
      {"192.168.102.15", 5672}
    ]},
# rabbitmq cluster诱咏,不能在cluster內(nèi)處理network partitions,因而不推薦在wan中使用缴挖,僅用于lan袋狞。
#對跨網(wǎng)段的節(jié)點異常處理,autoheal指如果在出現(xiàn)問題的場景下映屋,除了競爭勝出的網(wǎng)段之外苟鸯,其他網(wǎng)段的節(jié)點都會重啟rabbitmq服務(wù)。
    {cluster_partition_handling, autoheal}  ]},
# rabbitmq管理插件棚点,可以訪問http://192.168.102.15:15672 訪問web頁面早处,
# 在haproxy對該組件做了高可用
  {rabbitmq_management, [
    {listener, [
      {ip, "192.168.102.15"},
      {port, 15672}
    ]},
    {load_definitions, "/etc/rabbitmq/definitions.json"}
  ]},
# rabbitmq集群化配置
  {rabbitmq_clusterer, [{config, "/etc/rabbitmq/rabbitmq-clusterer.config"}]}].
% EOF

文件enabled_plugins
#enabled的插件
[rabbitmq_clusterer,rabbitmq_management].

文件rabbitmq-env.conf ,環(huán)境變量
# The node name should be unique per erlang-node-and-machine combination. To run multiple nodes, see the clustering guide.
RABBITMQ_NODENAME=rabbit
RABBITMQ_BOOT_MODULE=rabbit_clusterer
# Additional parameters for the erlcommand used when invoking the RabbitMQ Server
RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-pa /usr/lib/rabbitmq/lib/rabbitmq_server-3.6/plugins/rabbitmq_clusterer-3.6.x.ez/rabbitmq_clusterer-3.6.x-667f92b0/ebin"
RABBITMQ_LOG_BASE=/var/log/kolla/rabbitmq
export ERL_EPMD_PORT=4369

文件rabbitmq-clusterer.config
[
# 這里的版本配置成了2瘫析,因為還有一個節(jié)點配成了1砌梆,不同相同
  {version, 2},
  {nodes, [
      {'rabbit@controller01', disc},      {'rabbit@compute01', disc}    ]},
  {gospel,
    {node, 'rabbit@controller01'}}

].

文件definitions.json
{
\# virtual host名稱配置,和aparche的vhosts類似
  "vhosts": [
    {"name": "/"}
  ],
  "users": [
    {"name": "openstack", "password": "cYhhGc6Gj0XMmY1p4Spj83Ms7cafzYT4wdM6y6d9", "tags": "administrator"}
  ],
  "permissions": [
    {"user": "openstack", "vhost": "/", "configure": ".*", "write": ".*", "read": ".*"}
  ],
#queue 可以通過[ policy]對鏡像功能進行控制贬循。以下配置的意思通過建立policy來建立自動形成鏡像隊列
#該高可用集群配置部署是鏡像模式咸包,active/active的模式。
  "policies":[
    {"vhost": "/", "name": "ha-all", "pattern": ".*", "apply-to": "all", "definition": {"ha-mode":"all"}, "priority":0}
  ]
}

參考:** http://www.tuicool.com/articles/6BRzMji **

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末杖虾,一起剝皮案震驚了整個濱河市诉儒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌亏掀,老刑警劉巖忱反,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異滤愕,居然都是意外死亡温算,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門间影,熙熙樓的掌柜王于貴愁眉苦臉地迎上來注竿,“玉大人,你說我怎么就攤上這事魂贬」睿” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵付燥,是天一觀的道長宣谈。 經(jīng)常有香客問我,道長键科,這世上最難降的妖魔是什么闻丑? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮勋颖,結(jié)果婚禮上嗦嗡,老公的妹妹穿的比我還像新娘。我一直安慰自己饭玲,他們只是感情好侥祭,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著茄厘,像睡著了一般矮冬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蚕断,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天欢伏,我揣著相機與錄音,去河邊找鬼亿乳。 笑死硝拧,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的葛假。 我是一名探鬼主播障陶,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼聊训!你這毒婦竟也來了抱究?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤带斑,失蹤者是張志新(化名)和其女友劉穎鼓寺,沒想到半個月后勋拟,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡妈候,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年敢靡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苦银。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡啸胧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出幔虏,到底是詐尸還是另有隱情纺念,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布想括,位于F島的核電站陷谱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏主胧。R本人自食惡果不足惜叭首,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望踪栋。 院中可真熱鬧焙格,春花似錦、人聲如沸夷都。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽囤官。三九已至冬阳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間党饮,已是汗流浹背肝陪。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留刑顺,地道東北人氯窍。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像蹲堂,于是被迫代替她去往敵國和親狼讨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理柒竞,服務(wù)發(fā)現(xiàn)政供,斷路器,智...
    卡卡羅2017閱讀 134,715評論 18 139
  • 來源 RabbitMQ是用Erlang實現(xiàn)的一個高并發(fā)高可靠AMQP消息隊列服務(wù)器。支持消息的持久化布隔、事務(wù)离陶、擁塞控...
    jiangmo閱讀 10,369評論 2 34
  • AMQP大致內(nèi)容就是,將消息和隊列綁定起來衅檀,規(guī)定讓進入到交換機中的具有某個路由鍵的消息進入到指定隊列中去枕磁。 Rab...
    StevenMD閱讀 1,866評論 0 3
  • RabbitMQ 即一個消息隊列,主要是用來實現(xiàn)應(yīng)用程序的異步和解耦术吝,同時也能起到消息緩沖,消息分發(fā)的作用茸苇。 消息...
    彩虹之夢閱讀 1,088評論 2 1
  • 每天認真工作但依然避免不了每天加班的命運排苍,一直想擺脫這種困境,卻無力改變学密。舞蹈淘衙,吉他,閱讀腻暮,電影彤守,各種愛好擱置一邊...
    sophia_cool閱讀 245評論 0 0