RocketMQ搭建与压测

RocketMQ部署

官方文档

http://rocketmq.apache.org/docs/quick-start/

历史版本

https://archive.apache.org/dist/rocketmq/

中文文档

https://github.com/apache/rocketmq/tree/master/docs/cn

最佳实践

https://github.com/apache/rocketmq/blob/master/docs/cn/best_practice.md

系统参数调优

https://github.com/apache/rocketmq/blob/master/distribution/bin/os.sh

本地部署

# Download & build
wget -N -c https://dlcdn.apache.org/rocketmq/4.9.1/rocketmq-all-4.9.1-source-release.zip

unzip rocketmq-all-4.9.1-source-release.zip
cd rocketmq-all-4.9.1-source-release
mvn -Prelease-all -DskipTests clean install -U
cd distribution/target/rocketmq-4.9.1/rocketmq-4.9.1

# Download bin
wget -N -c https://dlcdn.apache.org/rocketmq/4.9.1/rocketmq-all-4.9.1-bin-release.zip

unzip rocketmq-all-4.9.1-bin-release.zip
cd rocketmq-all-4.9.1-bin-release

#Start
nohup sh bin/mqnamesrv &
tail -f ~/logs/rocketmqlogs/namesrv.log

nohup sh bin/mqbroker -n localhost:9876 &
tail -f ~/logs/rocketmqlogs/broker.log

# Test
export NAMESRV_ADDR=localhost:9876
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

k8s部署

编译rockemq相关镜像

参考以下仓库

https://github.com/apache/rocketmq-externals.git

https://github.com/apache/rocketmq-docker.git

  • rocketmq-docker仓库挺久没更新了
    • deployment.yaml中apiVersion需要改为apps/v1
  • apacherocketmq/rocketmq:4.9.1 not found
    • dockerhub中最新只有4.6.0版本
# fork后修改下,目前我编译的是4.9.1 centos arm64,其他版本镜像暂未编译上传
git clone https://github.com/huyuwei1996/rocketmq-docker
cd rocketmq-docker

cd image-build
sh build-image.sh 4.9.1 centos
cd ..

sh stage.sh 4.9.1
cd stages/4.9.1

./play-kubernetes.sh
kubectl expose deployment rocketmq-ns-deployment --type=NodePort --port 9876
minikube service --url rocketmq-ns-deployment

# 我这里选择LoadBalancer方式
kubectl expose deployment rocketmq-ns-deployment --type=LoadBalancer --port 9876
minikube tunnel

检查和测试

rocketmq-broker-deployment报错:Error when measuring disk space usage, file doesn’t exist on this path: /home/rocketmq/store/commitlog

需要进入pod执行
mkdir -p /home/rocketmq/store/commitlog
mkdir -p /home/rocketmq/store/consumequeue
# Test
export NAMESRV_ADDR=localhost:9876
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

tools.sh测试时报错:org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout
如果在本地对k8s中的rocketmq测试,除了9876端口需要开放,还有10909,10911需要开放

压测执行