rocketmq最主要的兩個程序nameserver和broker;nameserver主要負責(尋址-調度-切換),就是不需要keepalived,broker是消息隊列的主程序,這就不用多說了
host:
rocketmq1:11.0.0.15
rocketmq2:11.0.0.16
1.準備jdk和maven環境
cd /tools
wget http://endless.ws/jdk-8u151-linux-x64.tar.gz
tar xf jdk-8u151-linux-x64.tar.gz
mv jdk-8u151-linux-x64 /usr/local/jdk-8u151
ln -s /usr/local/jdk-8u151 /usr/local/jdk
cat >>~/.bash_profile<<EOF
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar
export PATH=\$JAVA_HOME/bin:\$PATH:\$HOME/bin
EOF
cd /tools
wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz
tar xf apache-maven-3.5.2-bin.tar.gz
mv apache-maven-3.5.2 /usr/local/maven-3.5.2
ln -s /usr/local/maven-3.5.2 /usr/local/maven
cat >>~/.bash_profile<<EOF
export MAVEN_HOME=/usr/local/maven
export PATH=\$MAVEN_HOME/bin:\$PATH
EOF
source ~/.bash_profile
2.下載rocketmq4.*(java程序)
cd /tools
wget https://github.com/apache/rocketmq/archive/rocketmq-all-4.1.0-incubating.tar.gz
yum install glibc.i686 -y
tar xf rocketmq-all-4.1.0-incubating.tar.gz
cd rocketmq-rocketmq-all-4.1.0-incubating
mvn -Prelease-all -DskipTests clean install -U
cd distribution/target/
cp -rp apache-rocketmq /usr/local/rocketmq
!#以上步驟可以使用兩臺服務器部署,到這裏rocketmq已經放到運維常用的目錄了,接下來就是配置等等問題。
3.配置(看好不爬坑)
我們選擇11.0.0.15做rocketmq調度尋址器(nameserver)
3.1 配置一(只列出了修改的行)
vim /usr/local/rocketmq/bin/runserver.sh
#!/bin/sh
JAVA_HOME=/usr/local/jdk #添加變量
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m -XX:MaxPermSize=320m" #你確定你們的機器有如此大的內存
#這裏runserver.sh配置完成
3.2 配置二(只列出了修改的行)
vim /usr/local/rocketmq/bin/runbroker.sh
#!/bin/sh
JAVA_HOME=/usr/local/jdk #添加變量
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m" #你確定你的內存很大
JAVA_OPT="${JAVA_OPT} -XX:MaxDirectMemorySize=1g" #你確定你的內存有16G
3.3 啓動尋址器11.0.0.15 配置三(尋址器啓動一個即可)
#替換
sed -i 's#${user.home}#/usr/local/rocketmq#g' /usr/local/rocketmq/conf/*.xml
#做host解析
vim /etc/hosts
ip1 hostname1
ip2 hostname2
#啓動mqnamesrv查看
nohup sh /usr/local/rocketmq/bin/mqnamesrv &
netstat -luntp #可以看見一個9876端口,尋址器啓動成功
配置雙主(爲了方便將舊的rocketmq進行切換,如果是使用舊的mq尋址器,後面的新mq服務器則可以不啓動尋址器)
這裏選擇conf目錄中的2m-noslave配置文件(自己根據需求配置)
cd /usr/local/rocketmq/conf/2m-noslave
vim broker-a.properties
brokerClusterName=DefaultCluster #集羣名稱
brokerName=broker-a #集羣中第一臺broker的名稱,可以自己設,如果不是第一臺可以使用a1啥的
brokerId=0 #0代表主 >0從
namesrvAddr=11.0.0.15:9876 #假如有一臺舊的尋址器11.0.0.12:9876(則填)
brokerIP1=11.0.0.15
defaultTopicQueueNums=4
listenPort=10911 #broker監聽端口
deleteWhen=04
fileReservedTime=120
mapedFileSizeCommitLog=1073741824
mapedFileSizeConsumeQueue=50000000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
diskMaxUsedSpaceRatio=88
storePathRootDir=/data/rocketmq/store
storePathCommitLog=/data/rocketmq/store/commitlog
flushIntervalCommitLog=1000
flushCommitLogTimed=false
maxTransferBytesOnMessageInMemory=262144
maxTransferCountOnMessageInMemory=32
maxTransferBytesOnMessageInDisk=65536
maxTransferCountOnMessageInDisk=8
accessMessageInMemoryMaxRatio=40
messageIndexEnable=true
messageIndexSafe=false
flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
checkTransactionMessageEnable=false
sendMessageThreadPoolNums=128
pullMessageThreadPoolNums=128
3.4 配置四
#創建配置文件中數據目錄
mkdir /data/rocketmq/store/commitlog -p
mkdir /usr/local/rocketmq/logs/rocketmqlogs -p
#啓動mqbroker
nohup sh /usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties &
#如果看到10909 10911 10912代表這臺mq啓動成功了
3.5配置五
#第二臺mq配置大致相同(不需要啓動尋址器mqnamesrv),依然是配置broker-a.properties
#尋址器依然是配 namesrvAddr=11.0.0.15:9876
#broker名稱 brokerName=broker-a1
#本機IP brokerIP1=11.0.0.16
#到這裏其實可以啓動broker了
nohup sh /usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties &
3.6 高興的太早還不行
#這裏還需要將第一臺mq的store目錄拷貝到新mq的對應目錄
scp -rp [email protected]:/data/rocketmq/store /data/rocketmq/
#有的同學可能不在/data目錄(自己查看內容是否正確,還有位置)
scp -rp [email protected]:/root/store /data/rocketmq/
自己測試,最好安裝一個console,可以查看到流量是否過去
#在主rocketmq節點上下載一下rocketmq-externals打個jar包,啓動一下,web頁面去看
#自己去玩
#所以你再也不擔心主mq掛了,三主也可以的,只不過名稱以此類推,自己定義,這樣你就完成了簡易的橫向擴展。
cd /usr/local/src/
git clone https://github.com/apache/rocketmq-externals.git
cd rocketmq-externals/rocketmq-console
mvn -DskipTests clean install -U
cd target/
java -jar rocketmq-console-ng-1.0.0.jar