1. RocketMQ 네트워크 생성
Docker를 사용하여 RocketMQ 전용 네트워크를 생성합니다.
[root@mq011 ~]# docker network create rocketmq-custom
a2f5b7c8d9e01f23g4h5i6j7k8l9m0n1o2p3q4r5s6t7u8v9w0x1y2z3a4b5c6d7e8f9g0h1
[root@mq011 ~]# docker inspect rocketmq-custom
[
{
"Name": "rocketmq-custom",
"Id": "a2f5b7c8d9e01f23g4h5i6j7k8l9m0n1o2p3q4r5s6t7u8v9w0x1y2z3a4b5c6d7e8f9g0h1",
"Created": "2023-03-15T14:32:56.123456789+09:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "192.168.1.0/24",
"Gateway": "192.168.1.1"
}
]
},
"Internal": false,
"Attachable": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]
2. 디렉토리 및 설정 파일 준비
다음과 같은 디렉토리를 생성하고, 필요한 설정 파일을 작성합니다.
[root@mq011 ~]# mkdir -p /root/rocketmq/{broker,storage}/{log,data}
[root@mq011 ~]# mkdir /root/rocketmq/broker/config/
[root@mq011 ~]# cd /root/rocketmq/broker/config/
[root@mq011 config]# vim broker-config.properties
clusterName=TestCluster
brokerName=broker-b
brokerId=1
deleteWhen=00
fileReservedTime=24
brokerRole=SYNC_MASTER
flushDiskType=SYNC_FLUSH
brokerHostIp1=192.168.1.100
brokerHostIp2=10.0.0.1
3. Name Server 배포
Name Server 컨테이너를 실행합니다.
[root@mq011 config]# docker run -d --name namesrv-container -p 9876:9876 --network rocketmq-custom \
-v /root/rocketmq/namesrv/log:/var/log \
-v /root/rocketmq/namesrv/data:/data \
-e "MAX_MEMORY=50000000" \
rocketmqinc/rocketmq:4.9.3 sh mqnamesrv autoCreateTopicEnable=true
[root@mq011 config]# docker ps -f name=namesrv-container
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abcdef123456 rocketmqinc/rocketmq:4.9.3 "sh mqnamesrv auto..." 10 minutes ago Up 10 minutes 10909/tcp, 0.0.0.0:9876->9876/tcp, 10911/tcp namesrv-container
4. Broker 배포
Broker 컨테이너를 실행하며, Name Server 주소를 환경 변수로 지정합니다.
[root@mq011 config]# docker run -d --name broker-container -p 10911:10911 -p 10909:10909 --network rocketmq-custom \
-v /root/rocketmq/broker/log:/var/log \
-v /root/rocketmq/broker/data:/data \
-v /root/rocketmq/broker/config/broker-config.properties:/opt/rocketmq-4.9.3/conf/broker-config.properties \
-e "NAMESRV_ADDR=namesrv-container:9876" \
-e "MAX_MEMORY=100000000" \
rocketmqinc/rocketmq:4.9.3 sh mqbroker autoCreateTopicEnable=true -c /opt/rocketmq-4.9.3/conf/broker-config.properties
[root@mq011 config]# docker ps -f name=broker-container
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ghijkl789012 rocketmqinc/rocketmq:4.9.3 "sh mqbroker autoC..." 5 minutes ago Up 5 minutes 0.0.0.0:10909->10909/tcp, 9876/tcp, 0.0.0.0:10911->10911/tcp broker-container
5.RocketMQ Console 배포
Web 콘솔을 배포하여 관리 인터페이스를 제공합니다.
[root@mq011 config]# docker run -d --name console-container -p 8080:8080 --network rocketmq-custom \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv-container:9876" \
styletang/rocketmq-console-ng:latest
[root@mq011 config]# docker ps -f name=console-container
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
mnopqr345678 styletang/rocketmq-console-ng "sh -c 'java $JAVA..." 2 minutes ago Up 2 minutes 0.0.0.0:8080->8080/tcp console-container
6. 검증
웹 브라우저에서 http://localhost:8080 접속하여 콘솔에 접근합니다.