1.namesrv サービスを作成する
(1) 画像を引っ張る
docker pull rocketmqinc/rocketmq
(2) データディレクトリを作成する
つまり、namesrv データ ストレージ パスを作成します。
mkdir -p /docker/rocketmq/nameserver/logs /docker/rocketmq/nameserver/store
(3) namesrv コンテナの構築
docker run -d --restart=always --name rmqnamesrv --privileged=true -p 9876:9876 -v /docker/rocketmq/nameserver/logs:/root/logs -v /docker/rocketmq/nameserver/store:/root/store -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq sh mqnamesrv
(4) パラメータの説明
パラメータ | 例証する |
---|---|
-d | デーモンとして起動 |
- -restart=常に | Docker の再起動時にコンテナーが自動的に再起動します。 |
- -name rmqnamesrv | コンテナー名を rmqnamesrv に設定します |
-p 9876:9876 | コンテナーのポート 9876 をホスト 9876 にマウントします。 |
-v /docker/rocketmq/nameserver/logs:/root/logs | ディレクトリマウント |
-v /docker/rocketmq/nameserver/store | ディレクトリマウント |
rmqnamesrv | コンテナ名 |
-e 「MAX_POSSIBLE_HEAP=100000000」 | コンテナーの最大ヒープ メモリを 100000000 に設定します。 |
ロケットmqinc/ロケットmq | 使用するイメージ名 |
sh mqnamesrv | namesrv サービスを開始する |
2. ブローカー ノードを作成する
(1) broker.conf 設定ファイルを作成する
私のディレクトリは /opt/docker/rocketmq/broker.conf で、ファイルの内容は次のとおりです。
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
namesrvAddr = 127.0.0.1:9876
brokerIP1 = 主机的IP
注: brokerIP1 の IP は大文字にする必要があります
(2) ブローカーコンテナを構築する
docker run -d --restart=always --name rmqbroker --link rmqnamesrv:namesrv -p 10911:10911 -p 10909:10909 --privileged=true -v /docker/rocketmq/data/broker/logs:/root/logs -v /docker/rocketmq/data/broker/store:/root/store -v /docker/rocketmq/conf/broker.conf:/opt/docker/rocketmq/broker.conf -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker -c /opt/docker/rocketmq/broker.conf
(3) パラメータの説明
パラメータ | 例証する |
---|---|
-d | デーモンとして起動 |
- -restart=常に | Docker の再起動時にコンテナーが自動的に再起動します。 |
- -name rmqbroker | コンテナー名を rmqbroker に設定します |
- --link rmqnamesrv:namesrv | rmqnamesrv コンテナーとの通信 |
-p 9876:9876 | コンテナーのポート 9876 をホスト 9876 にマウントします。 |
-p 10909:10909 | コンテナーの vip チャネル ポートをホストにマウントします。 |
-e 「NAMESRV_ADDR=namesrv:9876」 | ローカルの namesrv の IP アドレスとして、namesrv のアドレスを指定します: 9876 |
-e「MAX_POSSIBLE_HEAP=200000000」rocketmqinc/rocketmq sh mqbroker | ブローカー サービスの最大ヒープ メモリを指定します |
ロケットmqinc/ロケットmq | 使用するイメージ名 |
sh mqbroker -c /opt/docker/rocketmq/broker.conf | 構成ファイルを指定してブローカー ノードを起動します |
(4) 注意事項
a. 次のエラーが報告された場合は、docker を再起動する必要があります
systemctl restart docker
b. 次のエラーが発生した場合
解決策 1:
borker.conf ファイルの書き込み時には、vim コマンドは使用されません。centosのテキストエディタで書いて使用します。削除後、vim コマンドで書き換えます。保存すると、問題が解決する場合があります。これはブロガーの理由ではありません。解決策 2 も参照してください。
解決策 2:
下の図のパス 1 をパス 2 に変更する必要があります。つまり、パス 1 はパス 2 と同じです。
3. コンソールをインストールするための rockermq-console サービスを作成します。
(1) 画像を引っ張る
docker pull pangliang/rocketmq-console-ng
(2) rockermq-console コンテナをビルドしてコンソールを起動する
docker run -d --restart=always --name rmqadmin -e "JAVA_OPTS=-Drocketmq.namesrv.addr=自己的IP:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 pangliang/rocketmq-console-ng
(3) パラメータの説明
パラメータ | 例証する |
-d | デーモンとして起動 |
-再起動=常に | docker の再起動時にイメージが自動的に再起動します |
-name rmqadmin | コンテナー名を rmqadmin に設定します |
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=自分の IP:9876 | namesrv サービスの IP アドレスを設定する |
Dcom.rocketmq.sendMessageWithVIPChannel=false | VIP チャネルを使用せずにメッセージを送信する |
–p 8080:8080 | コンテナーのポート 8080 をホストのポート 9999 にマウントします。 |
(4) コンソールにアクセス
ブラウザを開いて http://IP:8080 にアクセスします
(5) 注意事項
ファイアウォールを閉じるか、namesrv およびブローカー ポートを開く必要があります。コンソール サービスは、namesrv サービスにアクセスできません。
例外情報は次のとおりです。 org.apache.rocketmq.remoting.exception.RemotingConnectException : connect to failed
ファイアウォールをオフにする
systemctl stop firewalld.service
指定ポートを開く
firewall-cmd --permanent --zone=public --add-port=9876/tcp
firewall-cmd --permanent --zone=public --add-port=10911/tcp
# 立即生效
firewall-cmd --reload
クラウドサーバーの場合、セキュリティグループでポートを開く必要があります