Déploiement et installation du cluster de réplication asynchrone RocketMQ

Code anti-contrefaçon: si vous allez à Lingyun Zhi à l'avenir, osez rire Huang Chao et son mari.


1. Plusieurs modes de déploiement RacketMQ

Les méthodes de déploiement de cluster RocketMQ Broker sont principalement les suivantes: (l'esclave n'est pas accessible en écriture, mais lisible)
1.1. Un seul maître
est plus risqué. Une fois que le courtier redémarre ou tombe en panne, l'ensemble du service ne sera pas disponible. Utilisation environnementale.
1.2 En mode multi-maître,
un cluster n'a pas d'esclave et tous sont maîtres, comme 2 maîtres ou 3 maîtres.

Avantages: une configuration simple, un seul arrêt du maître ou une maintenance de redémarrage n'a aucun impact sur l'application. Lorsque la configuration du disque est RAID10, même si la machine est en panne et irrécupérable, le disque RAID10 est très fiable et le message ne sera pas perdu (le clignotement asynchrone est perdu) Pour une petite quantité de messages, un ne sera pas perdu si vous synchronisez le disque). La plus haute performance.

Inconvénients: pendant le temps d'arrêt d'une seule machine, les messages non consommés sur cette machine ne peuvent pas être abonnés tant que la machine n'est pas restaurée, et la nature en temps réel des messages sera affectée.

# Démarrez d'abord NameServer, par exemple, l'adresse IP de la machine est: "10.162.23.70:9876; 10.162.23.71:9876"
# nohup ./bin/mqnamesrv> / dev / null 2> & 1 & 
# Sur la machine A, démarrez le premier Master
# nohup ./bin/mqbroker -n "10.162.23.70:9876;10.162.23.71:9876" -c ./conf/2m-noslave/broker-a.properties> / dev / null 2> & 1 & 
# Sur la machine B, Démarrez le deuxième Master
# nohup ./bin/mqbroker -n “10.162.23.70:9876; 10.162.23.71:9876” -c ./conf/2m-noslave/broker-b.properties> / dev / null 2> & 1 & 
1.3 Mode multi-maître et multi-esclave, réplication asynchrone
Chaque maître est configuré avec un esclave, il existe plusieurs paires maître-esclave, HA adopte une réplication asynchrone, le maître et la sauvegarde ont un court délai de message, en millisecondes.

Avantages: même si le disque est endommagé, la perte de message est très faible et le message en temps réel ne sera pas affecté, car après l'arrêt du maître, les consommateurs peuvent toujours consommer depuis l'esclave, ce processus est transparent pour l'application. Aucune intervention humaine n'est requise. Les performances sont presque les mêmes que le mode multi-maître.

 Inconvénients: Master est en panne, le disque est endommagé et une petite quantité de messages sera perdue.

# Démarrez d'abord NameServer, par exemple, l'adresse IP de la machine est: "10.162.23.70:9876; 10.162.23.71:9876"
# nohup ./bin/mqnamesrv> / dev / null 2> & 1 & 
# Sur la machine A, démarrez le premier Master
# nohup ./bin/mqbroker -n “10.162.23.70:9876;10.162.23.71:9876” -c ./conf/2m-2s-async/broker-a.properties> / dev / null 2> & 1 & 
# sur la machine B, démarrez le deuxième Master
# nohup ./bin/mqbroker -n “10.162.23.70:9876; 10.162.23.71:9876” -c ./conf/2m-2s-async/broker-b.properties> / dev / null 2> & 1 &  #Sur la
machine C, démarrez le premier esclave
nohup ./bin/mqbroker -n “10.162.23.70:9876;10.162.23.71:9876” -c ./conf/2m-2s-async/broker- as.properties> / dev / null 2> & 1 & 
# Sur la machine D, démarrez le deuxième esclave
# nohup ./bin/mqbroker -n “10.162.23.70:9876; 10.162.23.71:9876” -c ./conf/ 2m-2s-async / broker-bs.properties> / dev / null 2> & 1 & 
1.4 Mode maître multiple et esclave multiple, double écriture synchrone
Chaque maître est configuré avec un esclave, il existe plusieurs paires maître-esclave, HA utilise le mode d'écriture double synchrone, le maître et la sauvegarde sont écrits avec succès et le succès est renvoyé à l'application.

Avantages: Il n'y a pas de point unique de données et de service, pas de retard de message lorsque le maître est en panne, et la disponibilité du service et la disponibilité des données sont très élevées

Inconvénients: les performances sont légèrement inférieures à celles du mode de réplication asynchrone, environ 10% inférieures, et la RT pour l'envoi d'un seul message est légèrement supérieure. À l'heure actuelle, une fois la machine principale arrêtée, la machine de secours ne peut pas être automatiquement commutée sur la machine hôte et la fonction de commutation automatique sera prise en charge ultérieurement.

# Démarrez d'abord NameServer, par exemple, l'adresse IP de la machine est: "10.162.23.70:9876; 10.162.23.71:9876"
# nohup ./bin/mqnamesrv> / dev / null 2> & 1 & 
# Sur la machine A, démarrez le premier Master
# nohup ./bin/mqbroker -n “10.162.23.70:9876;10.162.23.71:9876” -c ./conf/2m-2s-sync/broker-a.properties> / dev / null 2> & 1 & 
# sur la machine B, démarrez le deuxième Master
# nohup ./bin/mqbroker -n “10.162.23.70:9876; 10.162.23.71:9876” -c ./conf/2m-2s-sync/broker-b.properties> / dev / null 2> & 1 & 
# Sur la machine C, démarrez le premier esclave
# nohup ./bin/mqbroker -n “10.162.23.70:9876;10.162.23.71:9876” -c ./conf/2m-2s-sync/broker -as.properties> / dev / null 2> & 1 & 
# Sur la machine D, démarrez le deuxième esclave
# nohup ./bin/mqbroker -n "10.162.23.70:9876; 10.162.23.71:9876" -c ./conf /2m-2s-sync/broker-bs.properties> / dev / null 2> & 1 & 

Remarque: L'association
Broker et Slave ci-dessus est effectuée en spécifiant le même paramètre brokerName. Le BrokerId du maître doit être 0 et le BrokerId de l'esclave doit être un nombre supérieur à 0. Plusieurs esclaves peuvent être montés sous un autre maître. Plusieurs esclaves sous le même maître peuvent être distingués en spécifiant différents BrokerId.
En plus de cela, le serveur de noms nécessite également un clustering. Notre environnement adopte le mode de réplication asynchrone de plusieurs serveurs de noms, plusieurs maîtres et plusieurs esclaves

2. Préparation environnementale

PIA] ~ $ E} ~ 1J ~ MIBSVMTT ~ 8R.png

Rôle
Nom d'hôte IP Port OS La configuration
Nameserver1 FACTURE-HX-01 10.162.23.70 9876 Redhat7.2 16C32G100G
Nameserver2 FACTURE-HX-02 10.162.23.71 9876 Redhat7.2 16C32G100G
Master1 FACTURE-HX-01 10.162.23.70 10911 10922 Redhat7.2 16C32G100G
Master2 FACTURE-HX-02 10.162.23.71 10911 10922 Redhat7.2 16C32G100G
Esclave1 FACTURE-HX-03 10.162.23.72 10911 10922 Redhat7.2 16C32G100G
Esclave2 FACTURE-HX-04 10.162.23.73 10911 10922 Redhat7.2 16C32G100G

Préparation de Moosefs avant l'installation:
# Progiciel RocketMQ: alibaba-rocketmq-3.2.6.tar.gz
# JDK 1.7.79
# SELINUX: désactiver
# Chemin d'installation: / opt / server / rocketmq
# Chemin du journal: / opt / var / logs / rocketmq

# Tous les hôtes de configuration d'hôte
# cat / etc / hosts
10.162.23.70 INVOICE-HX-01
10.162.23.71 INVOICE-HX-02
10.162.23.72 INVOICE-HX-03
10.162.23.72 INVOICE-HX-04

Remarque: la résolution de l'hôte doit être le véritable nom d'hôte

3. Installation du cluster de réplication asynchrone multiple M RocketMQ multiple

3.1.Installation JDK
# Installation sur tous les rôles
# Upload jdk-7u79-linux-x64.gz
# mkdir / opt / server -p
# tar zvxf jdk-7u79-linux-x64.gz -C / opt / server

# 修改 / etc / profile
# vi / etc / profile
# jdk
JAVA_HOME = / opt / server / jdk1.7.0_79
CLASSPATH = $ JAVA_HOME / jre / lib / rt.jar :.
PATH = $ JAVA_HOME / bin: $ PATH
export JAVA_HOME PATH CLASSPATH

# source / etc / profile
# 检查 java 版本 :
# java -version
version java "1.7.0_79"
Java (TM) SE Runtime Environment (build 1.7.0_79-b06)
Java HotSpot (TM) 64-Bit Server VM (build 20.45 -b01, mode mixte)

3.2.RocketMQ extraction d' installation
installation de # sur tous les rôles
# upload-rocketmq-3.2.6.tar.gz alibaba
# tar zxvf alibaba-rocketmq-3.2.6.tar.gz
# alibaba-rocketmq mv / opt / serveur / rocketmq
# Installation Le fichier sous le package bin n'a pas de permission d'exécution
# chmod + x / opt / server / rocketmq / bin / *

# Créer un répertoire de stockage de données
# mkdir -p / opt / data / rocketmq / data / store / commitlog
# Créer un répertoire de journaux
# mkdir -p / opt / var / logs / rocketmq /
# Modifier le répertoire de journaux
# cd / opt / server / rocketmq / conf
# sed -i # $ {user.home} / logs # / opt / var / logs / rocketmq # g '* .xml
# Afficher la modification
# grep logs * .xml
3.3.RocketMQ Nameserver startup
# nohup / opt / server / rocketmq / bin / mqnamesrv &
# verify
# cat nohup.out
Le succès du démarrage du serveur de noms.
# netstat -anlp | grep 9876
tcp 0 0 ::: 9876 ::: * LISTEN 23750 / java

# Boot start
# cat /etc/rc.local
# RocketMQ nameserver
nohup / opt / server / rocketmq / bin / mqnamesrv &
3.4.RocketMQ Master1 Slave1
# Modify master1 (10.162.23.70) configuration
# vim / opt / server / rocketmq / conf /2m-2s-async/broker-a.properties
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
namesrvAddr = 10.162.23.70: 9876; 10.162.23.71:9876
defaultTopicQueueNums = 4
autoCreateTopicEnable = true
autoCreateSubscriptionGroup = true
listenW = true
deleteP 04
fileReservedTime = 120
mapedFileSizeCommitLog = 1073741824
mapedFileSizeConsumeQueue = 50000000
destroyMapedFileIntervalForcably = 120000
redeleteHangedFileInterval = 120000
diskMaxUsedSpaceRatio = 88

storePathRootDir = / opt / data / rocketmq / data / magasin
storePathCommitLog = / opt / data / rocketmq / data / store / commitlog
MaxMessageSize = 65536
flushCommitLogLeastPages = 4
flushConsumeQueueLeastPages = 2
flushCommitLogThoroughInterval = 10000
flushConsumeQueueThoroughInterval = 60000

checkTransactionMessageEnable = false
sendMessageThreadPoolNums = 128
pullMessageThreadPoolNums = 128

brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH

# 启动 master1
# nohup / opt / server / rocketmq / bin / mqbroker -c /opt/server/rocketmq/conf/2m-2s-async/broker-a.properties &
# netstat -anlp | grep java        
tcp 0 0 :: : 10911 ::: * LISTEN 24220 / java         
tcp 0 0 ::: 10912 ::: * LISTEN 24220 / java

# Démarrage (le serveur de noms doit être démarré, il est recommandé de démarrer manuellement)
# cat /etc/rc.local
# RocketMQ master-a
nohup / opt / server / rocketmq / bin / mqbroker -c / opt / server / rocketmq / conf / 2m -2s-async / broker-a.properties &

# Modifier la configuration de slave1 (10.162.23.72)
# vim /opt/server/rocketmq/conf/2m-2s-async/broker-a.properties
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 1
namesrvAddr = 10.162.23.70: 9876; 10.162.23.71:9876
defaultTopicQueueNums. 4 =
autoCreateTopicEnable true =
autoCreateSubscriptionGroup = true
la listenPort = 10911
deleteWhen = 04
fileReservedTime = 120
mapedFileSizeCommitLog = 1073741824
mapedFileSizeConsumeQueue = 50000000
destroyMapedFileIntervalForcibly = 120000
redeleteHangedFileInterval = 120000
diskMaxUsedSpaceRatio = 88

storePathRootDir = / opt / data / rocketmq / data / magasin
storePathCommitLog = / opt / data / rocketmq / data / store / commitlog
MaxMessageSize = 65536
flushCommitLogLeastPages = 4
flushConsumeQueueLeastPages = 2
flushCommitLogThoroughInterval = 10000
flushConsumeQueueThoroughInterval = 60000

checkTransactionMessageEnable = false
sendMessageThreadPoolNums = 128
pullMessageThreadPoolNums = 128

brokerRole = SLAVE
flushDiskType = ASYNC_FLUSH

# Start salve1
# nohup / opt / server / rocketmq / bin / mqbroker -c /opt/server/rocketmq/conf/2m-2s-async/broker-a.properties &

# netstat -anlp | grep java
tcp 0 0 ::: 10911 ::: * LISTEN 23774 / java         
tcp 0 0 ::: 10912 ::: * LISTEN 23774 / java

# Démarrage (le serveur de noms doit être démarré, il est recommandé de démarrer manuellement)
# cat /etc/rc.local
# RocketMQ slave-a
nohup / opt / server / rocketmq / bin / mqbroker -c / opt / server / rocketmq / conf / 2m -2s-async / broker-a.properties &

3.5.RocketMQ Master2 Slave2
# Modifier la configuration master2 (10.162.23.71)
# vim /opt/server/rocketmq/conf/2m-2s-async/broker-b.properties
brokerClusterName = DefaultCluster
brokerName = broker-b
brokerId = 0
namesrvAddr = 10.162 .23.70: 9876; 10.162.23.71: 9876
defaultTopicQueueNums 4 =.
autoCreateTopicEnable true =
autoCreateSubscriptionGroup = true
la listenPort = 10911
deleteWhen = 04
fileReservedTime = 120
mapedFileSizeCommitLog = 1073741824
mapedFileSizeConsumeQueue = 50000000
destroyMapedFileIntervalForcibly = 120000
redeleteHangedFileInterval = 120000
diskMaxUsedSpaceRatio = 88

storePathRootDir = / opt / data / rocketmq / data / magasin
storePathCommitLog = / opt / data / rocketmq / data / store / commitlog
MaxMessageSize = 65536
flushCommitLogLeastPages = 4
flushConsumeQueueLeastPages = 2
flushCommitLogThoroughInterval = 10000
flushConsumeQueueThoroughInterval = 60000

checkTransactionMessageEnable = false
sendMessageThreadPoolNums = 128
pullMessageThreadPoolNums = 128

brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH

# Démarrer master2
# nohup / opt / server / rocketmq / bin / mqbroker -c /opt/server/rocketmq/conf/2m-2s-async/broker-b.properties &

# 验证
# cat nohup.out
La réussite du démarrage du serveur de noms.
charger le fichier de propriétés de configuration OK, /opt/server/rocketmq/conf/2m-2s-sync/broker-b.properties
Le démarrage du courtier [broker-a, 10.162.23.71:10911] a réussi.
# netstat -anlp | grep java        
tcp 0 0 ::: 10911 ::: * LISTEN 24220 / java         
tcp 0 0 ::: 10912 ::: * LISTEN 24220 / java

# Démarrage (le serveur de noms doit être démarré, il est recommandé de démarrer manuellement)
# cat /etc/rc.local
# RocketMQ master-b
nohup / opt / server / rocketmq / bin / mqbroker -c / opt / server / rocketmq / conf / 2m -2s-async / broker-b.properties &

# Modifier la configuration de slave2 (10.162.23.73)
# vim /opt/server/rocketmq/conf/2m-2s-async/broker-b.properties
brokerClusterName = DefaultCluster
brokerName = broker-b
brokerId = 1
namesrvAddr = 10.162.23.70: 9876; 10.162.23.71:9876
defaultTopicQueueNums. 4 =
autoCreateTopicEnable true =
autoCreateSubscriptionGroup = true
la listenPort = 10911
deleteWhen = 04
fileReservedTime = 120
mapedFileSizeCommitLog = 1073741824
mapedFileSizeConsumeQueue = 50000000
destroyMapedFileIntervalForcibly = 120000
redeleteHangedFileInterval = 120000
diskMaxUsedSpaceRatio = 88

storePathRootDir = / opt / data / rocketmq / data / magasin
storePathCommitLog = / opt / data / rocketmq / data / store / commitlog
MaxMessageSize = 65536
flushCommitLogLeastPages = 4
flushConsumeQueueLeastPages = 2
flushCommitLogThoroughInterval = 10000
flushConsumeQueueThoroughInterval = 60000

checkTransactionMessageEnable = false
sendMessageThreadPoolNums = 128
pullMessageThreadPoolNums = 128

brokerRole = SLAVE
flushDiskType = ASYNC_FLUSH

# Start salve1
# nohup / opt / server / rocketmq / bin / mqbroker -c /opt/server/rocketmq/conf/2m-2s-async/broker-b.properties &

# 验证
# cat nohup.out
fichier de propriétés de configuration de chargement OK, /opt/server/rocketmq/conf/2m-2s-sync/broker-b.properties
Le démarrage du courtier [broker-b, 10.162.23.73:10911] a réussi. et le serveur de noms est 10.162.23.70:9876;10.162.23.71:9876
# netstat -anlp | grep java
tcp 0 0 ::: 10911 ::: * LISTEN 23774 / java         
tcp 0 0 ::: 10912 ::: * LISTEN 23774 /Java

# Démarrage (le serveur de noms doit être démarré, il est recommandé de démarrer manuellement)
# cat /etc/rc.local
# RocketMQ slave-b
nohup / opt / server / rocketmq / bin / mqbroker -c / opt / server / rocketmq / conf / 2m -2s-async / broker-b.properties &

Remarque: La méthode de kill java process est directement utilisée pour arrêter le service

3.6 Interface du serveur de noms
RocketMQ 10.162.23.70:9876; 10.162.23.71:9876


Je suppose que tu aimes

Origine blog.51cto.com/yw666/2486518
conseillé
Classement