用docker compose构建rocketmq集群的几个问题

用docker compose构建rocketmq集群的几个问题,docker,docker-compose,rocketmq,Docker,Docker Compose,Rocketmq,我想在我的机器上构建一个rocketmq集群,它的模式是主从模式,由docker编写 同时我只能启动一个经纪人。也就是说当我启动主、从退出时,相反的也是,能有人帮我吗 这是我的docker-compose.yml version: '2' services: namesrv: image: rocketmqinc/rocketmq:4.5.0-alpine ports: - 9876:9876 volumes: - "/data/namesrv

我想在我的机器上构建一个rocketmq集群,它的模式是主从模式,由docker编写

同时我只能启动一个经纪人。也就是说当我启动主、从退出时,相反的也是,能有人帮我吗

这是我的docker-compose.yml

version: '2'
services:
  namesrv:
    image: rocketmqinc/rocketmq:4.5.0-alpine
    ports:
      - 9876:9876
    volumes:
      - "/data/namesrv/master/logs:/opt/logs"
      - "/data/namesrv/master/store:/opt/store"
    environment:
      MAX_POSSIBLE_HEAP: 100000000
    command: sh mqnamesrv
  broker-a-m:
    image: rocketmqinc/rocketmq:4.5.0-alpine
    ports:
      - 10909:10909
      - 10911:10911
    volumes:
      - "/data/broker-a/logs:/opt/logs"
      - "/data/broker-a/store:/opt/store"
      - "/data/broker-a/conf:/opt/conf"
    links:
      - namesrv:namesrv
    environment:
      NAMESRV_ADDR: namesrv:9876
    command: sh mqbroker -c /opt/conf/broker.conf
  broker-a-s:
    image: rocketmqinc/rocketmq:4.5.0-alpine
    ports:
      - 11909:10909
      - 11911:10911
    volumes:
      - "/data/broker-a-slave/logs:/opt/logs"
      - "/data/broker-a-slave/store:/opt/store"
      - "/data/broker-a-slave/conf:/opt/conf"
    links:
      - namesrv:namesrv
    environment:
      NAMESRV_ADDR: namesrv:9876
    command: sh mqbroker -c /opt/conf/broker.conf
从代理配置

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 1
deleteWhen = 04
fileReservedTime = 48
listenPort = 10911

brokerRole = SLAVE
flushDiskType = ASYNC_FLUSH
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
listenPort = 10911
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
从代理配置

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 1
deleteWhen = 04
fileReservedTime = 48
listenPort = 10911

brokerRole = SLAVE
flushDiskType = ASYNC_FLUSH
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
listenPort = 10911
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
代理从机启动时,主机写入日志并退出

==========日志=======

broker-a-m_1  | The broker[broker-a, broker-a-m:10911] boot success. serializeType=JSON and name server is namesrv:9876
broker-a-m_1  | Killed
compose.cli.verbose_proxy.proxy_callable: docker wait <- ('4d69ef2838f4f719e9cbf43c7cfc6d79382d356ecba88b610278eea11b9d0bfd')
compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- ('4d69ef2838f4f719e9cbf43c7cfc6d79382d356ecba88b610278eea11b9d0bfd')
urllib3.connectionpool._make_request: http://localhost:None "POST /v1.22/containers/4d69ef2838f4f719e9cbf43c7cfc6d79382d356ecba88b610278eea11b9d0bfd/wait HTTP/1.1" 200 32
compose.cli.verbose_proxy.proxy_callable: docker wait -> {'Error': None, 'StatusCode': 137}
rockermq_broker-a-m_1 exited with code 137
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.22/containers/4d69ef2838f4f719e9cbf43c7cfc6d79382d356ecba88b610278eea11b9d0bfd/json HTTP/1.1" 200 None
compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {'AppArmorProfile': '',
 'Args': ['mqbroker', '-c', '/opt/conf/broker.conf'],
 'Config': {'AttachStderr': False,
            'AttachStdin': False,
            'AttachStdout': False,
            'Cmd': ['sh', 'mqbroker', '-c', '/opt/conf/broker.conf'],
            'Domainname': '',
            'Entrypoint': None,
            'Env': ['NAMESRV_ADDR=namesrv:9876',
                    'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin',
...
broker-a-m|代理[broker-a,broker-a-m:10911]启动成功。serializeType=JSON,名称服务器为namesrv:9876
经纪人被杀
compose.cli.verbose_proxy.proxy_可调用:docker wait{'AppArmorProfile':'',
'Args':['mqbroker','-c','/opt/conf/broker.conf'],
'Config':{'AttachStderr':False,
“AttachStdin”:错误,
“AttachStdout”:错误,
'Cmd':['sh','mqbroker','-c','/opt/conf/broker.conf'],
“域名”:“,
“入口点”:无,
“Env”:[“NAMESRV_ADDR=NAMESRV:9876',
'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin',
...

您是否有一些已停止容器的日志?
docker ps-a
将显示所有容器。使用
docker logs
将显示特定容器的日志。@Mathias,我发布了日志您是否在vm中运行docker?您的vm是否有足够的RAM?(请参见此处:)为什么您需要两个端口作为代理?我已经看到了3个端口的示例,即11909、11911、11913…但是它们的文档只有一个端口(11911),所以我很困惑。。