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需要开放