1. 程式人生 > >大型網站架構之千萬PV之RabbitMQ

大型網站架構之千萬PV之RabbitMQ

內存 col fir ebs bin vim start ofo abd

  • 簡介
  • MQ全稱為Message Queue, 消息隊列(MQ)是一種應用程序對應用程序的通信方法。應用程序通過讀寫出入隊列的消息(針對應用程序的數據)來通信,而無需專用連接來鏈接它們。消息傳遞指的是程序之間通過在消息中發送數據進行通信,而不是通過直接調用彼此來通信,直接調用通常是用於諸如遠程過程調用的技術。排隊指的是應用程序通過 隊列來通信。隊列的使用除去了接收和發送應用程序同時執行的要求。其中較為成熟的MQ產品有IBM WEBSPHERE MQ等等。

    • 幾個概念

    Exchange:交換機,決定了消息路由規則;

    Queue:消息隊列;

    Channel:進行消息讀寫的通道;

    Bind:綁定了Queue和Exchange,意即為符合什麽樣路由規則的消息,將會放置入哪一個消息隊列;

    • 實驗環境

    一臺磁盤節點:192.168.177.145

    一臺內存節點:192.168.177.135

    一臺內存節點:192.168.177.132
    技術分享圖片

    磁盤節點

    # vim /etc/hostname
       mq01.localadmin
    # vim /etc/hosts
      192.168.177.145 mq01
      192.168.177.135 mq02
      192.168.177.132 mq03
    # init 6

    技術分享圖片
    技術分享圖片
    技術分享圖片
    技術分享圖片

    內存節點

    # vim /etc/hostname
       mq02.localadmin
    # vim /etc/hosts
      192.168.177.145 mq01
      192.168.177.135 mq02
      192.168.177.132 mq03
    # init 6

    內存節點

    # vim /etc/hostname
       mq03.localadmin
    # vim /etc/hosts
      192.168.177.145 mq01
      192.168.177.135 mq02
      192.168.177.132 mq03
    # init 6

    磁盤節點

    # systemctl stop firewalld.service
    # setenforce 0
    # ln -s /usr/lib/rabbitmq/bin/* /usr/bin/ //識別命令
    # rabbitmq-plugins enable rabbitmq_management   //提供web端
    # systemctl start rabbitmq-server.service  //開啟服務
    # rabbitmqctl cluster_status   //查看狀態

    技術分享圖片
    技術分享圖片

    內存節點(兩臺一樣)

    # systemctl stop firewalld.service
    # setenforce 0
    # ln -s /usr/lib/rabbitmq/bin/* /usr/bin/ //識別命令
    # rabbitmq-plugins enable rabbitmq_management   //提供web端
    # systemctl start rabbitmq-server.service  //開啟服務
    # rabbitmqctl cluster_status   //查看狀態

    技術分享圖片
    技術分享圖片

    磁盤節點

    # systemctl stop rabbitmq-server.service
    # cd /var/lib/rabbitmq/
    # cat .erlang.cookie 
       JZVFRKVBEINPGMWDOFOR//查看序列號,進行復制
    # systemctl start rabbitmq-server.service

    技術分享圖片

    內存節點(兩臺一樣)

    # systemctl stop rabbitmq-server.service
    # cd /var/lib/rabbitmq/
    # vim .erlang.cookie
       JZVFRKVBEINPGMWDOFOR  //換成這個
    # systemctl start rabbitmq-server.service
    # rabbitmqctl stop_app  //停掉rabbitmq應用
    # rabbitmqctl join_cluster --ram rabbit@mq01    //調用cluster命令,將mq02連接到mq01
    # rabbitmqctl start_app  //啟用rabbitmq應用
    # rabbitmqctl cluster_status  //查看狀態

    技術分享圖片
    技術分享圖片
    技術分享圖片

    磁盤節點

    # rabbitmqctl cluster_status  //查看狀態

    技術分享圖片
    技術分享圖片

    大型網站架構之千萬PV之RabbitMQ