linux 下搭建rokectMQ集群

官网地址:https://github.com/alibaba/RocketMQ/releases/tag/v3.4.6

用三台机器搭建集群,3 namesrv、3 master、3 slave:

ip1    nameSrv1     broker-a      broker-c-s
ip2    nameSrv2     broker-a-s    broker-b
ip3    nameSrv3     broker-b-s    broker-c

或者三台机器搭建,3 namesrv、2 master、2 slave:

ip1    namesrv1   broker-a
ip2    namesrv2   broker-a-s   broker-b-s
ip3    namesrv3   broker-b     rocketmq-console

这样保证高可用,各自的从机放在另一台机子上,如果一台机子宕机了,那master是会自动切换,另一个slave还可以消费宕机的那台的master的消息。

主配置文件 conf/2m-2s-async/:

#broker 名称

brokerName=broker-a #改成对应的名称

#broker IDs

brokerId=0 #主为0,从为比0大的数

#监听端口

listenPort=10910

#指定本节点rmq使用的ip,强制使用万兆网卡的ip

#brokerIPI=10.249.130.134
#如果ip乱窜就配置IP地址
brokerIP1=192.168.206.130

#消息存放地址

storePathRootDir=/root/app/rocketmq-3.4.6/rocketmq-log-data/store

storePathCommitLog=/root/app/rocketmq-3.4.6/rocketmq-log-data/commitlog

brokerRole=ASYNC_MASTER

# namesrv  地址 namesrv1:port;namesrv2:portnamesrv3:port

namesrvAddr=192.168.206.128:9876;192.168.206.129:9876;192.168.206.130:9876

#broker刷盘策略   同步刷盘SYNC_MASTER 异步刷盘ASYNC_MASTER

#清除磁盘策略  同步清除刷盘 SYNC_FLUSH  异步清除刷盘 ASYNC_FLUSH

flushDiskType=ASYNC_FLUSH

#文件保留时间,14天

fileReservedTime=336

####################################基本不变配置######################################

#是否自动创建TOPIC

autoCreateTopicEnable=true

#是否自动创建订阅组

autoCreateSubscriptionGroup=true

#生产则默认最大队列数 默认8

defaultTopicQueueNums=16

#ConsumeQueue每个文件大小 默认存储30W条消息

mapedFileSizeConsumeQueue=50000000

#发消息线程池数量 (默认:16 + Runtime.getRuntime().availableProcessors() * 4)

sendMessageThreadPoolNums=128

#拉消息线程池数量 (默认:16 + Runtime.getRuntime().availableProcessors() * 4)

pullMessageThreadPoolNums=128

从配置文件 conf/2m-2s-async/:

#broker 名称

brokerName=broker-a #改成对应的名称

#broker IDs

brokerId=1  #主为0,从为比0大的数

#监听端口

listenPort=20910

#指定本节点rmq使用的ip,强制使用万兆网卡的ip

#brokerIPI=10.249.130.134

#如果ip乱窜就配置IP地址
brokerIP1=192.168.206.130

#消息存放地址

storePathRootDir=/root/app/rocketmq-3.4.6/rocketmq-log-data-s/store

storePathCommitLog=/root/app/rocketmq-3.4.6/rocketmq-log-data-s/commitlog

brokerRole=SLAVE

# namesrv  地址 namesrv1:port;namesrv2:portnamesrv3:port

namesrvAddr=192.168.206.128:9876;192.168.206.129:9876;192.168.206.130:9876

#broker刷盘策略   同步刷盘SYNC_MASTER 异步刷盘ASYNC_MASTER

#清除磁盘策略  同步清除刷盘 SYNC_FLUSH  异步清除刷盘 ASYNC_FLUSH

flushDiskType=ASYNC_FLUSH

#文件保留时间,14天

fileReservedTime=336

####################################基本不变配置######################################

#是否自动创建TOPIC

autoCreateTopicEnable=true

#是否自动创建订阅组

autoCreateSubscriptionGroup=true

#生产则默认最大队列数 默认8

defaultTopicQueueNums=16

#ConsumeQueue每个文件大小 默认存储30W条消息

mapedFileSizeConsumeQueue=50000000

#发消息线程池数量 (默认:16 + Runtime.getRuntime().availableProcessors() * 4)

sendMessageThreadPoolNums=128

#拉消息线程池数量 (默认:16 + Runtime.getRuntime().availableProcessors() * 4)

pullMessageThreadPoolNums=128

启动时如果报内存的相关的错误,修改runserver.sh、runbroker.sh 文件,更改内存大小:

启动脚本 runRMQ-pda.sh:

jps |grep BrokerStartup |kill -9 `awk '{print $1}'`
jps |grep NamesrvStartup |kill -9 `awk '{print $1}'`
jps |grep Bootstrap |kill -9 `awk '{print $1}'

nohup sh /root/app/rocketmq-3.4.6/alibaba-rocketmq/bin/mqnamesrv &

nohup sh /root/app/rocketmq-3.4.6/alibaba-rocketmq/bin/mqbroker -c /root/app/rocketmq-3.4.6/alibaba-rocketmq/conf/2m-2s-async/broker-a.properties &


nohup sh /root/app/rocketmq-3.4.6/alibaba-rocketmq-s/bin/mqbroker -c /root/app/rocketmq-3.4.6/alibaba-rocketmq-s/conf/2m-2s-async/broker-a-s.properties &

脚本中路径更改成自己的安装路径。
另外日志文件的输出路径也可更改:logback_broker.xml、logback_filtersrv.xml、logback_namesrv.xml、logback_tools.xml。

如 logback_broker.xml 文件配置:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="DefaultAppender"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/root/app/rocketmq-3.4.6/rocketmq-log-data/logs/rocketmqlogs/broker_default.log</file>
        <append>true</append>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>/root/app/rocketmq-3.4.6/rocketmq-log-data/logs/rocketmqlogs/broker_default.%i.log
            </fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>5</maxIndex>
        </rollingPolicy>
        <triggeringPolicy
            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>100MB</maxFileSize>
        </triggeringPolicy>
        <encoder>
            <pattern>%d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n</pattern>
            <charset class="java.nio.charset.Charset">UTF-8</charset>
        </encoder>
    </appender>


    <appender name="RocketmqBrokerAppender"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/root/app/rocketmq-3.4.6/rocketmq-log-data/logs/rocketmqlogs/broker.log</file>
        <append>true</append>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>/root/app/rocketmq-3.4.6/rocketmq-log-data/logs/rocketmqlogs/otherdays/broker.%i.log
            </fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>30</maxIndex>
        </rollingPolicy>
        <triggeringPolicy
            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>100MB</maxFileSize>
        </triggeringPolicy>
        <encoder>
            <pattern>%d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n</pattern>
            <charset class="java.nio.charset.Charset">UTF-8</charset>
        </encoder>
    </appender>

    <appender name="RocketmqStoreAppender"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/root/app/rocketmq-3.4.6/rocketmq-log-data/logs/rocketmqlogs/store.log</file>
        <append>true</append>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>/root/app/rocketmq-3.4.6/rocketmq-log-data/logs/rocketmqlogs/otherdays/store.%i.log
            </fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>30</maxIndex>
        </rollingPolicy>
        <triggeringPolicy
                class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>100MB</maxFileSize>
        </triggeringPolicy>
        <encoder>
            <pattern>%d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n</pattern>
            <charset class="java.nio.charset.Charset">UTF-8</charset>
        </encoder>
    </appender>

    <appender name="RocketmqRemotingAppender"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/root/app/rocketmq-3.4.6/rocketmq-log-data/logs/rocketmqlogs/remoting.log</file>
        <append>true</append>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>/root/app/rocketmq-3.4.6/rocketmq-log-data/logs/rocketmqlogs/otherdays/remoting.%i.log
            </fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>30</maxIndex>
        </rollingPolicy>
        <triggeringPolicy
                class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>100MB</maxFileSize>
        </triggeringPolicy>
        <encoder>
            <pattern>%d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n</pattern>
            <charset class="java.nio.charset.Charset">UTF-8</charset>
        </encoder>
    </appender>

    <appender name="RocketmqStoreErrorAppender"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/root/app/rocketmq-3.4.6/rocketmq-log-data/logs/rocketmqlogs/storeerror.log</file>
        <append>true</append>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>/root/app/rocketmq-3.4.6/rocketmq-log-data/logs/rocketmqlogs/otherdays/storeerror.%i.log
            </fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>30</maxIndex>
        </rollingPolicy>
        <triggeringPolicy
            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>100MB</maxFileSize>
        </triggeringPolicy>
        <encoder>
            <pattern>%d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n</pattern>
            <charset class="java.nio.charset.Charset">UTF-8</charset>
        </encoder>
    </appender>


    <appender name="RocketmqTransactionAppender"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/root/app/rocketmq-3.4.6/rocketmq-log-data/logs/rocketmqlogs/transaction.log</file>
        <append>true</append>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>/root/app/rocketmq-3.4.6/rocketmq-log-data/logs/rocketmqlogs/otherdays/transaction.%i.log
            </fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>5</maxIndex>
        </rollingPolicy>
        <triggeringPolicy
            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>100MB</maxFileSize>
        </triggeringPolicy>
        <encoder>
            <pattern>%d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n</pattern>
            <charset class="java.nio.charset.Charset">UTF-8</charset>
        </encoder>
    </appender>


    <appender name="RocketmqRebalanceLockAppender"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/root/app/rocketmq-3.4.6/rocketmq-log-data/logs/rocketmqlogs/lock.log</file>
        <append>true</append>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>/root/app/rocketmq-3.4.6/rocketmq-log-data/logs/rocketmqlogs/otherdays/lock.%i.log
            </fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>5</maxIndex>
        </rollingPolicy>
        <triggeringPolicy
            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>100MB</maxFileSize>
        </triggeringPolicy>
        <encoder>
            <pattern>%d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n</pattern>
            <charset class="java.nio.charset.Charset">UTF-8</charset>
        </encoder>
    </appender>

    <appender name="RocketmqStatsAppender"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/root/app/rocketmq-3.4.6/rocketmq-log-data/logs/rocketmqlogs/stats.log</file>
        <append>true</append>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>/root/app/rocketmq-3.4.6/rocketmq-log-data/logs/rocketmqlogs/otherdays/stats-%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>500MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <MaxHistory>10</MaxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyy-MM-dd HH:mm:ss,GMT+8} %p - %m%n</pattern>
            <charset class="java.nio.charset.Charset">UTF-8</charset>
        </encoder>
    </appender>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <append>true</append>
        <encoder>
            <pattern>%d{yyy-MM-dd HH\:mm\:ss,GMT+8} %p %t - %m%n</pattern>
            <charset class="java.nio.charset.Charset">UTF-8</charset>
        </encoder>
    </appender>

    <logger name="RocketmqBroker" additivity="false">
        <level value="INFO" />
        <appender-ref ref="RocketmqBrokerAppender" />
    </logger>

    <logger name="RocketmqCommon" additivity="false">
        <level value="INFO" />
        <appender-ref ref="RocketmqBrokerAppender" />
    </logger>

    <logger name="RocketmqStore" additivity="false">
        <level value="INFO" />
        <appender-ref ref="RocketmqStoreAppender" />
    </logger>

    <logger name="RocketmqStoreError" additivity="false">
        <level value="INFO" />
        <appender-ref ref="RocketmqStoreErrorAppender" />
    </logger>

    <logger name="RocketmqTransaction" additivity="false">
        <level value="INFO" />
        <appender-ref ref="RocketmqTransactionAppender" />
    </logger>

    <logger name="RocketmqRebalanceLock" additivity="false">
        <level value="INFO" />
        <appender-ref ref="RocketmqRebalanceLockAppender" />
    </logger>

    <logger name="RocketmqRemoting" additivity="false">
        <level value="INFO" />
        <appender-ref ref="RocketmqRemotingAppender" />
    </logger>

    <logger name="RocketmqStats" additivity="false">
        <level value="INFO" />
        <appender-ref ref="RocketmqStatsAppender" />
    </logger>

    <root>
        <level value="INFO" />
        <appender-ref ref="DefaultAppender" />
    </root>
</configuration>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容