按照官方说明:http://rocketmq.apache.org/docs/quick-start/
git clone -b develop
https://github.com/apache/rocketmq.git
cd rocketmq
mvn -Prelease-all -DskipTests clean install -U
cd distribution/target/apache-rocketmq
其中,mvn打包时超时,我用了下面的镜像。
环境 centOS 6.5<mirror>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
useradd -d /home/rocketmq410 -m rocketmq410
passwd rocketmq410
export JAVA_HOME=/home/rocketmq410/jdk1.8.0_144
export PATH=$JAVA_HOME/bin:$PATH
-bash: ./os.sh: /bin/sh^M: bad interpreter: No such file or directory
原因是,我之前的编译打包是在windows环境下。 此时的文件编码是dos的。要改成unix的。
vim 打开文件。
:set ff=unix
同样处理其他用到的脚本。
发现4.1.0版本的os.sh不好使。还是3.2.6版本里的echo好用。
使用root权限
echo 'vm.overcommit_memory=1' >> /etc/sysctl.conf
echo 'vm.min_free_kbytes=5000000' >> /etc/sysctl.conf
echo 'vm.drop_caches=1' >> /etc/sysctl.conf
echo 'vm.zone_reclaim_mode=0' >> /etc/sysctl.conf
echo 'vm.max_map_count=655360' >> /etc/sysctl.conf
echo 'vm.dirty_background_ratio=50' >> /etc/sysctl.conf
echo 'vm.dirty_ratio=50' >> /etc/sysctl.conf
echo 'vm.page-cluster=3' >> /etc/sysctl.conf
echo 'vm.dirty_writeback_centisecs=360000' >> /etc/sysctl.conf
echo 'vm.swappiness=10' >> /etc/sysctl.conf
sysctl -p
echo 'ulimit -n 655350' >> /etc/profile
echo '* hard nofile 655350' >> /etc/security/limits.conf
echo '* hard memlock unlimited' >> /etc/security/limits.conf
echo '* soft memlock unlimited' >> /etc/security/limits.conf
查看内核参数用cat /etc/sysctl.conf
查看文件句柄 用 ulimit -a 或 -n
还有一个参数
DISK=`df -k | sort -n -r -k 2 | awk -F/ 'NR==1 {gsub(/[0-9].*/,"",$3); print $3}'`
[ "$DISK" = 'cciss' ] && DISK='cciss!c0d0'
echo 'deadline' > /sys/block/${DISK}/queue/scheduler
这个是设置io调度算法,细节google。注意两点:
新建一个配置文件namesrv-a.properties,放在conf/2m-noslave下
listenPort=9876
serverWorkerThreads=8
serverCallbackExecutorThreads=0
serverSelectorThreads=3
serverOnewaySemaphoreValue=256
serverAsyncSemaphoreValue=64
serverChannelMaxIdleTimeSeconds=120
serverSocketSndBufSize=2048
serverSocketRcvBufSize=1024
serverPooledByteBufAllocatorEnable=false
在bin下,新建一个启动脚本startnamesrv.sh
nohup ./mqnamesrv -c ../conf/namesrv-a.properties > ~/logs/ns.log &
tail -100f ~/logs/ns.log
执行startnamesrv.sh
同样操作,配置好另一台机器
配置启动broker
新建一个启动脚本,startbroker.sh
nohup ./mqbroker -c ../conf/2m-noslave/broker-a.properties > broker-a.log &
tail -100f ./broker-a.log
chmod x
startbroker.sh
配置broker-a.properties
brokerClusterName=HopRocketMqClusterProduction
brokerName=broker-a-pro
# 相同的brokerName,brokerId是0为master,>0为slave
brokerId=0
# 清理commitlog的时间,默认就是04
deleteWhen=04
# commitlog保存时间,默认就是72
fileReservedTime=72
# 角色ASYNC_MASTER,SYNC_MASTER,SLAVE;
# ASYNC_MASTER:master接受消息成功即返回成功
# SYNC_MASTER:至少一个slave接受消息成功,才返回成功
brokerRole=ASYNC_MASTER
# 刷盘方式SYNC_FLUSH和ASYNC_FLUSH
flushDiskType=ASYNC_FLUSH
# netty的监听端口
listenPort=10922
# namesrv地址
namesrvAddr=10.135.26.200:9876;10.135.26.201:9876
# 获取本地地址
brokerIP1=10.135.26.200
# 默认队列数量
defaultTopicQueueNums=8
# 自动创建Topic功能是否开启(线上建议关闭)
autoCreateTopicEnable=false
# 自动创建订阅组功能是否开启(线上建议关闭)
autoCreateSubscriptionGroup=false
# 磁盘空间最大使用率,超了拒收消息
diskMaxUsedSpaceRatio=95
# 存储commitlog路径
storePathRootDir=/home/rocketmq410/mqstore/rocketmqstore-a
storePathCommitLog=/home/rocketmq410/mqstore/rocketmqstore-a/commitlog
# 自动创建以服务器名字命名的Topic功能是否开启
brokerTopicEnable=false
# 自动创建以集群名字命名的Topic功能是否开启
clusterTopicEnable=false
# 是否拒绝接收事务消息
rejectTransactionMessage=false
# 是否从地址服务器寻找Name Server地址,正式发布后,默认值为false
fetchNamesrvAddrByAddressServer=false
# 以下全是默认值,删掉即可
# CommitLog刷盘间隔时间(单位毫秒)
flushIntervalCommitLog=1000
# 是否定时方式刷盘,默认是实时刷盘
flushCommitLogTimed=false
# 最大被拉取的消息字节数,消息在内存
maxTransferBytesOnMessageInMemory=262144
# 最大被拉取的消息个数,消息在内存
maxTransferCountOnMessageInMemory=32
# 最大被拉取的消息字节数,消息在磁盘
maxTransferBytesOnMessageInDisk=65536
# 最大被拉取的消息个数,消息在磁盘
maxTransferCountOnMessageInDisk=8
# 命中消息在内存的最大比例
accessMessageInMemoryMaxRatio=40
# 是否开启消息索引功能
messageIndexEnable=true
# 是否使用安全的消息索引功能,即可靠模式。
# 可靠模式下,异常宕机恢复慢
# 非可靠模式下,异常宕机恢复快
messageIndexSafe=false
# ha是主从同步相关配置
haMasterAddress=
新建存储commitlog的目录 mkdir -p /home/rocketmq410/mqstore/rocketmqstore-a/commitlog
执行startbroker.sh
安装rocketmq-console
git clone git@github.com:apache/rocketmq-externals.git
cd rocketmq-console
mvn clean package -Dmaven.test.skip=true
上传
写一个启动脚本,指定namesrv。
admin cli命令
查询消费进度 ./mqadmin consumerProgress -g TestConsumer1 -n 10.135.26.200:9876
问题:
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved