• rocketmq集群部署DLedger Controller


    rockermq集群部署DLedger Controller

    准备3台机器,IP分别是192.168.4.87,192.168.4.74,192.168.4.124
    
    • 1

    到官网下载rockermq

    rocketmq-all-5.1.4-bin-release.zip
    分别解压RockerMq到3台机器的/data/rockermq目录下
    
    • 1
    • 2

    集群模式:3切片主从

    先停止防火墙
    用3组BrokerName
    主从自动选择

    IPBrokerName目录说明
    192.168.4.87RaftNode00rocketmq-a-mA主
    192.168.4.87RaftNode22rocketmq-c-sC从
    192.168.4.74RaftNode11rocketmq-b-mB主
    192.168.4.74RaftNode00rocketmq-a-sA从
    192.168.4.124RaftNode22rocketmq-c-mC主
    192.168.4.124RaftNode11rocketmq-b-sB从

    建目录

    cd /data/rockermq/
    
    #192.168.4.87
    mkdir -p rocketmq-nameserver/DledgerController
    rm   -rf rocketmq-a-m/store/
    mkdir -p rocketmq-a-m/store/commitlog
    mkdir -p rocketmq-a-m/store/consumequeue
    rm 	 -rf rocketmq-c-s/store/
    mkdir -p rocketmq-c-s/store/commitlog
    mkdir -p rocketmq-c-s/store/consumequeue
    
    #192.168.4.74
    mkdir -p rocketmq-nameserver/DledgerController
    rm   -rf rocketmq-b-m/store/
    mkdir -p rocketmq-b-m/store/commitlog
    mkdir -p rocketmq-b-m/store/consumequeue
    rm   -rf rocketmq-a-s/store/
    mkdir -p rocketmq-a-s/store/commitlog
    mkdir -p rocketmq-a-s/store/consumequeue
    
    #192.168.4.124
    mkdir -p rocketmq-nameserver/DledgerController
    rm   -rf rocketmq-c-m/store/
    mkdir -p rocketmq-c-m/store/commitlog
    mkdir -p rocketmq-c-m/store/consumequeue
    rm   -rf rocketmq-b-s/store/
    mkdir -p rocketmq-b-s/store/commitlog
    mkdir -p rocketmq-b-s/store/consumequeue
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    配置Nameserver

    每台配置的controllerDLegerSelfId 分别是n0,n1,n2

    87  vim rocketmq-nameserver/conf/nameserver.conf 
    
    • 1
    #Namesrv config
    listenPort = 9876
    # Nameserver 中是否开启 controller,默认 false
    enableControllerInNamesrv = true
    
    #controller config
    # DLedger Raft Group 的名字,同一个 DLedger Raft Group 保持一致即可。
    controllerDLegerGroup = group1
    # DLedger Group 内各节点的端口信息,同一个 Group 内的各个节点配置必须要保证一致。
    controllerDLegerPeers = n0-192.168.4.87:9873;n1-192.168.4.74:9873;n2-192.168.4.124:9873
    # 节点 id,必须属于 controllerDLegerPeers 中的一个;同 Group 内各个节点要唯一。
    controllerDLegerSelfId = n0
    # controller 日志存储位置。controller 是有状态的,controller 重启或宕机需要依靠日志来恢复数据,该目录非常重要,不可以轻易删除。
    controllerStorePath = /data/rocketmq/rocketmq-nameserver/DledgerController
    enableElectUncleanMaster = false
    notifyBrokerRoleChanged = true
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    74  vim rocketmq-nameserver/conf/nameserver.conf 
    
    • 1
    ...
    controllerDLegerSelfId = n1
    ...
    
    • 1
    • 2
    • 3
    124  vim rocketmq-nameserver/conf/nameserver.conf 
    
    • 1
    ...
    controllerDLegerSelfId = n2
    ...
    
    • 1
    • 2
    • 3

    先修改内存

     vim bin/runserver.sh 
    -server -Xms256m -Xmx1g -Xmn256m
    
     vim bin/runbroker.sh
    JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx1g"
    
    • 1
    • 2
    • 3
    • 4
    • 5

    启动NameServer

     vim start_nameserver.sh 
    
    • 1
    
    #!/bin/sh
      
    #cd `dirname $0`
    #获取软连接的真实路径
    DIR=`S=\`readlink "$0"\`; [ -z "$S" ] && S=$0; dirname $S`
    cd "$DIR"
    
    echo `pwd`
    
    today=`date +"%Y%m%d"`
    datetime=`date +"%Y%m%d%H%M%S"`
    
    
    #nohup sh bin/mqnamesrv > nohubNameserv &
    nohup sh bin/mqnamesrv -c ./rocketmq-nameserver/conf/nameserver.conf > nohubNameserv.log &
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    	chmod +x ./start_nameserver.sh
    	./start_nameserver.sh 
    
    • 1
    • 2

    日志如下:

    (base) [root@server87 rocketmq]# tail -f nohubNameserv.log 
    Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
    Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
    load config properties file OK, ./rocketmq-nameserver/conf/nameserver.conf
    The Name Server boot success. serializeType=JSON, address 0.0.0.0:9876
    The ControllerManager boot success. serializeType=JSON
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    NameServer和Controller已经启动成功

    停止NameServer

    vim ./stop_nameserver.sh 
    
    • 1
    
    #!/bin/sh
      
    #cd `dirname $0`
    #获取软连接的真实路径
    DIR=`S=\`readlink "$0"\`; [ -z "$S" ] && S=$0; dirname $S`
    cd "$DIR"
    
    echo `pwd`
    
    today=`date +"%Y%m%d"`
    datetime=`date +"%Y%m%d%H%M%S"`
    
    
     sh bin/mqshutdown namesrv
     sh bin/mqshutdown controller
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    配置Broker

    注意配置:
    #allAckInSyncStateSet:若该值为 true,则一条消息需要复制到 SyncStateSet 中的每一个副本才会向客户端返回成功,可以保证消息不丢失。默认为 false。
    
    在87	
    vim rocketmq-a-m/conf/broker.conf
    
    • 1
    • 2
    • 3
    • 4
    • 5
    ## 集群名
    brokerClusterName = RaftCluster
    ## broker组名,同一个RaftClusterGroup内,brokerName名要一样
    brokerName=RaftNode00
    #control可不用id和role
    brokerId = 0
    brokerRole = SLAVE
    
    ## 监听的端口
    listenPort=30911
    ## 你设置的NameServer地址和端口
    namesrvAddr=192.168.4.87:9876;192.168.4.74:9876;192.168.4.124:9876
    #消息数据存放的根目录
    storePathRootDir=/data/rocketmq/rocketmq-a-m/store
    #commitlog保存目录
    storePathCommitLog=/data/rocketmq/rocketmq-a-m/store/commitlog
    #消费队列存储路径存储路径
    #storePathConsumerQueue = /data/rocketmq/rocketmq-a-m/store/consumequeue
    #enableDLegerCommitLog=true
    dLegerGroup=RaftNode00
    ## n0 n1 n2 分别是broker1,broker2,broker3 的 dLegerSelfId
    ## 例如:dLegerPeers=n0-服务器1的IP:40911;n1-服务器2的IP:40912;n2-服务器3的IP:40913
    dLegerPeers=a0-192.168.4.87:9871;a1-192.168.4.74:9871
    #dLegerPeers=a0-192.168.4.87:9871;a1-192.168.4.74:9871;a2-192.168.4.124:9871
    ## must be unique
    ## 这个值必须是在同一个RaftClusterGroup内唯一的
    dLegerSelfId=a0
    sendMessageThreadPoolNums=16
    ## 由于我的虚拟机配置了多个网卡,所以会绑定ip错误,因此我配置了这项,
    #brokerIP1=192.168.161.11
    
    ###########################################
    
    # enableControllerMode:Broker controller 模式的总开关,只有该值为 true,自动主从切换模式才会打开。默认为 false。
    enableControllerMode = true
    # controllerAddr:controller 的地址,多个 controller 中间用分号隔开。例如controllerAddr = 127.0.0.1:9877;127.0.0.1:9878;127.0.0.1:9879
    controllerAddr = 192.168.4.87:9873;192.168.4.74:9873;192.168.4.124:9873
    # syncBrokerMetadataPeriod:向 controller 同步 Broker 副本信息的时间间隔。默认 5000(5s)。
    syncBrokerMetadataPeriod = 5000
    # checkSyncStateSetPeriod:检查 SyncStateSet 的时间间隔,检查 SyncStateSet 可能会 shrink SyncState。默认5000(5s)。
    # syncControllerMetadataPeriod:同步 controller 元数据的时间间隔,主要是获取 active controller 的地址。默认10000(10s)。
    # haMaxTimeSlaveNotCatchup:表示 Slave 没有跟上 Master 的最大时间间隔,若在 SyncStateSet 中的 slave 超过该时间间隔会将其从 SyncStateSet 移除。默认为 15000(15s)。
    # storePathEpochFile:存储 epoch 文件的位置。epoch 文件非常重要,不可以随意删除。默认在 store 目录下。
    storePathEpochFile = /data/rocketmq/rocketmq-a-m/store
    #allAckInSyncStateSet:若该值为 true,则一条消息需要复制到 SyncStateSet 中的每一个副本才会向客户端返回成功,可以保证消息不丢失。默认为 false。
    allAckInSyncStateSet=true
    #syncFromLastFile:若 slave 是空盘启动,是否从最后一个文件进行复制。默认为 false。
    #asyncLearner:若该值为 true,则该副本不会进入 SyncStateSet,也就是不会被选举成 Master,而是一直作为一个 learner 副本进行异步复制。默认为false。
    #inSyncReplicas:需保持同步的副本组数量,默认为1,allAckInSyncStateSet=true 时该参数无效。
    #minInSyncReplicas:最小需保持同步的副本组数量,若 SyncStateSet 中副本个数小于 minInSyncReplicas 则 putMessage 直接返回 PutMessageStatus.IN_SYNC_REPLICAS_NOT_ENOUGH,默认为1。
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    在87	
    vim rocketmq-c-s/conf/broker.conf
    
    • 1
    • 2
    ## 集群名
    brokerClusterName = RaftCluster
    ## broker组名,同一个RaftClusterGroup内,brokerName名要一样
    brokerName=RaftNode22
    ## 监听的端口
    listenPort=30915
    ## 你设置的NameServer地址和端口
    namesrvAddr=192.168.4.87:9876;192.168.4.74:9876;192.168.4.124:9876
    #消息数据存放的根目录
    storePathRootDir=/data/rocketmq/rocketmq-c-s/store
    #commitlog保存目录
    storePathCommitLog=/data/rocketmq/rocketmq-c-s/store/commitlog
    #消费队列存储路径存储路径
    #storePathConsumerQueue = /data/rocketmq/rocketmq-a-m/store/consumequeue
    #enableDLegerCommitLog=true
    dLegerGroup=RaftNode22
    ## n0 n1 n2 分别是broker1,broker2,broker3 的 dLegerSelfId
    ## 例如:dLegerPeers=n0-服务器1的IP:40911;n1-服务器2的IP:40912;n2-服务器3的IP:40913
    dLegerPeers=c0-192.168.4.87:9875;c2-192.168.4.124:9875
    ## must be unique
    ## 这个值必须是在同一个RaftClusterGroup内唯一的
    dLegerSelfId=c0
    sendMessageThreadPoolNums=16
    ## 由于我的虚拟机配置了多个网卡,所以会绑定ip错误,因此我配置了这项,
    #brokerIP1=192.168.161.11
    
    ###########################################
    
    # enableControllerMode:Broker controller 模式的总开关,只有该值为 true,自动主从切换模式才会打开。默认为 false。
    enableControllerMode = true
    # controllerAddr:controller 的地址,多个 controller 中间用分号隔开。例如controllerAddr = 127.0.0.1:9877;127.0.0.1:9878;127.0.0.1:9879
    controllerAddr = 192.168.4.87:9873;192.168.4.74:9873;192.168.4.124:9873
    # syncBrokerMetadataPeriod:向 controller 同步 Broker 副本信息的时间间隔。默认 5000(5s)。
    syncBrokerMetadataPeriod = 5000
    # checkSyncStateSetPeriod:检查 SyncStateSet 的时间间隔,检查 SyncStateSet 可能会 shrink SyncState。默认5000(5s)。
    # syncControllerMetadataPeriod:同步 controller 元数据的时间间隔,主要是获取 active controller 的地址。默认10000(10s)。
    # haMaxTimeSlaveNotCatchup:表示 Slave 没有跟上 Master 的最大时间间隔,若在 SyncStateSet 中的 slave 超过该时间间隔会将其从 SyncStateSet 移除。默认为 15000(15s)。
    # storePathEpochFile:存储 epoch 文件的位置。epoch 文件非常重要,不可以随意删除。默认在 store 目录下。
    storePathEpochFile = /data/rocketmq/rocketmq-c-s/store
    #allAckInSyncStateSet:若该值为 true,则一条消息需要复制到 SyncStateSet 中的每一个副本才会向客户端返回成功,可以保证消息不丢失。默认为 false。
    allAckInSyncStateSet=true
    #syncFromLastFile:若 slave 是空盘启动,是否从最后一个文件进行复制。默认为 false。
    #asyncLearner:若该值为 true,则该副本不会进入 SyncStateSet,也就是不会被选举成 Master,而是一直作为一个 learner 副本进行异步复制。默认为false。
    #inSyncReplicas:需保持同步的副本组数量,默认为1,allAckInSyncStateSet=true 时该参数无效。
    #minInSyncReplicas:最小需保持同步的副本组数量,若 SyncStateSet 中副本个数小于 minInSyncReplicas 则 putMessage 直接返回 PutMessageStatus.IN_SYNC_REPLICAS_NOT_ENOUGH,默认为1。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    在74
    vim rocketmq-b-m/conf/broker.conf
    
    • 1
    • 2
    ## 集群名
    brokerClusterName = RaftCluster
    ## broker组名,同一个RaftClusterGroup内,brokerName名要一样
    brokerName=RaftNode11
    brokerId = 1
    brokerRole = SLAVE
    ## 监听的端口
    listenPort=30911
    ## 你设置的NameServer地址和端口
    namesrvAddr=192.168.4.87:9876;192.168.4.74:9876;192.168.4.124:9876
    #消息数据存放的根目录
    storePathRootDir=/data/rocketmq/rocketmq-b-m/store
    #commitlog保存目录
    storePathCommitLog=/data/rocketmq/rocketmq-b-m/store/commitlog
    #消费队列存储路径存储路径
    #storePathConsumerQueue = /data/rocketmq/rocketmq-b-m/store/consumequeue
    #enableDLegerCommitLog=true
    dLegerGroup=RaftNode11
    ## n0 n1 n2 分别是broker1,broker2,broker3 的 dLegerSelfId
    ## 例如:dLegerPeers=n0-服务器1的IP:40911;n1-服务器2的IP:40912;n2-服务器3的IP:40913
    dLegerPeers=b1-192.168.4.74:9874;b2-192.168.4.124:9874
    #dLegerPeers=a0-192.168.4.87:9871;a1-192.168.4.74:9871;a2-192.168.4.124:9871
    ## must be unique
    ## 这个值必须是在同一个RaftClusterGroup内唯一的
    dLegerSelfId=b1
    sendMessageThreadPoolNums=16
    ## 由于我的虚拟机配置了多个网卡,所以会绑定ip错误,因此我配置了这项,
    #brokerIP1=192.168.161.11
    
    ###########################################
    
    # enableControllerMode:Broker controller 模式的总开关,只有该值为 true,自动主从切换模式才会打开。默认为 false。
    enableControllerMode = true
    # controllerAddr:controller 的地址,多个 controller 中间用分号隔开。例如controllerAddr = 127.0.0.1:9877;127.0.0.1:9878;127.0.0.1:9879
    controllerAddr = 192.168.4.87:9873;192.168.4.74:9873;192.168.4.124:9873
    # syncBrokerMetadataPeriod:向 controller 同步 Broker 副本信息的时间间隔。默认 5000(5s)。
    syncBrokerMetadataPeriod = 5000
    # checkSyncStateSetPeriod:检查 SyncStateSet 的时间间隔,检查 SyncStateSet 可能会 shrink SyncState。默认5000(5s)。
    # syncControllerMetadataPeriod:同步 controller 元数据的时间间隔,主要是获取 active controller 的地址。默认10000(10s)。
    # haMaxTimeSlaveNotCatchup:表示 Slave 没有跟上 Master 的最大时间间隔,若在 SyncStateSet 中的 slave 超过该时间间隔会将其从 SyncStateSet 移除。默认为 15000(15s)。
    # storePathEpochFile:存储 epoch 文件的位置。epoch 文件非常重要,不可以随意删除。默认在 store 目录下。
    storePathEpochFile = /data/rocketmq/rocketmq-b-m/store
    #allAckInSyncStateSet:若该值为 true,则一条消息需要复制到 SyncStateSet 中的每一个副本才会向客户端返回成功,可以保证消息不丢失。默认为 false。
    allAckInSyncStateSet=true
    #syncFromLastFile:若 slave 是空盘启动,是否从最后一个文件进行复制。默认为 false。
    #asyncLearner:若该值为 true,则该副本不会进入 SyncStateSet,也就是不会被选举成 Master,而是一直作为一个 learner 副本进行异步复制。默认为false。
    #inSyncReplicas:需保持同步的副本组数量,默认为1,allAckInSyncStateSet=true 时该参数无效。
    #minInSyncReplicas:最小需保持同步的副本组数量,若 SyncStateSet 中副本个数小于 minInSyncReplicas 则 putMessage 直接返回 PutMessageStatus.IN_SYNC_REPLICAS_NOT_ENOUGH,默认为1。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    在74
    vim rocketmq-a-s/conf/broker.conf
    
    • 1
    • 2
    ## 集群名
    brokerClusterName = RaftCluster
    ## broker组名,同一个RaftClusterGroup内,brokerName名要一样
    brokerName=RaftNode00
    ## 监听的端口
    listenPort=30915
    ## 你设置的NameServer地址和端口
    namesrvAddr=192.168.4.87:9876;192.168.4.74:9876;192.168.4.124:9876
    #消息数据存放的根目录
    storePathRootDir=/data/rocketmq/rocketmq-a-s/store
    #commitlog保存目录
    storePathCommitLog=/data/rocketmq/rocketmq-a-s/store/commitlog
    #消费队列存储路径存储路径
    #storePathConsumerQueue = /data/rocketmq/rocketmq-b-m/store/consumequeue
    #enableDLegerCommitLog=true
    dLegerGroup=RaftNode00
    ## n0 n1 n2 分别是broker1,broker2,broker3 的 dLegerSelfId
    ## 例如:dLegerPeers=n0-服务器1的IP:40911;n1-服务器2的IP:40912;n2-服务器3的IP:40913
    dLegerPeers=a0-192.168.4.87:9871;a1-192.168.4.74:9871
    ## must be unique
    ## 这个值必须是在同一个RaftClusterGroup内唯一的
    dLegerSelfId=a1
    sendMessageThreadPoolNums=16
    ## 由于我的虚拟机配置了多个网卡,所以会绑定ip错误,因此我配置了这项,
    #brokerIP1=192.168.161.11
    
    ###########################################
    
    # enableControllerMode:Broker controller 模式的总开关,只有该值为 true,自动主从切换模式才会打开。默认为 false。
    enableControllerMode = true
    # controllerAddr:controller 的地址,多个 controller 中间用分号隔开。例如controllerAddr = 127.0.0.1:9877;127.0.0.1:9878;127.0.0.1:9879
    controllerAddr = 192.168.4.87:9873;192.168.4.74:9873;192.168.4.124:9873
    # syncBrokerMetadataPeriod:向 controller 同步 Broker 副本信息的时间间隔。默认 5000(5s)。
    syncBrokerMetadataPeriod = 5000
    # checkSyncStateSetPeriod:检查 SyncStateSet 的时间间隔,检查 SyncStateSet 可能会 shrink SyncState。默认5000(5s)。
    # syncControllerMetadataPeriod:同步 controller 元数据的时间间隔,主要是获取 active controller 的地址。默认10000(10s)。
    # haMaxTimeSlaveNotCatchup:表示 Slave 没有跟上 Master 的最大时间间隔,若在 SyncStateSet 中的 slave 超过该时间间隔会将其从 SyncStateSet 移除。默认为 15000(15s)。
    # storePathEpochFile:存储 epoch 文件的位置。epoch 文件非常重要,不可以随意删除。默认在 store 目录下。
    storePathEpochFile = /data/rocketmq/rocketmq-a-s/store
    #allAckInSyncStateSet:若该值为 true,则一条消息需要复制到 SyncStateSet 中的每一个副本才会向客户端返回成功,可以保证消息不丢失。默认为 false。
    allAckInSyncStateSet=true
    #syncFromLastFile:若 slave 是空盘启动,是否从最后一个文件进行复制。默认为 false。
    #asyncLearner:若该值为 true,则该副本不会进入 SyncStateSet,也就是不会被选举成 Master,而是一直作为一个 learner 副本进行异步复制。默认为false。
    #inSyncReplicas:需保持同步的副本组数量,默认为1,allAckInSyncStateSet=true 时该参数无效。
    #minInSyncReplicas:最小需保持同步的副本组数量,若 SyncStateSet 中副本个数小于 minInSyncReplicas 则 putMessage 直接返回 PutMessageStatus.IN_SYNC_REPLICAS_NOT_ENOUGH,默认为1。
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    在124
    vim rocketmq-c-m/conf/broker.conf
    
    • 1
    • 2
    ## 集群名
    brokerClusterName = RaftCluster
    ## broker组名,同一个RaftClusterGroup内,brokerName名要一样
    brokerName=RaftNode22
    ## 监听的端口
    listenPort=30911
    ## 你设置的NameServer地址和端口
    namesrvAddr=192.168.4.87:9876;192.168.4.74:9876;192.168.4.124:9876
    #消息数据存放的根目录
    storePathRootDir=/data/rocketmq/rocketmq-c-m/store
    #commitlog保存目录
    storePathCommitLog=/data/rocketmq/rocketmq-c-m/store/commitlog
    #消费队列存储路径存储路径
    #storePathConsumerQueue = /data/rocketmq/rocketmq-a-m/store/consumequeue
    #enableDLegerCommitLog=true
    dLegerGroup=RaftNode22
    ## n0 n1 n2 分别是broker1,broker2,broker3 的 dLegerSelfId
    ## 例如:dLegerPeers=n0-服务器1的IP:40911;n1-服务器2的IP:40912;n2-服务器3的IP:40913
    dLegerPeers=c0-192.168.4.87:9875;c2-192.168.4.124:9875
    #dLegerPeers=a0-192.168.4.87:9871;a1-192.168.4.74:9871;a2-192.168.4.124:9871
    ## must be unique
    ## 这个值必须是在同一个RaftClusterGroup内唯一的
    dLegerSelfId=c2
    sendMessageThreadPoolNums=16
    ## 由于我的虚拟机配置了多个网卡,所以会绑定ip错误,因此我配置了这项,
    #brokerIP1=192.168.161.11
    
    ###########################################
    
    # enableControllerMode:Broker controller 模式的总开关,只有该值为 true,自动主从切换模式才会打开。默认为 false。
    enableControllerMode = true
    # controllerAddr:controller 的地址,多个 controller 中间用分号隔开。例如controllerAddr = 127.0.0.1:9877;127.0.0.1:9878;127.0.0.1:9879
    controllerAddr = 192.168.4.87:9873;192.168.4.74:9873;192.168.4.124:9873
    # syncBrokerMetadataPeriod:向 controller 同步 Broker 副本信息的时间间隔。默认 5000(5s)。
    syncBrokerMetadataPeriod = 5000
    # checkSyncStateSetPeriod:检查 SyncStateSet 的时间间隔,检查 SyncStateSet 可能会 shrink SyncState。默认5000(5s)。
    # syncControllerMetadataPeriod:同步 controller 元数据的时间间隔,主要是获取 active controller 的地址。默认10000(10s)。
    # haMaxTimeSlaveNotCatchup:表示 Slave 没有跟上 Master 的最大时间间隔,若在 SyncStateSet 中的 slave 超过该时间间隔会将其从 SyncStateSet 移除。默认为 15000(15s)。
    # storePathEpochFile:存储 epoch 文件的位置。epoch 文件非常重要,不可以随意删除。默认在 store 目录下。
    storePathEpochFile = /data/rocketmq/rocketmq-c-m/store
    #allAckInSyncStateSet:若该值为 true,则一条消息需要复制到 SyncStateSet 中的每一个副本才会向客户端返回成功,可以保证消息不丢失。默认为 false。
    allAckInSyncStateSet=true
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    在124
    vim rocketmq-b-s/conf/broker.conf
    
    • 1
    • 2
    brokerName=RaftNode11
    ## 监听的端口
    listenPort=30915
    ## 你设置的NameServer地址和端口
    namesrvAddr=192.168.4.87:9876;192.168.4.74:9876;192.168.4.124:9876
    #消息数据存放的根目录
    storePathRootDir=/data/rocketmq/rocketmq-b-s/store
    #commitlog保存目录
    storePathCommitLog=/data/rocketmq/rocketmq-b-s/store/commitlog
    #消费队列存储路径存储路径
    #storePathConsumerQueue = /data/rocketmq/rocketmq-a-m/store/consumequeue
    #enableDLegerCommitLog=true
    dLegerGroup=RaftNode11
    ## n0 n1 n2 分别是broker1,broker2,broker3 的 dLegerSelfId
    ## 例如:dLegerPeers=n0-服务器1的IP:40911;n1-服务器2的IP:40912;n2-服务器3的IP:40913
    dLegerPeers=b1-192.168.4.74:9874;b2-192.168.4.124:9874
    ## must be unique
    ## 这个值必须是在同一个RaftClusterGroup内唯一的
    dLegerSelfId=b2
    sendMessageThreadPoolNums=16
    ## 由于我的虚拟机配置了多个网卡,所以会绑定ip错误,因此我配置了这项,
    #brokerIP1=192.168.161.11
    
    ###########################################
    
    # enableControllerMode:Broker controller 模式的总开关,只有该值为 true,自动主从切换模式才会打开。默认为 false。
    enableControllerMode = true
    # controllerAddr:controller 的地址,多个 controller 中间用分号隔开。例如controllerAddr = 127.0.0.1:9877;127.0.0.1:9878;127.0.0.1:9879
    controllerAddr = 192.168.4.87:9873;192.168.4.74:9873;192.168.4.124:9873
    # syncBrokerMetadataPeriod:向 controller 同步 Broker 副本信息的时间间隔。默认 5000(5s)。
    syncBrokerMetadataPeriod = 5000
    # checkSyncStateSetPeriod:检查 SyncStateSet 的时间间隔,检查 SyncStateSet 可能会 shrink SyncState。默认5000(5s)。
    # syncControllerMetadataPeriod:同步 controller 元数据的时间间隔,主要是获取 active controller 的地址。默认10000(10s)。
    # haMaxTimeSlaveNotCatchup:表示 Slave 没有跟上 Master 的最大时间间隔,若在 SyncStateSet 中的 slave 超过该时间间隔会将其从 SyncStateSet 移除。默认为 15000(15s)。
    # storePathEpochFile:存储 epoch 文件的位置。epoch 文件非常重要,不可以随意删除。默认在 store 目录下。
    storePathEpochFile = /data/rocketmq/rocketmq-b-s/store
    #allAckInSyncStateSet:若该值为 true,则一条消息需要复制到 SyncStateSet 中的每一个副本才会向客户端返回成功,可以保证消息不丢失。默认为 false。
    allAckInSyncStateSet=true
    #syncFromLastFile:若 slave 是空盘启动,是否从最后一个文件进行复制。默认为 false。
    #asyncLearner:若该值为 true,则该副本不会进入 SyncStateSet,也就是不会被选举成 Master,而是一直作为一个 learner 副本进行异步复制。默认为false。
    #inSyncReplicas:需保持同步的副本组数量,默认为1,allAckInSyncStateSet=true 时该参数无效。
    #minInSyncReplicas:最小需保持同步的副本组数量,若 SyncStateSet 中副本个数小于 minInSyncReplicas 则 putMessage 直接返回 PutMessageStatus.IN_SYNC_REPLICAS_NOT_ENOUGH,默认为1。
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    启动Broker

    在87
     vim start_broker.sh
    
    • 1
    • 2
    #!/bin/sh
      
    #cd `dirname $0`
    #获取软连接的真实路径
    DIR=`S=\`readlink "$0"\`; [ -z "$S" ] && S=$0; dirname $S`
    cd "$DIR"
    
    echo `pwd`
    
    today=`date +"%Y%m%d"`
    datetime=`date +"%Y%m%d%H%M%S"`
    
    
    #nohup sh bin/mqnamesrv > nohubNameserv &
    nohup sh bin/mqbroker -c ./rocketmq-a-m/conf/broker.conf > nohubBroker-a-m.log &
    nohup sh bin/mqbroker -c ./rocketmq-c-s/conf/broker.conf > nohubBroker-c-s.log &
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    	chmod +x ./vim start_broker.sh
    	./vim start_broker.sh
    
    • 1
    • 2

    日志:

    (base) [root@server87 rocketmq]# tail -f nohubBroker-*.log 
    ==> nohubBroker-a-m.log <==
    10:24:43,072 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [RocketmqBrokerMetricsSiftingAppender] to Logger[io.opentelemetry.exporter.logging.otlp.OtlpJsonLoggingMetricExporter]
    10:24:43,072 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.classic.model.processor.LoggerModelHandler - Setting level of logger [io.opentelemetry.exporter.logging.LoggingMetricExporter] to INFO
    10:24:43,072 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.classic.model.processor.LoggerModelHandler - Setting additivity of logger [io.opentelemetry.exporter.logging.LoggingMetricExporter] to false
    10:24:43,072 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [RocketmqBrokerMetricsSiftingAppender] to Logger[io.opentelemetry.exporter.logging.LoggingMetricExporter]
    10:24:43,072 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.classic.model.processor.RootLoggerModelHandler - Setting level of ROOT logger to INFO
    10:24:43,072 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [DefaultSiftingAppender] to Logger[ROOT]
    10:24:43,073 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.core.model.processor.DefaultProcessor@7a9273a8 - End of configuration.
    10:24:43,074 |-INFO in org.apache.rocketmq.common.logging.JoranConfiguratorExt@26a7b76d - Registering current configuration as safe fallback point
    
    The broker[RaftNode00, 192.168.4.87:30911] boot success. serializeType=JSON and name server is 192.168.4.87:9876;192.168.4.74:9876;192.168.4.124:9876
    
    ==> nohubBroker-c-s.log <==
    10:24:43,089 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [RocketmqBrokerMetricsSiftingAppender] to Logger[io.opentelemetry.exporter.logging.otlp.OtlpJsonLoggingMetricExporter]
    10:24:43,089 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.classic.model.processor.LoggerModelHandler - Setting level of logger [io.opentelemetry.exporter.logging.LoggingMetricExporter] to INFO
    10:24:43,089 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.classic.model.processor.LoggerModelHandler - Setting additivity of logger [io.opentelemetry.exporter.logging.LoggingMetricExporter] to false
    10:24:43,089 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [RocketmqBrokerMetricsSiftingAppender] to Logger[io.opentelemetry.exporter.logging.LoggingMetricExporter]
    10:24:43,089 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.classic.model.processor.RootLoggerModelHandler - Setting level of ROOT logger to INFO
    10:24:43,089 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [DefaultSiftingAppender] to Logger[ROOT]
    10:24:43,090 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.core.model.processor.DefaultProcessor@7a9273a8 - End of configuration.
    10:24:43,090 |-INFO in org.apache.rocketmq.common.logging.JoranConfiguratorExt@26a7b76d - Registering current configuration as safe fallback point
    
    The broker[RaftNode22, 192.168.4.87:30915] boot success. serializeType=JSON and name server is 192.168.4.87:9876;192.168.4.74:9876;192.168.4.124:9876
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    启动管制台直接docker 启动即可,修改 -e 后面 nameserver 参数即可

    
    docker run -d \
    --name rocketmq-dashboard \
    --restart always \
    -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.4.87:9876;192.168.4.74:9876;192.168.4.124:9876" \
    -p 8088:8080 \
    -t apacherocketmq/rocketmq-dashboard:latest
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    http://192.168.4.87:8088/#/cluster
    在这里插入图片描述

    端口列表

    30909
    30911
    30912
    30913
    30915
    30916
    
    9876
    9871
    9873
    9874
    9875
    9877
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  • 相关阅读:
    【矩阵】计算鞍点
    模拟电路知识点总结(极简略版)--基本放大电路
    Mybatis-plus中Service和Mapper
    Centos7 安装 RabbitMQ
    php socket说明 stream流说明
    Spring Boot项目怎么对System.setProperty(key, value)设置的属性进行读取加解密
    读像火箭科学家一样思考笔记03_第一性原理(上)
    【分享】xpath的路径表达式
    java计算机毕业设计ssm基于C程序课程的题库在线平台(源码+系统+mysql数据库+Lw文档)
    [附源码]计算机毕业设计springboot教学辅助系统
  • 原文地址:https://blog.csdn.net/andnnl/article/details/133984242