RocketMq的单机安装(一)

参考文献: https://blog.csdn.net/licusliu/article/details/85248192

1.1 名词解释

术语和缩写

解释

nameServer

专门为RocketMQ设计的轻量级名称服务

Producer

消息生产者,负责生产消息,一般由业务系统负责生产消息

Consumer

消息消费者,负责消费消息,一般是后台系统负责异步消息

Broker

消息中转角色,负责存储消息,转发消息

Master

Broker中的主节点

Slave

Broker中的副节点

异步复制

消息写入master节点,再由master节点异步复制到slave节点

同步双写

消息同时写入master节点和slave节点

异步刷盘

Broker的一种持久化策略,消息写入pagecache后,直接返回。由异步线程直接将pagecache写入硬盘

同步刷盘

Broker的一种持久化策略,消息写入pagecache后,由同步线程直接将pagecache写入硬盘

TPS

每秒发送消息个数

1.2 安装部署

1.2.1 硬件环境

Cpu4核、内存8g

软件环境

Linux环境

Jdk1.8或以上版本64

Gradle 3.3或以上

1.2.2 单机部署

1、查看JAVA环境

(1)输入命令 Java -version

(2)显示jdk版本,如果jdk版本不低于1.8则继续下一步,如果低于1.8则需要安装jdk1.8或以上版本

 

2、下载rocketmq

可通过命令或者在官网下载:

wget http://mirrors.hust.edu.cn/apache/rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zip下载

官网:http://rocketmq.apache.org/dowloading/releases

rocketmq下载截图

 

3、 解压rocketmq

输入命令 unzip rocketmq-all-4.6.0-bin-release.zip -d ./rocketmq

可将rocketmq解压到当前目录的rocketmq文件夹内

4、创建存储路径

mkdir -p ../rocketmq/store/{store,commitlog,consumequeue,index}

 

5、配置RocketMq环境变量

RockeMq一般部署于非root用户下,vi /home/${user}/.bash_profile  vi /etc/profile,添加如下内容:

export NAMESRV_ADDR=0.0.0.0(内网ip:9876

6、设置broker配置

(1)输入命令创建配置

vi rocketmq/conf/default-broker.properties

vi ../conf/broker.conf

(2)输入内容

#ip为服务器内网地址,port可自由设置一般为9876

namesrvAddr=ip(内网ip):port;

messageIndexSafe=true

#是否允许Broker 自动创建。Topic,建议线下开启,线上关闭

autoCreateTopicEnable=true

waitTimeMillsInSendQueue=5000

#发送消息线程池数量

sendMessageThreadPoolNums=64

useReentrantLockWhenPutMessage=true

defaultReadQueueNums = 16

defaultWriteQueueNums = 16

#ip设置外网ip,不需要连接外网的话,可以在参数前面加#注释掉

brokerIP1=ip(外网ip

#默认值为DefaultCluster,可以修改为broker所属的哪个集群

brokerClusterName=DefaultCluster

#原始值为本机主机名,Broker名称

brokerName=broker-a

#BrokerId,必须是大等于 0 的整数,0 表示Master>0 表示 Slave,一个 Master 可以挂多个 SlaveMaster Slave通过 BrokerName 来配对,原始值为0

brokerId=0

deleteWhen=04

fileReservedTime=48

brokerRole=ASYNC_MASTER

flushDiskType=ASYNC_FLUSH

#port可自由设置,一般设置10911

listenPort=port

storePathRootDir=/usr/local/rocketmq/store

storePathCommitLog= /usr/local/rocketmq/store/commitlog

storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue

storePathIndex=/usr/local/rocketmq/store/index

(3)最后按esc键,输入:wq保存配置

(4)实例:我自己本地的配置

namesrvAddr =#.#.#.#:9876

brokerClusterName = DefaultCluster

brokerName = broker-a

listenPort=10911

brokerId = 0

deleteWhen = 04

fileReservedTime = 48

brokerRole = ASYNC_MASTER

flushDiskType = ASYNC_FLUSH

storePathRootDir=/opt/usr/rocketmq-4.6/store/store

storePathCommitLog= /opt/usr/rocketmq-4.6/store/commitlog

storePathConsumeQueue=/opt/usr/rocketmq-4.6/store/consumequeue

storePathIndex=/opt/usr/rocketmq-4.6/store/index

 

7、修改启动脚本参数,根据自己linux的配置进行调整

vi bin/runbroker.sh

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m -XX:MaxPermSize=320m"

vi bin/runserver.sh 

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m -XX:MaxPermSize=320m"

注意:XmsXmx至少是1G  否则启动不起来  Xmn一般是前者的一半,这边设置的内存不能大于机器实际的内存,根据实际情况调整

8、启动NameSrv

nohup sh mqnamesrv >/opt/usr/rocketmq/rocketmq4.6.0/logs/mqnamesrv.log 2>&1 &

9、启动broker

nohup sh mqbroker -c ../conf/broker.conf >/opt/usr/rocketmq/rocketmq4.6.0/logs/broker.log 2>&1 &

10、停止broker

其中default-broker.properties为上面第5步设置的broker配置文件名

sh mqshutdown broker

11、停止namesrv

sh mqshutdown namesrv

备注:停止这两个任务时不能用kill,如果用kill的话,重新启动的话,broker是启动不了的。

12、验证

1)在ROCKETMQ_HOME路径下执行以下命令模拟Producer发消息:

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

2)观察结果:会发出很多条下面的命令,说明发送成功:

 

(3)ROCKETMQ_HOME路径下执行以下命令模拟Consumer发消息:

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

(4)观察结果:会收到和上面一样多的命令,说明接收成功,可证明RocketMQ部署成功

1.3 安装过程中遇到的坑

问题一:Failed to obtain the host name

启动brokerserver任务时,会报以下错误:这是由于启动的时候找不到自己的主机名对应的ip地址而造成的。

解决上述问题只需修改/etc/hosts文件,在该文件中添加本机配置,就可以了

vim /etc/hosts

添加: 内网ip:主机名

问题二:connect to null failed

 

首先先检查下namesrvAdrr 是否为空,若为空,则rocketmq没连接上namesrvip地址,查看方式:

sh /bin/mqbroker -m

正常情况下,namesrvAddr=内网ip:9876,报上述错误时,namesrvAddr=后面是没有值的,这种情况下,需检查rocketmq的配置环境。

vim /etc/profile

export NAMESRV_ADDR=0.0.0.0(内网ip:9876  是否已经配置

问题三:connect to <121.41.110.225:10911> failed

配置文件中的内网地址时,测试时能测通。

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

修改为外网地址时,会报上述错误

查看防火墙,如果防火墙开启,则需关闭防火墙,重启后测试是否能通。若仍不能测通,可能是本服务器的外网ip没有对外开放,需要找运维开放或自己开放下。

 

查看防火墙的命令:

CentOS 6

vi /etc/sysconfig/iptables #编辑防火墙配置文件 systemctl status iptables

systemctl restart iptables.service #最后重启防火墙使配置生效

systemctl enable iptables.service #设置防火墙开机启动

CentOS 7

systemctl status firewalld #查看防火墙是否启动

systemctl start firewalld #启动防火墙

systemctl stop firewalld #关闭防火墙

cat /etc/firewalld/zones/public.xml #防火墙文件

firewall-cmd --list-all #防火墙端口list

猜你喜欢

转载自www.cnblogs.com/simplefuer/p/12192984.html