linux下搭建rocketmq(附服务脚本)
2017-05-06 13:50
316 查看
此文档安装的是rocketmq当前最新版本rocketmq v4.0.0,当时阿里已经把rocketmq捐赠给了apache组织,为什么要特别指明这一点,因为在下载、安装和服务脚本(服务启动名称名称都会不同)中有个别不同的地方。原创哦。
一、安装rocketmq1、安装要求
3、克隆和编译
Server"
-XX:PermSize=128m -XX:MaxPermSize=320m"5、尝试启动"Broker"
-XX:PermSize=128m -XX:MaxPermSize=320m"
6、停止"Broker"服务
Server"服务
2、配置文件默认存在的是
# cat /etc/init.d/mqnamesrv
到这里安装和简单配置过程就结束了,希望对有需要的有所帮助。
一、安装rocketmq1、安装要求
64bit OS, Linux/Unix/Mac is recommended; 64bit JDK 1.7+; Maven 3.2.x; Git2、修改主机名
# vim /etc/hosts 192.168.1.163 mq # hostname mq # vim /etc/sysctl kernel.hostname = mq # sysctl -p
3、克隆和编译
> git clone -b develop https://github.com/apache/incubator-rocketmq.git 会在当前目录下生成“incubator-rocketmq”目录,接下来的部分操作都是在这个目录下进 > cd incubator-rocketmq > mvn -Prelease-all -DskipTests clean install -U 此步骤时间会比较长,请耐心等待,执行成功会生成多个目录。这是编译过程,我们后续操作只需要在编译过程生成的distribution/target/apache-rocketmq目录中进行,通常为了方便,我们把这个目录拷贝出来。 > cd distribution/target/apache-rocketmq此时需要注意的是:启动的时候先启动Name server 停止的时候先停止Broker4、尝试启动"Name
Server"
> nohup sh bin/mqnamesrv & > tail -f ~/logs/rocketmqlogs/namesrv.log 日志文件会自动生成 The Name Server boot success…如果服务器内存不够,可以修改runserver.sh脚本(mqnamesrv文件中通过runserver.sh脚本调用Name Server的主函数com.alibaba.rocketmq.namesrv.NamesrvStartup启动Name Server)中的JAVA_OPT_1参数JAVA_OPT_1="-server -Xms4g -Xmx4g -Xmn2g
-XX:PermSize=128m -XX:MaxPermSize=320m"5、尝试启动"Broker"
> nohup sh bin/mqbroker -n localhost:9876 & > tail -f ~/logs/rocketmqlogs/broker.log The broker[%s, 172.30.30.233:10911] boot success...如果服务器内存不够,可以修改runbroker.sh脚本(mqbroker文件中通过runbroker.sh脚本调用Broker的主函数com.alibaba.rocketmq.broker.BrokerStartup启动Broker)的JAVA_OPT_1参数JAVA_OPT_1="-server -Xms4g -Xmx4g -Xmn2g
-XX:PermSize=128m -XX:MaxPermSize=320m"
6、停止"Broker"服务
> sh bin/mqshutdown broker The mqbroker(36695) is running... Send shutdown request to mqbroker(36695) OK7、停止"Name
Server"服务
> sh bin/mqshutdown namesrv The mqnamesrv(36664) is running... Send shutdown request to mqnamesrv(36664) OK在测试完成之后,说明安装成功,一切都能正常运行,此安装过程是摘自官方文档,有何异议请移步官方文档 https://rocketmq.incubator.apache.org/ 二、配置mqbroker1、 通常我们使用是以集群模式运行Broker
Broker集群有多种配置方式: 1,单Master 优点:除了配置简单没什么优点 缺点:不可靠,该机器重启或宕机,将导致整个服务不可用 2,多Master 优点:配置简单,性能最高 缺点:可能会有少量消息丢失(配置相关),单台机器重启或宕机期间,该机器下未被消费的消息在机器恢复前不可订阅,影响消息实时性 3,多Master多Slave,每个Master配一个Slave,有多对Master-Slave,集群采用异步复制方式,主备有短暂消息延迟,毫秒级 优点:性能同多Master几乎一样,实时性高,主备间切换对应用透明,不需人工干预 缺点:Master宕机或磁盘损坏时会有少量消息丢失 4,多Master多Slave,每个Master配一个Slave,有多对Master-Slave,集群采用同步双写方式,主备都写成功,向应用返回成功 优点:服务可用性与数据可用性非常高 缺点:性能比异步集群略低,当前版本主宕备不能自动切换为主
2、配置文件默认存在的是
[root@mycat conf]# ls 2m-2s-async 2m-noslave broker.conf.bak logback_filtersrv.xml logback_tools.xml 2m-2s-sync brk.conf logback_broker.xml logback_namesrv.xml其中m表示主节点,s表示从节点,以哪种集群形式运行,去配置文件中修改即可,之后在服务脚本中调用就行了。这里我们只是运行单节点broker,具体的集群模式请再自行琢磨,把默认的broker.conf 做备份,并复制一份配置文件出来,重命名为brk.conf 这个名字是随意起的,建议见名知意,方便在脚本中调用。 3、# cat brk.conf
brokerClusterName = onebroker brokerName = broker-a brokerId = 0 0表示master,1表示slave deleteWhen = 04 fileReservedTime = 48 brokerRole = ASYNC_MASTER flushDiskType = ASYNC_FLUSH namesrvAddr = mycat:9876 指明mqname server storePathRootDir = /data/rocketmq/store storePathCommitLog = /data/rocketmq/store/commitlog autoCreateTopicEnable = true autoCreateSubscriptionGroup = true4、通常/data/rocketmq/store和/data/rocketmq/store/commitlog是需要手动创建的为了安全起见,我们使用mq用户启动和关闭服务
# useradd mq # chown -R mq:mq /data/rocketmq/ # chown -R mq:mq /opt/apache-rocketmq三、提供服务脚本
# cat /etc/init.d/mqnamesrv
#!/bin/bash # chkconfig: 2345 55 25 # description:MQ manmger . /etc/rc.d/init.d/functions start() { status if [ $? -ne 0 ] then echo 'start rocketmq-namserv......' #####################################需要修改的就是下面一行######################################### su - mq -c "nohup /opt/apache-rocketmq/bin/mqnamesrv &> /data/rocketmq/logs/mq_namser.log &" if [ $? -eq 0 ];then echo "started......" fi fi } stop() { pid=`ps ax | grep -i 'org.apache.rocketmq.namesrv.NamesrvStartup' |grep java | grep -v grep | awk '{print $1}'` if [ -z "$pid" ] ; then echo "No mqnamesrv running." return 2; else echo "The mqnamesrv(${pid}) is running..." kill ${pid} echo "Send shutdown request to mqnamesrv(${pid}) OK" fi } restart() { stop start } status() { pid=`ps ax | grep -i 'org.apache.rocketmq.namesrv.NamesrvStartup' |grep java | grep -v grep | awk '{print $1}'` if [ -z "$pid" ] ; then echo "No mqnamesrv running." return 1; fi echo "The mqnamesrv(${pid}) is running..." return 0 } case "$1" in start) start ;; stop) stop ;; restart) restart ;; status) status ;; *) echo $"Usage: $0 {start|stop|restart|tatus}" esac# cat /etc/init.d/mqbroker
#!/bin/bash # chkconfig: 2345 95 25 # description:MQ manmger . /etc/rc.d/init.d/functions start() { pid=`ps ax | grep -i 'org.apache.rocketmq.broker.BrokerStartup' |grep java | grep -v grep | awk '{print $1}'` if [ -z "$pid" ] ; then ###调用脚本启动mq-master-1.properties echo 'start rocketmq-broker......' su - mq -c "nohup /opt/apache-rocketmq/bin/mqbroker -c /opt/apache-rocketmq/conf/brk.conf &> /data/rocketmq/logs/mqbroker.log &" sleep 1 newpid=`ps ax | grep -i 'org.apache.rocketmq.broker.BrokerStartup' |grep java | grep -v grep | awk '{print $1}'` echo "restart mqbroker(${newpid}) is running success..." else echo "The mqbroker(${pid}) is running..." fi } stop() { pid=`ps ax | grep -i 'org.apache.rocketmq.broker.BrokerStartup' |grep java | grep -v grep | awk '{print $1}'` if [ -z "$pid" ] ; then echo "No mqbroker running." return 2; else echo "The mqbroker(${pid}) is running..." echo -e "Send shutdown to mqbroker(${pid})\c" kill ${pid} oldpid=$pid while [ ${oldpid} ] do oldpid=`ps ax | grep -i 'org.apache.rocketmq.broker.BrokerStartup' |grep java | grep -v grep | awk '{print $1}'` echo -e '!\c' sleep 1 done echo -e "\nSend shutdown request to mqbroker(${pid}) OK" fi } status() { pid=`ps ax | grep -i 'org.apache.rocketmq.broker.BrokerStartup' |grep java | grep -v grep | awk '{print $1}'` if [ -z "$pid" ] ; then echo "No mqbroker running." return 1; fi echo "The mqbroker(${pid}) is running..." return 0 } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; status) status ;; *) echo $"Usage: $0 {start|stop|restart|tatus}" esac启动服务的时候,要先启动mqnamesrv后启动mqbroker,到此为止,安装和配置过程结束,通常还需要部署rocketmq-console web端使用,因此接下来继续做如下步骤:四、部署rocketmq-console web端(步骤很简单,只做简单的部署)1、安装tomcat,安装方法很简单,这里不再赘述2、首先下载rocketmq-console,为了方便这里附上下载地址:http://pan.baidu.com/s/1dFw1qaX 在windows机器上解压并上传到linux主机上放到tomcat的webapps目录下3、在tomcat/conf/server.xml中添加一行为了方便访问,具体配置视自身情况而定,请务必在host上下文中指定
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="/mq" docBase="rocketmq-console" reloadable="true"/> </Host>4、修改rocketmq-console/WEB-INF/classes/config.properties
rocketmq.namesrv.addr=192.168.1.163:9876 #指明nameserver,如果有多个中间用分号分隔 throwDone=true5、启动tomcat
# catalina.sh start6、浏览器访问http://192.168.1.163:8080/mq,效果如下图:
到这里安装和简单配置过程就结束了,希望对有需要的有所帮助。
相关文章推荐
- Linux操作系统下NFS服务的搭建过程
- Linux操作系统下NFS服务的搭建过程
- linux上配置svnserve服务,搭建自己的svn服务器
- 如何在Linux下部署web程序(搭建vsftp服务,搭建sshd 服务器,jdk安装步骤,Tomcat安装步骤,MySQL安装步骤)
- 将oracle加载为linux标准系统服务脚本
- Linux系列-Red Hat5平台下的Samba服务搭建
- proftp搭建linux的ftp服务
- 菜鸟学Linux之六:samba服务的搭建与部署 推荐
- Linux系列-Red Hat5平台下的DHCP服务搭建
- linux 根据内存使用量自动重启服务的脚本
- linux APACHE2.2.10源码安装服务自动启动脚本
- [RHEL5企业级Linux服务攻略]--第1季 Linux服务器的搭建与测试 推荐
- 使用LVS(Linux Virtual Server)在Linux上搭建负载均衡的集群服务
- 使用LVS(Linux Virtual Server)在Linux上搭建负载均衡的集群服务
- Linux操作系统下SAMBA服务的搭建过程
- Linux邮件服务系统的搭建(二)
- 使用LVS(Linux Virtual Server)在Linux上搭建负载均衡的集群服务
- linux服务-DNS搭建
- Linux系列-Red Hat5平台下的FTP服务搭建