Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

求助 单机通过docker-compose部署5.1.3 #88

Open
cyjaysong opened this issue Aug 14, 2023 · 10 comments
Open

求助 单机通过docker-compose部署5.1.3 #88

cyjaysong opened this issue Aug 14, 2023 · 10 comments
Labels
help wanted Extra attention is needed

Comments

@cyjaysong
Copy link

使用 docker-compose 在docker 部署5.1.3的namesrv 和 broker 用于开发测试,都启动正常了,但是sdk愣是连接不上,搜了一下,需要启动代理,但是在broker启动时添加了 --enable-proxy 还是不能正常连接,有朋友可以指导一下吗?或者有朋友有现成的docker-compose.yml文件么

@francisoliverlee
Copy link
Member

can you share you docker-compose.yaml ?

@francisoliverlee francisoliverlee added the help wanted Extra attention is needed label Aug 19, 2023
@cyjaysong
Copy link
Author

cyjaysong commented Aug 19, 2023

@francisoliverlee

version: "3"
services:
  #Service for nameserver
  namesrv:
    container_name: RocketMQ-namesrv
    image: apache/rocketmq:5.1.3
    command: sh mqnamesrv
    restart: always
    ports:
      - 9876:9876
    volumes:
      - ./namesrv/logs:/home/rocketmq/logs


  #Service for broker
  broker:
    container_name: RocketMQ-broker
    links:
      - namesrv
    image: apache/rocketmq:5.1.3
    command: sh mqbroker --enable-proxy -c /opt/rocketmq/conf/broker.conf
    restart: always
    ports:
      - 8080:8080
      - 10909:10909
      - 10911:10911
      - 10912:10912
    environment:
      - NAMESRV_ADDR=namesrv:9876
    volumes:
      - ./broker/logs:/home/rocketmq/logs
      - ./broker/store:/home/rocketmq/store
      - ./broker/conf:/opt/rocketmq/conf

@huangzulin
Copy link

set broker dir permission @cyjaysong

this issues

@cyjaysong
Copy link
Author

set broker dir permission @cyjaysong

this issues

broker 正常启动了的只是,客户端无法链接

@peng-huang-ch
Copy link

peng-huang-ch commented Sep 14, 2023

docker-compose.yml

version: "3"
services:
  #Service for nameserver
  rmqnamesrv:
    image: apache/rocketmq:5.1.3
    container_name: rmqnamesrv
    ports:
      - 9876:9876
    environment:
      JAVA_OPT_EXT: "-server -Xms512M -Xmx512M -Xmn128m"
    volumes:
      - ./data/namesrv/logs:/home/rocketmq/logs
    command: sh mqnamesrv
    restart: unless-stopped

  rmqbroker:
    image: apache/rocketmq:5.1.3
    container_name: rmqbroker
    depends_on:
      - rmqnamesrv
    ports:
      - 10909:10909
      - 10911:10911
      - 10912:10912
    environment:
      NAMESRV_ADDR: "rmqnamesrv:9876"
      JAVA_OPTS: " -Duser.home=/opt"
      JAVA_OPT_EXT: "-server -Xms512M -Xmx512M -Xmn128m"
    volumes:
      - ./data/broker/logs:/home/rocketmq/logs
      - ./data/broker/store:/home/rocketmq/store
      - ./conf/broker.conf:/opt/conf/broker.conf
    command: sh mqbroker -c /opt/conf/broker.conf 

  rmqproxy:
    image: apache/rocketmq:5.1.3
    container_name: rmqproxy
    depends_on:
      - rmqnamesrv
    ports:
      - 8081:8081
    environment:
      NAMESRV_ADDR: "rmqnamesrv:9876"
      JAVA_OPTS: " -Duser.home=/opt"
      JAVA_OPT_EXT: "-server -Xms512M -Xmx512M -Xmn128m"
    volumes:
      - ./data/proxy/logs:/home/rocketmq/logs
      - ./data/proxy/store:/home/rocketmq/store
      - ./conf/proxy.conf:/opt/conf/proxy.conf
    command: sh mqbroker -c /opt/conf/proxy.conf --enable-proxy
  
  dashbord:
    image: apacherocketmq/rocketmq-dashboard:1.0.0
    ports:
      - 18080:8080
    environment:
        JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false -Duser.timezone='Asia/Shanghai'"
    depends_on:
      - rmqnamesrv

broker.conf & proxy.conf

# 所属集群名字
brokerClusterName=rmqnamesrv

# broker 名字,注意此处不同的配置文件填写的不一样,如果在 broker-a.properties 使用: broker-a,
# 在 broker-b.properties 使用: broker-b
brokerName=broker-a

# 0 表示 Master,> 0 表示 Slave
brokerId=0

# nameServer地址,分号分割
#namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
namesrvAddr=rmqnamesrv:9876


# 启动IP,如果 docker 报 com.alibaba.rocketmq.remoting.exception.RemotingConnectException: connect to <192.168.0.120:10909> failed
# 解决方式1 加上一句 producer.setVipChannelEnabled(false);,解决方式2 brokerIP1 设置宿主机IP,不要使用docker 内部IP
brokerIP1=192.168.31.149

# 在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4

# 是否允许 Broker 自动创建 Topic,建议线下开启,线上关闭 !!!这里仔细看是 false,false,false
autoCreateTopicEnable=true

# 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true

# Broker 对外服务的监听端口
listenPort=10911

# 删除文件时间点,默认凌晨4点
deleteWhen=04

# 文件保留时间,默认48小时
fileReservedTime=120

# commitLog 每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824

# ConsumeQueue 每个文件默认存 30W 条,根据业务情况调整
mapedFileSizeConsumeQueue=300000

# destroyMapedFileIntervalForcibly=120000
# redeleteHangedFileInterval=120000
# 检测物理文件磁盘空间
diskMaxUsedSpaceRatio=99
# 存储路径
# storePathRootDir=/home/ztztdata/rocketmq-all-4.1.0-incubating/store
# commitLog 存储路径
# storePathCommitLog=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/commitlog
# 消费队列存储
# storePathConsumeQueue=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/consumequeue
# 消息索引存储路径
# storePathIndex=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/index
# checkpoint 文件存储路径
# storeCheckpoint=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/checkpoint
# abort 文件存储路径
# abortFile=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/abort
# 限制的消息大小
maxMessageSize=65536

# flushCommitLogLeastPages=4
# flushConsumeQueueLeastPages=2
# flushCommitLogThoroughInterval=10000
# flushConsumeQueueThoroughInterval=60000

# Broker 的角色
# - ASYNC_MASTER 异步复制Master
# - SYNC_MASTER 同步双写Master
# - SLAVE
brokerRole=ASYNC_MASTER

# 刷盘方式
# - ASYNC_FLUSH 异步刷盘
# - SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH

# 发消息线程池数量
# sendMessageThreadPoolNums=128
# 拉消息线程池数量
# pullMessageThreadPoolNums=12

messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h

启动日志:

 docker compose logs --tail=1000 rmqnamesrv 
 
rmqnamesrv  | OpenJDK 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
rmqnamesrv  | OpenJDK 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
rmqnamesrv  | The Name Server boot success. serializeType=JSON, address 0.0.0.0:9876

docker compose logs --tail=1000 rmqproxy 

rmqproxy  | OpenJDK 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
rmqproxy  | OpenJDK 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
rmqproxy  | Thu Sep 14 12:24:26 UTC 2023 rocketmq-proxy startup successfully

使用 dashbord 可以正常的发送消息,但是使用 producer 会报错

current message type not match with topic accept message types.

似乎 RocketMQ 5.0 引入了 TopicMessageType 的概念,但是调用了 updateTopic 好像还是有问题

sh mqadmin updateTopic -n 127.0.0.1:9876 -t txs  -c rmqnamesrv -a +message.type=NORMAL

希望有人能帮忙解决下,😄

@zhyblack
Copy link

zhyblack commented Sep 29, 2023

我使用的官方例子也出现了这个问题,解决了
1、play-docker.sh + sh mqbroker --enable-proxy
2、-p 8081:8081 说是 --enable-proxy 会自动启用 8081端口
3、我使用的是阿里云 所以安全组需要放行 8081
然后就搞定了
Consume message successfully, messageId={}7F00000100065910E4409199EB2F0000
程序生产者&后台发送消息都没问题

@huiliaoning
Copy link

Reference

遇到了同样的问题

@mi1chstrasse
Copy link

连接的服务应该是 8081 端口

@leizhiyuan
Copy link

8081 是grpc 的端口,需要放开。
private Integer grpcServerPort = 8081;

@huangsunting
Copy link

官方文档比较坑,甚至没有docker的部署示例。。。
rocketmq5.x引入了proxy,需要开放一下端口,不然访问不了。

1.先简单安装一下,8081是grpc访问端口,8080是remoting访问(如果需要)
docker run -d
--name rmqbroker
--net rmq_net
-p 10911:10911 -p 10909:10909 -p 8081:8081
--privileged=true
apache/rocketmq:5.2.0 sh mqbroker -n rmqnamesrv:9876 --enable-proxy

2.拷贝文件后,删除容器
docker cp rmqbroker:/home/rocketmq/rocketmq-5.2.0/conf /你的目录/docker/rocketmq/broker/conf

3.重新安装,endpoints=localhost:8081
docker run -d
--name rmqbroker
--net rmq_net
-p 10911:10911 -p 10909:10909 -p 8081:8081 -p 8080:8080
--privileged=true
-v 你的目录/docker/rocketmq/broker/logs:/home/rocketmq/logs
-v 你的目录/docker/rocketmq/broker/store:/home/rocketmq/store
-v 你的目录/docker/rocketmq/broker/conf:/home/rocketmq/rocketmq-5.2.0/conf
-e "MAX_HEAP_SIZE=1024M"
apache/rocketmq:5.2.0 sh mqbroker -n rmqnamesrv:9876 --enable-proxy -c /home/rocketmq/rocketmq-5.2.0/conf/broker.conf

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

9 participants