すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:オープンソース RabbitMQ のデプロイ

最終更新日:Mar 21, 2026

RabbitMQ は、AMQP、MQTT、STOMP、HTTP、WebSocket などの複数のメッセージングプロトコルをサポートするオープンソースのメッセージブローカーです。RabbitMQ は使いやすく、拡張性が高く、高い可用性を実現します。分散システムにおける通信を調整・管理し、非同期メッセージングを活用して、システムのデカップリング、優れた拡張性、並行処理、フォールトトレランスを向上させます。安定したパフォーマンス、豊富な機能セット、および活発なコミュニティによるサポートから、RabbitMQ は企業向けアプリケーションにおけるメッセージングおよびタスク処理に広く採用されています。本トピックでは、Elastic Compute Service (ECS) インスタンス上へのオープンソース RabbitMQ のデプロイ方法について説明します。

RabbitMQ のデプロイ

  • 手動デプロイ:Linux コマンドの基本的な知識があり、RabbitMQ のデプロイをカスタマイズしたいユーザーに適しています。

  • クイックデプロイ:RabbitMQ のインストールおよび構成を省略するため、デプロイ時間を大幅に短縮できます。

手動デプロイ

このセクションでは、最新バージョンの RabbitMQ をインストールする方法について説明します。その他のバージョンおよびインストール方法については、「RabbitMQ のインストール」をご参照ください。

前提条件

RabbitMQ を手動でデプロイする前に、以下の要件を満たす ECS インスタンスを作成してください。

  • インスタンスにパブリック IP アドレスが割り当てられているか、または Elastic IP Address (EIP) が関連付けられています。詳細については、「EIP」をご参照ください。

  • オペレーティングシステム:Ubuntu 20.04、Ubuntu 22.04、または Debian 11.0 ~ 12.5。

    その他のサポート対象 OS やインストール方法については、「RabbitMQ のインストール」をご参照ください。

  • セキュリティグループルール:セキュリティグループにインバウンドルールを追加し、ポート 22、80、15672 のトラフィックを許可してください。

    説明

    MQ ツールを使用して RabbitMQ サーバーに接続する場合は、ポート 5672 のトラフィックも許可する必要があります。

操作手順

  1. リモート接続には、RabbitMQ がデプロイ済みのインスタンスが必要です。

    詳細については、「ワークベンチを使用した Linux インスタンスへの接続」をご参照ください。

  2. RabbitMQ をインストールします。

    1. RabbitMQ の基本的な依存関係をインストールします。

      sudo apt-get install curl gnupg apt-transport-https -y
    2. RabbitMQ および Erlang の GPG 公開鍵をダウンロードし、システムの信頼されたキーリングに追加します。

      curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null
      curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg > /dev/null
      curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.9F4587F226208342.gpg > /dev/null
    3. RabbitMQ および Erlang の公式 Advanced Package Tool (APT) リポジトリを /etc/apt/sources.list.d/rabbitmq.list ファイルに追加します。

      sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
      deb [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
      deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
      deb [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
      deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
      deb [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
      deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
      deb [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
      deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
      EOF
    4. ローカルパッケージインデックスを更新します。

      sudo apt-get update -y
    5. 必要な Erlang パッケージをインストールします。

      sudo apt-get install -y erlang-base \
                              erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
                              erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
                              erlang-runtime-tools erlang-snmp erlang-ssl \
                              erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
    6. RabbitMQ をインストールします。

      sudo apt-get install rabbitmq-server -y --fix-missing
  3. RabbitMQ を構成します。

    1. RabbitMQ を起動時に自動実行可能に設定し、RabbitMQ サービスを起動します。

      sudo systemctl enable rabbitmq-server
      sudo systemctl start rabbitmq-server
    2. データセキュリティを確保するため、次のコマンドを実行してデフォルトユーザーを削除します。

      RabbitMQ のデフォルトのユーザー名およびパスワードはともに guest です。

      sudo rabbitmqctl delete_user guest
    3. RabbitMQ 管理者ユーザーを作成します。

      1. 新しいユーザーを作成します。

        sudo rabbitmqctl add_user <username> <password>

        <username> および <password> を、ご希望のユーザー名およびパスワードに置き換えてください。

      2. 新規ユーザーを管理者として設定します。

        sudo rabbitmqctl set_user_tags <username> administrator
      3. 新しく作成したユーザーにすべての権限を付与します。

        sudo rabbitmqctl set_permissions -p / <username> ".*" ".*" ".*"
  4. RabbitMQ 管理 Web インターフェイスを有効化します。

    sudo rabbitmq-plugins enable rabbitmq_management

クイックデプロイ

Alibaba Cloud Marketplace のイメージを使用したクイックデプロイ

Alibaba Cloud Marketplace のイメージを使用したクイックデプロイでは、インストールおよび構成の手順を省略できるため、デプロイ時間を大幅に短縮できます。Alibaba Cloud Marketplace のイメージの価格は、イメージの製品ページに記載されています。

  1. Cloud Native MQ for Apache RabbitMQ をクリックして、イメージの詳細ページを開きます。

    イメージの製品ページでは、イメージに関する情報およびユーザーガイドを確認できます。

  2. または プランの選択 をクリックします。

  3. カスタム起動 ページで、画面の指示に従って設定項目を完了し、ECS インスタンスを購入します。

    設定時に以下のパラメーターに注意してください。その他のパラメーターは必要に応じて設定できます。各パラメーターの詳細については、「カスタム起動タブでのインスタンス作成」をご参照ください。

    • イメージ: イメージ セクションは、購入したイメージにすでに設定されています。

    • パブリック IPパブリック IPv4 アドレスを割り当てる を選択します。

    • セキュリティグループ:セキュリティグループルールは、ポート 22、80、15672 のトラフィックを許可する必要があります。

  4. RabbitMQ のユーザー名およびログインパスワードを取得します。

    1. RabbitMQ サーバーにリモート接続します。

      詳細については、「ワークベンチを使用した Linux インスタンスへの接続」をご参照ください。

    2. 次のコマンドを実行して、RabbitMQ のユーザー名およびログインパスワードを取得します。

      sudo cat /credentials/password.txt

      コマンドの出力例を以下に示します。

      • rabbitmq_user:RabbitMQ へのログインに使用するユーザー名。

      • rabbitmq_password:RabbitMQ へのログインパスワード。

      • rabbitmq_gui_port:RabbitMQ の Web サーバーのポート。

      • rabbitmq_mq_port:RabbitMQ へのリモート接続ポート。

      • rabbitmq_er_port:RabbitMQ サーバーが Erlang のプロセス間通信に使用する内部ポート。

      • rabbitmq_mqtt_port:RabbitMQ サーバーが提供する MQTT サービスのリスニングポート。

      image

Terraform を使用したクイックデプロイ

Terraform は Infrastructure as Code (IaC) ツールです。開発者および運用・保守 (O&M) チームが、インフラストラクチャの作成、デプロイ、管理を自動化する際に利用します。手動操作や手動構成を行わずに、シンプルなコードを記述することで、クラウドインフラストラクチャを定義および構成できます。

操作手順

  1. ワンクリック実行 をクリックして Terraform Explorer を開き、以下の Terraform コードを自動的に読み込みます。

    完全な Terraform コードを表示

    provider "alicloud" {
      region = var.region
    }
    
    variable "region" {
      default = "cn-beijing"
    }
    
    variable "common_name" {
      description = "リソース共通の名前。"
      type        = string
      default     = "deploy_rabbitmq_by_tf"
    }
    
    variable "system_disk_category" {
      default     = "cloud_essd"
      description = "システムディスクのカテゴリ。"
    }
    
    variable "instance_password" {
      description = "サーバーのログインパスワード。長さは 8 ~ 30 文字で、大文字、小文字、数字、特殊文字 (`~!@#$%^&*_-+=|{}[]:;'<>?,./`) のうち少なくとも 3 種類を含む必要があります。"
      type        = string
      default     = "Test@123456"
    }
    
    variable "image_id" {
      description = "インスタンスのイメージ。Ubuntu のみ対応。"
      type        = string
      default     = "ubuntu_22_04_x64_20G_alibase_20241224.vhd"
    }
    
    variable "instance_type" {
      description = "インスタンスタイプ。"
      type        = string
      default     = "ecs.e-c1m2.large"
    }
    
    variable "access_ip" {
      description = "ECS にアクセスするために使用する IP アドレス。"
      type        = string
      default     = "0.0.0.0/0"
    }
    
    variable "rabbitmq_user_name" {
      description = "RabbitMQ の新規ユーザーを作成します。"
      type        = string
      default     = "rabbitmq@new_user"
    }
    
    variable "rabbitmq_user_password" {
      description = "RabbitMQ 新規ユーザーのパスワード。"
      type        = string
      default     = "rabbitmq@pw12345"
    }
    
    # 条件を満たす利用可能なゾーンを照会します。
    data "alicloud_zones" "default" {
      available_disk_category     = var.system_disk_category
      available_resource_creation = "VSwitch"
      available_instance_type     = var.instance_type
    }
    
    resource "alicloud_vpc" "rabbitmq_vpc" {
      vpc_name   = "${var.common_name}-vpc"
      cidr_block = "192.168.0.0/16"
    }
    
    resource "alicloud_vswitch" "rabbitmq_vsw" {
      vpc_id       = alicloud_vpc.rabbitmq_vpc.id
      vswitch_name = "${var.common_name}-vsw"
      cidr_block   = "192.168.0.0/24"
      zone_id      = data.alicloud_zones.default.zones.0.id
    }
    
    resource "alicloud_security_group" "rabbitmq_sg" {
      security_group_name = "${var.common_name}-sg"
      vpc_id              = alicloud_vpc.rabbitmq_vpc.id
    }
    
    resource "alicloud_security_group_rule" "allow_tcp_22" {
      type              = "ingress"
      ip_protocol       = "tcp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "22/22"
      priority          = 1
      security_group_id = alicloud_security_group.rabbitmq_sg.id
      cidr_ip           = var.access_ip
    }
    
    resource "alicloud_security_group_rule" "allow_tcp_80" {
      type              = "ingress"
      ip_protocol       = "tcp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "80/80"
      priority          = 1
      security_group_id = alicloud_security_group.rabbitmq_sg.id
      cidr_ip           = var.access_ip
    }
    
    resource "alicloud_security_group_rule" "allow_tcp_15672" {
      type              = "ingress"
      ip_protocol       = "tcp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "15672/15672"
      priority          = 1
      security_group_id = alicloud_security_group.rabbitmq_sg.id
      cidr_ip           = var.access_ip
    }
    
    resource "alicloud_security_group_rule" "allow_icmp_all" {
      type              = "ingress"
      ip_protocol       = "icmp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "-1/-1"
      priority          = 1
      security_group_id = alicloud_security_group.rabbitmq_sg.id
      cidr_ip           = "0.0.0.0/0"
    }
    
    resource "alicloud_instance" "rabbitmq_ecs" {
      availability_zone          = data.alicloud_zones.default.zones.0.id
      security_groups            = [alicloud_security_group.rabbitmq_sg.id]
      instance_type              = var.instance_type
      system_disk_category       = var.system_disk_category
      image_id                   = var.image_id
      instance_name              = "${var.common_name}-ecs"
      vswitch_id                 = alicloud_vswitch.rabbitmq_vsw.id
      internet_max_bandwidth_out = 10
      password                   = var.instance_password
    }
    
    locals {
      command_content = <<SHELL
    #!/bin/sh
    
    sudo apt-get install curl gnupg apt-transport-https -y
    
    ## Team RabbitMQ のメイン署名鍵
    curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null
    ## Cloudsmith のコミュニティミラー:モダンな Erlang リポジトリ
    curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg > /dev/null
    ## Cloudsmith のコミュニティミラー:RabbitMQ リポジトリ
    curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.9F4587F226208342.gpg > /dev/null
    
    ## Team RabbitMQ が管理する APT リポジトリを追加
    sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
    ## モダンな Erlang/OTP リリースを提供
    deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
    deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
    
    # 冗長性のための別のミラー
    deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
    deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
    
    ## RabbitMQ を提供
    deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
    deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
    
    # 冗長性のための別のミラー
    deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
    deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
    EOF
    
    ## パッケージインデックスを更新
    sudo apt-get update -y
    
    ## Erlang パッケージをインストール
    sudo apt-get install -y erlang-base \
                            erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
                            erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
                            erlang-runtime-tools erlang-snmp erlang-ssl \
                            erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
    
    ## rabbitmq-server およびその依存関係をインストール
    sudo apt-get install rabbitmq-server -y --fix-missing
    
    sudo systemctl enable rabbitmq-server
    sudo systemctl start rabbitmq-server
    
    sudo rabbitmqctl delete_user guest
    sudo rabbitmqctl add_user ${var.rabbitmq_user_name} ${var.rabbitmq_user_password}
    sudo rabbitmqctl set_user_tags ${var.rabbitmq_user_name} administrator
    sudo rabbitmqctl set_permissions -p / ${var.rabbitmq_user_name} ".*" ".*" ".*"
    sudo rabbitmq-plugins enable rabbitmq_management
    
    SHELL
    }
    
    resource "alicloud_ecs_command" "deploy_rabbitmq" {
      name            = "DeploydRabbitMQ"
      type            = "RunShellScript"
      command_content = base64encode(local.command_content)
      timeout         = 3600
      working_dir     = "/root"
    }
    
    
    resource "alicloud_ecs_invocation" "invocation" {
      instance_id = [alicloud_instance.rabbitmq_ecs.id]
      command_id  = alicloud_ecs_command.deploy_rabbitmq.id
      timeouts {
        create = "5m"
      }
    }
    
    output "rabbitmq-login_url" {
      value = format("http://%s:15672", alicloud_instance.rabbitmq_ecs.public_ip)
    }
  2. 必要に応じてパラメーターを変更します。デフォルトでは、中国 (北京) リージョンに 1 つの VPC、1 つの vSwitch、1 つのセキュリティグループ、および 1 つの従量課金 ECS インスタンスが作成されます。ECS インスタンスの課金について詳しくは、「課金概要」をご参照ください。

  3. デバッグ開始 をクリックして、作成されるリソースの詳細をプレビューします。リソース情報に誤りがなければ、プランと適用 をクリックしてリソースの作成を開始します。タスクが正常に実行されると、デプロイが完了します。

RabbitMQ 管理インターフェイスへのログイン

  1. ローカルのブラウザで http://<Linux インスタンスのパブリック IP アドレス>:15672 を入力します。

    以下のページが表示されれば、RabbitMQ のインストールが正常に完了したことを意味します。RabbitMQ登录页

  2. 作成した RabbitMQ 管理者のユーザー名およびパスワードを入力し、ログイン をクリックして RabbitMQ 管理インターフェイスにアクセスします。

    RabbitMQ 管理インターフェイスには、以下の情報が表示されます。RabbitMQ主页

オープンソース RabbitMQ のクラウドへの移行

RabbitMQ クラスターの安定性問題(例:メッセージ蓄積、スプリットブレイン)に対処し、高い同時実行性、分散デプロイメント、柔軟なスケーリングを実現したい場合、オープンソース RabbitMQ クラスターを ApsaraMQ for RabbitMQ へ移行できます。詳細については、「オープンソース RabbitMQ のクラウドへの移行」をご参照ください。