Docker 아래에 RocketMQ 배치하기 (1)

3853 단어
시나리오
RocketMQ는 분포식 메시지 대기열이기 때문에 각종 고성능, 고가용성 배치 방안이 있다.본고는 당분간 고성능과 고가용성 배치 방안을 고려하지 않는다.Docker를 사용하여 RocketMQ를 배포하는 경우이 문서는 Docker 단일 숙박 호스트에 배포됩니다.
  • nameserver: 메시지 서버는 결점과 메시지 서비스 정보를 이 결점에 등록하고 클라이언트도 이 결점에 연결하여 메시지 서비스 정보를 얻는다.
  • broker: 메시지 서비스 제공
  • rockermq-console를 통해 RocketMQ에 대한 모니터링 관리
  • mq 메시지 생산 클라이언트 배치
  • mq 메시지 소비 클라이언트 배치
  • Dockerfile 설명
    rocketmq 원본 프로젝트에는 자체 프로젝트인 rocketmq-externals가 있고 docker 렌즈를 생성하는 프로젝트인 rocketmq-docker가 있습니다.https://github.com/apache/rocketmq-externals/tree/master/rocketmq-dockernameserver 및 서버에 대한 배치는 이 프로젝트의 Dockerfile을 기반으로 합니다.
    nameserver 이미지 생성 스크립트
    # Start from a Java image.
    FROM java:8
    ARG version
    # Rocketmq version
    ENV ROCKETMQ_VERSION 4.2.0
    # Rocketmq home
    ENV ROCKETMQ_HOME  /opt/rocketmq-${ROCKETMQ_VERSION}
    WORKDIR  ${ROCKETMQ_HOME}
    RUN mkdir -p \
            /opt/logs \
            /opt/store \
            /opt/conf
    #         ,     rocketmq       ,         。
    ADD rocketmq-all-4.2.0-bin-release.zip rocketmq.zip
    RUN       unzip rocketmq.zip \
              && rm rocketmq.zip
    RUN chmod +x bin/mqnamesrv
    CMD cd ${ROCKETMQ_HOME}/bin && export JAVA_OPT=" -Duser.home=/opt" && sh mqnamesrv
    EXPOSE 9876
    VOLUME /opt/logs \
            /opt/store \
            /opt/conf
    

    브로커 렌즈 생성 스크립트
    FROM java:8
    # Rocketmq version
    ENV ROCKETMQ_VERSION 4.2.0
    # Rocketmq home
    ENV ROCKETMQ_HOME  /opt/rocketmq-${ROCKETMQ_VERSION}
    WORKDIR  ${ROCKETMQ_HOME}
    RUN mkdir -p \
            /opt/logs \
            /opt/store
    ADD rocketmq-all-4.2.0-bin-release.zip rocketmq.zip
    RUN       unzip rocketmq.zip \
              && rm rocketmq.zip
    RUN chmod +x bin/mqbroker
    CMD cd ${ROCKETMQ_HOME}/bin && export JAVA_OPT=" -Duser.home=/opt" && sh mqbroker -n namesrv:9876
    EXPOSE 10909 10911
    VOLUME /opt/logs \
            /opt/store
    

    console 미러 생성 스크립트
    Apache에서 소스를 시작한 후 콘솔의 코드 관리 주소입니다.https://github.com/apache/incubator-rocketmq-externals/tree/master/rocketmq-console엔지니어링 소스 코드 컴파일을 바탕으로 엔지니어링 패키지 rocketmq-console-ng-1.0.0을 생성합니다.jar (이 프로젝트는spring-boot 프로젝트입니다.jar에 servlet 용기가 내장되어 있습니다.)
    FROM java:8
    VOLUME /tmp
    ADD rocketmq-console-ng-1.0.0.jar app.jar
    RUN sh -c 'touch /app.jar'
    ENV JAVA_OPTS=""
    ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -jar /app.jar" ]
    

    프로덕션 및 메시징 미러링
    이 두 개의 거울은 비교적 간단하다. 공정 자체는main으로 실행되는java공정이다.이 기사를 참조하십시오.https://blog.csdn.net/liulianglin/article/details/51787459
    FROM java:8
    VOLUME /tmp
    #ADD mq-consumer.jar app.jar
    ADD mq-producer.jar app.jar
    RUN sh -c 'touch /app.jar'
    ENV JAVA_OPTS=""
    ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -jar /app.jar" ]
    

    docker-mopose
    version: '2'
    services:
      namesrv:
        image: going/rocketmq-namesrv:4.2.0
        ports:
          - 9876:9876
        volumes:
          - "E:/rocketmq/namesrv/master/logs:/opt/logs"
          - "E:/rocketmq/namesrv/master/store:/opt/store"
      broker:
        image: going/rocketmq-broker:4.2.0
        ports:
          - 10909:10909
          - 10911:10911
        volumes:
          - "E:/rocketmq/broker/master-1/logs:/opt/logs"
          - "E:/rocketmq/broker/master-1/store:/opt/store"
        links:
          - namesrv:namesrv
      console:
        image: styletang/rocketmq-console-ng:latest
        ports:
         - "8080:8080"
        links:
         - namesrv:namesrv
        environment:
         JAVA_OPTS: -Drocketmq.config.namesrvAddr=namesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false
      producer:
        image: going/rocketmq-producer:4.1.0
        links:
         - namesrv:namesrv
      consumer:
        image: going/rocketmq-consumer:4.1.0
        links:
         - namesrv:namesrv     
    

    docker-compose 실행을 통해 console 인터페이스를 열고 실행 상황을 보기http://127.0.0.1:8080/#/

    좋은 웹페이지 즐겨찾기