Prefacio
Se reveló que la versión baja del fastjson de Ali (<= 1.2.68) tiene vulnerabilidades de seguridad, y RocketMQ 4.7.0 usa fastjson 1.2.62, por lo que es necesario actualizar RocketMQ a RocketMQ 4.7.1 (fastjson 1.2.69).
Este artículo describe el proceso de instalación de RocketMQ 4.7.1 en CentOS7, que solo se utiliza como entorno de desarrollo y prueba:
- Implementación independiente, tanto el servidor de nombres como el intermediario se instalan en un servidor;
- Se redujo el tamaño de JVM predeterminado de RocketMQ;
- No se configuran procesos daemon ni de inicio automático.
Proceso de instalación
OpenJDK 8 se ha instalado y configurado en el servidor JAVA_HOME
.
Descarga y descomprime RocketMQ
Busque el enlace para descargar RocketMQ 4.7.1 en el sitio web oficial de RocketMQ, descargue y descomprima RocketMQ:
# 下载
wget http://ftp.cuhk.edu.hk/pub/packages/apache.org/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip
# 解压
unzip rocketmq-all-4.7.1-bin-release.zip
# 安装到/usr/local/rocketmq
mv rocketmq-all-4.7.1-bin-release /usr/local
ln -s /usr/local/rocketmq-all-4.7.1-bin-release /usr/local/rocketmq
Reducir el tamaño de JVM de RocketMQ
La JVM predeterminada de RocketMQ es demasiado grande para usarse en el entorno de desarrollo y prueba, y es necesario reducir el tamaño de la JVM.
En el directorio de instalación de RocketMQ (/ usr / local / rocketmq en este ejemplo), busque la configuración del parámetro JVM en el script sh:
find . -name '*.sh' | xargs egrep 'Xms'
Es necesario modificar los parámetros de JVM de los siguientes scripts sh:
bin/runserver.sh
bin/runbroker.sh
bin/tools.sh
Recuerde hacer una copia de seguridad del script correspondiente antes de modificarlo. El tamaño específico de la JVM se establece de acuerdo con la situación real.
- bin / runserver.sh
antes de arreglar:
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
Después de la modificación:
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
- bin / runserver.sh
antes de arreglar:
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
Después de la modificación:
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
-Antes de
modificar bin / tools.sh :
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
Después de la modificación:
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
Iniciar servidor de nombres
# 后台启动
nohup sh bin/mqnamesrv >/dev/null 2>&1 &
El puerto predeterminado de Name Server es 9876. Ejecute sh bin / mqnamesrv -p para ver los elementos de configuración de Name Server y comience especificando el archivo de configuración mediante -c namesrv.conf;
La ruta de registro predeterminada de RocketMQ es `~ / logs / rocketmqlogs /` `;
Puede guardar el comando de inicio del servidor de nombres como un script para facilitar el siguiente inicio.
Iniciar Broker
Debe especificar el servidor de nombres al que desea conectarse al iniciar Broker:
# 后台启动
nohup sh bin/mqbroker -n localhost:9876 >/dev/null 2>&1 &
Puede guardar el comando de inicio del Broker como un script para facilitar el próximo inicio.
Ver el proceso de RocketMQ
ps -ef | grep -v grep | grep rocketmq
Prueba RocketMQ
Prueba de envío y recepción de mensajes
Utilice los ejemplos de consumidores y productores de mensajes de RocketMQ para probar el envío y la recepción de mensajes:
export NAMESRV_ADDR=localhost:9876
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
Cerrar RocketMQ
Cerrar corredor
sh bin/mqshutdown broker
Puede guardar el comando de cierre del Broker como un script para facilitar el próximo cierre.
Cerrar servidor de nombres
sh bin/mqshutdown namesrv
El corredor debe cerrarse antes de cerrar el servidor de nombres;
Puede guardar el comando para cerrar el servidor de nombres como un script para facilitar el próximo apagado.
Modificar el puerto del servidor de nombres
El puerto predeterminado de RocketMQ Name Server es 9876. Puede modificar el puerto de Name Server mediante los siguientes métodos:
- Agregue un nuevo archivo de configuración del servidor de nombres namesrv.conf, guarde el contenido:
listenPort=10076
- Especifique el archivo de configuración al iniciar el servidor de nombres:
nohup sh bin/mqnamesrv -c namesrv.conf >/dev/null 2>&1 &
- Ver el proceso de RocketMQ:
ps -ef | grep rocketmq
- Verifique el número de puerto del servidor de nombres RocketMQ:
netstat -tnlp | grep <nameserver_pid>
- El corredor debe especificar la nueva dirección (puerto) del servidor de nombres después de la modificación.
Instalar la consola RocketMQ
Clone el proyecto rocketmq-externals y compile rocketmq-console.
Ejemplo de comando:
git clone https://github.com/apache/rocketmq-externals.git
cd rocketmq-externals/rocketmq-console
mvn clean package -Dmaven.test.skip=true
Se target/rocketmq-console-ng*.jar
colocará en el directorio de instalación de RocketMQ (/ usr / local / rocketmq en este ejemplo).
Cree un script para iniciar la consola RocketMQ en el directorio de instalación de RocketMQ para iniciar la consola RocketMQ:
nohup java -jar rocketmq-console-ng*.jar --server.port=8080 --rocketmq.config.namesrvAddr=localhost:9876 > /dev/null 2>&1 &
De forma predeterminada, la consola RocketMQ no requiere una contraseña para iniciar sesión. Consulte la documentación de RocketMQ para la configuración.
Ver:
Solución de problemas
Pregunta 1: Inicio Name Server
y Broker
error, o cuando la prueba Please set the JAVA_HOME variable in your environment, We need java(x64)!
pero el sistema ya está instalado OpenJDK8, y se ha configurado JAVA_HOME
.
Solución: Ejecute which java
para comprobar la ruta de Java, por ejemplo /usr/bin/java
.
Modificar bin/runserver.sh
y bin/runbroker.sh
, y bin/tools.sh
, comente la verificación de JAVA_HOME
la declaración y especificar explícitamente la JAVA路
ruta:
#[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java
#[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java
#[ ! -e "$JAVA_HOME/bin/java" ] && error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)!"
#export JAVA_HOME
export JAVA="/usr/bin/java"
Documentos de referencia
- Explicación detallada del tutorial de instalación e implementación de RocketMQ
- Instrucciones detalladas de instalación de RocketMQ
Original de: http://suo.im/6197rC
Autor: nklinsirui