RocketMQ 단일 머신 테스트 환경 구성하기

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 접속하여 콘솔에 접근합니다.

태그: docker RocketMQ MessageQueue

5월 29일 05:51에 게시됨