インストールチュートリアル
1. 環境の説明
- RocketMQ 4.3.0 バージョンの正式な必要環境は以下の通りです Git を使用して GitHub からソースコードを取得します インストールしていなくても問題ありません 直接ダウンロードできます
- 公式に推奨されるプロセスは次のとおりです。 Linux システムに Git ツール、Maven、および Java JDK をインストールします。
- Git ツールは、RocketMQ プロジェクトのソース コードを GitHub から Linux システムに直接ダウンロードするために使用されます。
- 次に、Maven は RocketMQ ソース コードをバイナリ ファイルにコンパイルします。
- Java JDK をインストールした後、RocketMQ を実行できます。
2. JDK および RocketMQ のバージョンに関する注意事項
3. ソースコードのインストール
1. Apache ファイル ライブラリからダウンロードできます https://archive.apache.org/dist/rocketmq/ ここでは最新バージョンを選択します
2. wget コマンドを使用してダウンロードします
wget https://archive.apache.org/dist/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip
3. プロジェクト解凍コマンド
unzip rocketmq-all-4.7.1-bin-release.zip -d /usr/local/rocketmq
4. RocketMQ スタートアップ構成を変更する
ディレクトリ /usr/local/rocketmq/rocketmq-all-4.7.1-bin-release/bin にある 3 つの構成ファイル (runserver.sh、runbroker.sh、tools.sh) を変更します。変更しないと、メモリ不足が報告されます。
5.runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
6.ランブローカー.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
7.ツール.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m"
8.ネームサーバーを起動します
RocketMQ インストール ディレクトリの下にある /usr/local/rocketmq/rocketmq-all-4.7.1-bin-release ディレクトリに入り、操作します。
nohup sh bin/mqnamesrv &
9. ブローカーを開始する
また、RocketMQ インストール ディレクトリの下にある /usr/local/rocketmq/rocketmq-all-4.7.1-bin-release ディレクトリに入って操作を実行します。
nohup sh bin/mqbroker -n 192.168.44.128:9876 &
4. RocketMQ_デュアルマスターデュアルスレーブクラスター_dockerのインストール
1. 前提
1. インストール関係図
2. サービス展開
3. ポート番号機能
- vip チャネル ポート (10909) は通常は効果がありません。
- HA 高可用性ポートがマスター/スレーブ クラスターで使用される場合、マスターとスレーブの間にソケット接続を作成します。
4. マスター/スレーブ構成に関する注意事項
3. マスター/スレーブ関係を形成するには、brokerName が一貫している必要があります
4. BrokerId は 0 で、brokerRole はマスターを表す ASYNC_MASTER または SYNC_MASTER です
5. ブローカーは 0 ではありませんそして、brokerRole は SLAVE であり、スレーブを表します。
2.broker-master-a 設定ファイル
1. クラスター展開ディレクトリを追加します。
mkdir -p /opt/rocketmq-docker/conf
2. Broker-Master-A 設定ファイルを作成する
vi /opt/rocketmq-docker/conf/broker-master-a.conf
3. ファイルの内容を追加する
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
#namesrvAddr 地址 填写docker内网地址即可
namesrvAddr=172.18.0.3:9876;172.18.0.4:9876
#启用自动创建主题
autoCreateTopicEnable=true
#这个很有讲究 如果是正式环境 这里一定要填写内网地址(安全)
#如果是用于测试或者本地这里建议要填外网地址,因为你的本地代码是无法连接到阿里云内网,只能连接外网。
#当前broker监听的IP
brokerIP1 = 192.168.56.101
#存在broker主从时,在broker主节点上配置了brokerIP2的话,broker从节点会连接主节点配置的brokerIP2来同步。
brokerIP2 = 192.168.56.101
#Broker 对外服务的监听端口
listenPort = 10909
#Broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
3.broker-slave-a 設定ファイル
1. Broker-Slave-A 構成ファイルを作成します
vi /opt/rocketmq-docker/conf/broker-slave-a.conf
2. ファイルの内容を追加する
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 1
deleteWhen = 04
fileReservedTime = 48
#namesrvAddr 地址 填写docker内网地址即可
namesrvAddr=172.18.0.3:9876;172.18.0.4:9876
#启用自动创建主题
autoCreateTopicEnable=true
#这个很有讲究 如果是正式环境 这里一定要填写内网地址(安全)
#如果是用于测试或者本地这里建议要填外网地址,因为你的本地代码是无法连接到阿里云内网,只能连接外网。
#当前broker监听的IP
brokerIP1 = 192.168.56.101
#存在broker主从时,在broker主节点上配置了brokerIP2的话,broker从节点会连接主节点配置的brokerIP2来同步。
brokerIP2 = 192.168.56.101
#Broker 对外服务的监听端口
listenPort = 10911
#Broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
4.broker-master-b 設定ファイル
1. Broker-Master-B 設定ファイルを作成します
vi /opt/rocketmq-docker/conf/broker-master-b.conf
2. ファイルの内容を追加する
brokerClusterName = DefaultCluster
brokerName = broker-b
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
#namesrvAddr 地址 填写docker内网地址即可
namesrvAddr=172.18.0.3:9876;172.18.0.4:9876
#启用自动创建主题
autoCreateTopicEnable=true
#这个很有讲究 如果是正式环境 这里一定要填写内网地址(安全)
#如果是用于测试或者本地这里建议要填外网地址,因为你的本地代码是无法连接到阿里云内网,只能连接外网。
#当前broker监听的IP
brokerIP1 = 192.168.56.101
#存在broker主从时,在broker主节点上配置了brokerIP2的话,broker从节点会连接主节点配置的brokerIP2来同步。
brokerIP2 = 192.168.56.101
#Broker 对外服务的监听端口
listenPort = 10919
#Broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
5.broker-slave-b 設定ファイル
1. Broker-slave-b 設定ファイルを作成します
vi /opt/rocketmq-docker/conf/broker-slave-b.conf
2. ファイルの内容を追加する
brokerClusterName = DefaultCluster
brokerName = broker-b
brokerId = 1
deleteWhen = 04
fileReservedTime = 48
#namesrvAddr 地址 填写docker内网地址即可
namesrvAddr=172.18.0.3:9876;172.18.0.4:9876
#启用自动创建主题
autoCreateTopicEnable=true
#这个很有讲究 如果是正式环境 这里一定要填写内网地址(安全)
#如果是用于测试或者本地这里建议要填外网地址,因为你的本地代码是无法连接到阿里云内网,只能连接外网。
#当前broker监听的IP
brokerIP1 = 192.168.56.101
#存在broker主从时,在broker主节点上配置了brokerIP2的话,broker从节点会连接主节点配置的brokerIP2来同步。
brokerIP2 = 192.168.56.101
#Broker 对外服务的监听端口
listenPort = 10921dock
#Broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
6. Docker-compose ファイルを作成する
1. ディレクトリにぶら下げるデータを作成する
mkdir -p /opt/rocketmq-docker/data/nameserver-a/logs
mkdir -p /opt/rocketmq-docker/data/nameserver-a/store
mkdir -p /opt/rocketmq-docker/data/nameserver-b/logs
mkdir -p /opt/rocketmq-docker/data/nameserver-b/store
mkdir -p /opt/rocketmq-docker/data/broker-master-a/logs
mkdir -p /opt/rocketmq-docker/data/broker-master-b/logs
mkdir -p /opt/rocketmq-docker/data/broker-master-a/store
mkdir -p /opt/rocketmq-docker/data/broker-master-b/store
mkdir -p /opt/rocketmq-docker/data/broker-slave-a/logs
mkdir -p /opt/rocketmq-docker/data/broker-slave-b/logs
mkdir -p /opt/rocketmq-docker/data/broker-slave-a/store
mkdir -p /opt/rocketmq-docker/data/broker-slave-b/store
mkdir -p /opt/rocketmq-docker/data/broker-master-a
mkdir -p /opt/rocketmq-docker/data/broker-master-b
mkdir -p /opt/rocketmq-docker/data/broker-slave-a
mkdir -p /opt/rocketmq-docker/data/broker-slave-b
2. docker-compose ファイルを作成する
vi /opt/rocketmq-docker/docker-compose.yml
3. ファイルの内容を追加する
version: '2'
services:
nameserver-a:
image: rocketmqinc/rocketmq
container_name: nameserver-a
networks:
rocketmq_net:
ipv4_address: 172.18.0.3
environment:
MAX_POSSIBLE_HEAP: 100000000
ports:
- 9876:9876
volumes:
- /opt/rocketmq-docker/data/nameserver-a/logs:/root/logs
- /opt/rocketmq-docker/data/nameserver-a/store:/root/store
command: sh mqnamesrv
nameserver-b:
image: rocketmqinc/rocketmq
container_name: nameserver-b
networks:
rocketmq_net:
ipv4_address: 172.18.0.4
environment:
MAX_POSSIBLE_HEAP: 100000000
ports:
- 9877:9876
volumes:
- /opt/rocketmq-docker/data/nameserver-b/logs:/root/logs
- /opt/rocketmq-docker/data/nameserver-b/store:/root/store
command: sh mqnamesrv
broker-master-a:
image: rocketmqinc/rocketmq
container_name: broker-master-a
networks:
rocketmq_net:
ipv4_address: 172.18.0.5
environment:
MAX_POSSIBLE_HEAP: 200000000
ports:
- 10909:10909
- 10910:10910
volumes:
- /opt/rocketmq-docker/data/broker-master-a/logs:/root/logs
- /opt/rocketmq-docker/data/broker-master-a/store:/root/store
- /opt/rocketmq-docker/conf/broker-master-a.conf:/opt/rocketmq/conf/broker.conf
command: sh mqbroker -c /opt/rocketmq/conf/broker.conf
depends_on:
- nameserver-a
- nameserver-b
broker-master-b:
image: rocketmqinc/rocketmq
container_name: broker-master-b
networks:
rocketmq_net:
ipv4_address: 172.18.0.6
environment:
MAX_POSSIBLE_HEAP: 200000000
ports:
- 10919:10919
- 10920:10920
volumes:
- /opt/rocketmq-docker/data/broker-master-b/logs:/root/logs
- /opt/rocketmq-docker/data/broker-master-b/store:/root/store
- /opt/rocketmq-docker/conf/broker-master-b.conf:/opt/rocketmq/conf/broker.conf
command: sh mqbroker -c /opt/rocketmq/conf/broker.conf
depends_on:
- nameserver-a
- nameserver-b
broker-slave-a:
image: rocketmqinc/rocketmq
container_name: broker-slave-a
networks:
rocketmq_net:
ipv4_address: 172.18.0.7
environment:
MAX_POSSIBLE_HEAP: 200000000
ports:
- 10911:10911
volumes:
- /opt/rocketmq-docker/data/broker-slave-a/logs:/root/logs
- /opt/rocketmq-docker/data/broker-slave-a/store:/root/store
- /opt/rocketmq-docker/conf/broker-slave-a.conf:/opt/rocketmq/conf/broker.conf
command: sh mqbroker -c /opt/rocketmq/conf/broker.conf
depends_on:
- nameserver-a
- nameserver-b
- broker-master-a
- broker-master-b
broker-slave-b:
image: rocketmqinc/rocketmq
container_name: broker-slave-b
networks:
rocketmq_net:
ipv4_address: 172.18.0.8
environment:
MAX_POSSIBLE_HEAP: 200000000
ports:
- 10921:10921
volumes:
- /opt/rocketmq-docker/data/broker-slave-b/logs:/root/logs
- /opt/rocketmq-docker/data/broker-slave-b/store:/root/store
- /opt/rocketmq-docker/conf/broker-slave-b.conf:/opt/rocketmq/conf/broker.conf
command: sh mqbroker -c /opt/rocketmq/conf/broker.conf
depends_on:
- nameserver-a
- nameserver-b
- broker-master-a
- broker-master-b
console:
image: styletang/rocketmq-console-ng
container_name: rocketmq-console-ng
networks:
rocketmq_net:
ipv4_address: 172.18.0.9
ports:
- 8080:8080
depends_on:
- nameserver-a
- nameserver-b
environment:
- JAVA_OPTS= -Dlogging.level.root=info -Drocketmq.namesrv.addr=172.18.0.3:9876;172.18.0.4:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false
networks:
rocketmq_net:
ipam:
config:
- subnet: 172.18.0.0/16
gateway: 172.18.0.1
7. Docker クラスターを開始します。
1. docker-compose ファイルが配置されているディレクトリで、コマンドを実行して起動します。
docker-compose up -d