Tutoriel d'installation
1. Descriptif environnemental
- Pour la version RocketMQ 4.3.0, l'environnement officiel requis est le suivant. Git est utilisé pour obtenir le code source de GitHub. Peu importe s'il n'est pas installé. Vous pouvez le télécharger directement.
- Le processus officiellement recommandé est le suivant : Installer les outils Git, Maven et Java JDK sur les systèmes Linux.
- L'outil Git est utilisé pour télécharger le code source du projet RocketMQ directement depuis GitHub vers le système Linux.
- Ensuite, Maven compile le code source de RocketMQ dans un fichier binaire
- Après avoir installé Java JDK, vous pouvez exécuter RocketMQ
2. Notes de version du JDK et de RocketMQ
3.Installation du code source
1. Vous pouvez le télécharger depuis la bibliothèque de fichiers Apache https://archive.apache.org/dist/rocketmq/ Ici, nous choisissons la dernière version
2. Utilisez la commande wget pour télécharger
wget https://archive.apache.org/dist/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip
3. Commande de décompression du projet
unzip rocketmq-all-4.7.1-bin-release.zip -d /usr/local/rocketmq
4. Modifier la configuration de démarrage de RocketMQ
Modifiez les trois fichiers de configuration dans le répertoire /usr/local/rocketmq/rocketmq-all-4.7.1-bin-release/bin : runserver.sh, runbroker.sh, tools.sh, sinon une mémoire insuffisante sera signalée
5.runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
6.runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
7.outils.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m"
8. Démarrez le serveur de noms
Entrez le répertoire /usr/local/rocketmq/rocketmq-all-4.7.1-bin-release sous le répertoire d'installation de RocketMQ pour fonctionner
nohup sh bin/mqnamesrv &
9. Démarrer le courtier
Entrez également le répertoire /usr/local/rocketmq/rocketmq-all-4.7.1-bin-release sous le répertoire d'installation de RocketMQ pour effectuer des opérations.
nohup sh bin/mqbroker -n 192.168.44.128:9876 &
4. Installation de RocketMQ_dual maître double esclave cluster_docker
1.Prémisse
1. Diagramme de relation d'installation
2. Déploiement du service
3. Fonction de numéro de port
- Le port du canal VIP (10909) est généralement inutile
- Lorsque le port haute disponibilité HA est utilisé dans le cluster maître-esclave, créez une connexion socket entre le maître et l'esclave
4. Notes sur la configuration maître-esclave
3. Le nom du courtier doit être cohérent pour former une relation maître-esclave.
4. Le courtier Id est 0 et le rôle du courtier est ASYNC_MASTER ou SYNC_MASTER, qui représente le maître.
5. Le courtier n'est pas 0. et le brokerRole est SLAVE, qui représente l'esclave.
2.broker-master-un fichier de configuration
1. Ajoutez le répertoire de déploiement du cluster
mkdir -p /opt/rocketmq-docker/conf
2. Créez un fichier de configuration Broker-Master-A
vi /opt/rocketmq-docker/conf/broker-master-a.conf
3. Ajouter le contenu du fichier
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-un fichier de configuration
1. Créez un fichier de configuration courtier-esclave-a
vi /opt/rocketmq-docker/conf/broker-slave-a.conf
2. Ajouter le contenu du fichier
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
Fichier de configuration 4.broker-master-b
1. Créez le fichier de configuration Broker-Master-B
vi /opt/rocketmq-docker/conf/broker-master-b.conf
2. Ajouter le contenu du fichier
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
Fichier de configuration 5.broker-slave-b
1. Créez le fichier de configuration courtier-esclave-b
vi /opt/rocketmq-docker/conf/broker-slave-b.conf
2. Ajouter le contenu du fichier
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. Écrivez le fichier Docker-compose
1. Créez des données à accrocher dans le répertoire
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. Créez un fichier docker-compose
vi /opt/rocketmq-docker/docker-compose.yml
3. Ajouter le contenu du fichier
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. Démarrez le cluster Docker
1. Dans le répertoire où se trouve le fichier docker-compose, exécutez la commande pour démarrer
docker-compose up -d