方法1:Centos7による方法
1. 必要な事前環境
2. インストール前の設定
1. jdk 1.8のインストール(手順省略)
インストールパッケージを該当ディレクトリ(/usr/local/java/jdk1.8.0_211/bin/java)にダウンロードし、解凍します。
環境変数を設定するだけです。
#打开环境变量配置文件
vim /etc/profile
########### profile 文件中新增如下三行 ###########
export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64
export CLASS_PATH="$JAVA_HOME/lib"
export PATH="$PATH:$JAVA_HOME/bin"
# 配置立刻生效
source /etc/profile
2.Mavenをインストールする
(1)、ダウンロード、*.tar.gz をダウンロード
wget https://downloads.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz
(2)解凍して名前を変更し、インストール先のディレクトリに移動します。
# 解压
tar -zxvf apache-maven-3.8.4-bin.tar.gz
# 重命名
mv apache-maven-3.8.4 maven
# 移动maven到/usr/local/
mv maven /usr/local/
# 修改maven配置文件,添加阿里云仓库
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
# 如果jar拉取不下来,可以换成maven仓库
<mirror>
<id>maven2</id>
<name>maven2</name>
<url>https://repo1.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
# 配置环境变量
vim /etc/profile
# profile 文件中新增如下两行
export MAVEN_HOME=/usr/local/maven
export PATH=$PATH:$MAVEN_HOME/bin
# 配置立刻生效
source /etc/profile
# 检验是否安装成功
mvn -v
3. RocketMQ をインストールする
1. ダウンロード
githubからダウンロード(zipパッケージをダウンロード)
ソース zip ソース パッケージ:ソース パッケージ(バージョン 4.9.2)
拡張パッケージのダウンロード (別のプロジェクトである元の rocketmq-console から):拡張パッケージ (ページ コンソール)
2. mqnamesrv サービスを開始します。
# 解压源码包
unzip rocketmq-rocketmq-all-4.9.2.zip
# 进入解压的源码包
cd rocketmq-rocketmq-all-4.9.2
# 编译源码
mvn -Prelease-all -DskipTests clean install -U
# 找到编译后的文件包(distribution/target/rocketmq-4.9.2)
cd distribution/target
# 将rocketmq-4.9.2重新命名为rocketmq并且移动到/usr/local/下
mv rocketmq-4.9.2 rocketmq
mv rocketmq /usr/local/
# 进入bin目录并启动mqnamesrv服务(如果启动失败,可打开runserver.sh,把最小需要内存4G调小)
cd /usr/local/rocketmq/bin
./mqnamesrv
3. mqbroker サービスを開始します
# 重新打开shell窗口,启动mqbroker服务
cd /usr/local/rocketmq/bin
./mqbroker
注: 起動時に次のエラーが報告された場合は、メモリが不足していることを意味します。調整可能な runbroker.sh に必要な最小メモリは、
Java HotSpot(TM) 64 ビット サーバー VM の警告です: INFO: os::commit_memory(0x00000005c0000000) 、8589934592、0) 失敗しました ; エラー='メモリを割り当てられません' (errno=12)
runbroker.sh ファイルを表示すると、mqbroker を起動するには少なくとも 8g のメモリが必要であることがわかります。
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g"
解決:
# 进入runbroker.sh
vim runbroker.sh
# 修改最小需要启动内存大小为
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m"
# 重新启动mqbroker服务,并且连接到注册中心,否则控制台找不到broker
./mqbroker -n localhost:9876
如果找不到主机,可修改host添加一条对应
vim /etc/hosts
如果需要支持sql过滤需要在,broker.conf配置文件里面增加一条配置
enablePropertyFilter=true
同时启动的时候需要加上配置文件(conf目录)
../bin/mqbroker -n localhost:9876 -c broker.conf
4. テスト構成の追加
添加mqnamesrv环境变量,尽量添加到export一起
vi tools.sh
export NAMESRV_ADDR=localhost:9876
测试消息生产消费:
生产:
./tools.sh org.apache.rocketmq.example.quickstart.Producer
消费:
./tools.sh org.apache.rocketmq.example.quickstart.Consumer
5. 拡張サービス データボードと Web コンソールを起動します
# 解压下载的扩展文件rocketmq-dashboard-master.zip
unzip rocketmq-dashboard-master.zip
# 进入解压文件,并进入到rocketmq-console
cd rocketmq-dashboard-master
# 控制台为springboot项目,修改application.properties配置,设置注册中心地址
rocketmq.config.namesrvAddr=127.0.0.1:9876
# 执行编译
mvn clean package -Dmaven.test.skip=true
# 找到编译后的rocketmq-dashboard-1.0.1-SNAPSHOT.jar
#并复制到/usr/local/rocketmq-dashboard(需要新建rocketmq-dashboard)
cd target
cp rocketmq-dashboard-1.0.1-SNAPSHOT.jar /usr/local/rocketmq-dashboard/
# 进入 /usr/local/rocketmq-dashboard/,启动web服务
cd /usr/local/rocketmq-dashboard/
java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar
# 如果要后台启动,使用
nohup java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar
発生した問題:
[INFO] Downloading https://nodejs.org/dist/v16.2.0/node-v16.2.0-linux-x64.tar.gz to /root/.m2/repository/com/github/eirslett/node/16.2.0/node-16.2.0-linux-x64.tar.gz
[INFO] No proxies configured
[INFO] No proxy was configured, downloading directly
ネットワーク上の理由により、node-v16.2.0-linux-x64.tar.gz をコンパイルしてダウンロードするときに、ダウンロードに失敗する可能性があります。現時点では、https://nodejs.org/dist を手動でダウンロードできます。 /v16.2.0/node -v16.2.0-linux-x64.tar.gzをサービスにアップロードし、対応する場所 /root/.m2/repository/com/github/eirslett/node/16.2 に配置します。 .0/ にファイルを配置します。名前が、node-v16.2.0-linux-x64.tar.gz から、コンパイル要件を満たす node-16.2.0-linux-x64.tar.g に変更され、再コンパイルされます。上記の手順を実行します
サービスが開始されると、ブラウザは IP: 8080 (デフォルト ポート 8080) で Web コンソールにアクセスできるようになります。
起動後に起動ログにエラーが報告される場合
原因: org.apache.rocketmq.remoting.Exception.RemotingConnectException: null への接続に失敗しました
解決:
# 找到broker.conf 文件(rocketmq/conf/broker.conf),新增如下两行
namesrvAddr=127.0.0.1:9876
# 指定的ip地址即是linux本身的IP地址
brokerIP1=10.118.241.145
# 重新启动mqnamesrv和mqbroker以及rocketmq-console服务
./mqnamesrv
./mqbroker -n localhost:9876 -c ../conf/broker.conf
java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar
# 后台启动方式
./mqnamesrv &
./mqbroker -n localhost:9876 -c ../conf/broker.conf &
nohup java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar --rocketmq.config.namesrvAddr=localhost:9876 > console-ng.log 2>&1&
4、遭遇したピット
公式 Web サイトから送信されるテスト プログラムを開始してメッセージを送信する前に、rocketmq のデフォルトのサービス ポート番号 (9876) と VIP ポート番号を有効にする必要があります。有効にしないと、メッセージ送信時にエラーが報告されます。
Vip ポート番号の表示方法、rocketmq-console コントロール ページを開く
応答ポート番号を開きます
firewall-cmd --zone=public --add-port=9876/tcp --permanent
firewall-cmd --zone=public --add-port=10911/tcp --permanent
firewall-cmd --reload
設定が完了した後、コンソールを再起動してもエラーは報告されません。公式 Web サイトのプロデューサーの例を探してメッセージを送信しました。その結果、仮想マシンを使用しているため、ディスクの容量が比較的小さく、使用率が高くなります。プログラムは、ディスク サイズが不十分であることを意味するエラーを報告します。
Caused by: org.apache.rocketmq.client.exception.MQBrokerException: CODE: 14 DESC: service not available now. It may be caused by one of the following reasons: the broker's disk is full [CL: 0.91 CQ: 0.91 INDEX: 0.91], messages are put to the slave, message store has been shut down, etc. BROKER: 10.118.241.145:10911
デフォルトでは、rocketmq は、残りのディスクの比率が 75% 未満 (この比率は rocketmq のバージョンによって異なるようです) をディスク容量不足として扱います。
解決:
1. ディスクを拡張します
2. borker.conf を設定して、ディスク不足を報告するためのしきい値を増やす
vim broker.conf
# 在文件新增一行配置,磁盘使用率达到99%才允许报磁盘不足
diskMaxUsedSpaceRatio=99
次に、ブローカー サービスを再起動し、メッセージを再度送信し、正常に送信します。
注: プロデューサがメッセージ コードを送信するときは、メッセージの送信後に shutdown を呼び出さないでください。そうしないと、Web コンソールはプロデューサ ページをクエリできなくなります。
# 生产环境一定要注释掉
//producer.shutdown();
この時点で、簡単な構築プロセス全体が完了します
方法 2: Docker メソッド
1. イメージをプルして namesrv サービスを作成します
docker pull rocketmqinc/rocketmq
namesrv データストレージパスを作成する
mkdir -p /data/docker/rocketmq/data/namesrv/logs /data/docker/rocketmq/data/namesrv/store
コンテナを構築する
docker run -d \
--restart=always \
--name rmqnamesrv \
-p 9876:9876 \
-v /data/docker/rocketmq/data/namesrv/logs:/root/logs \
-v /data/docker/rocketmq/data/namesrv/store:/root/store \
-e "MAX_POSSIBLE_HEAP=100000000" \
rocketmqinc/rocketmq \
sh mqnamesrv
2. ブローカーノードを作成する
ブローカー データ ストレージ パスの作成
mkdir -p /data/docker/rocketmq/data/broker/logs /data/docker/rocketmq/data/broker/store /data/docker/rocketmq/conf
構成ファイルを読み取るブローカーを作成する
vi /data/docker/rocketmq/conf/broker.conf
設定ファイルの内容は以下のとおりです。
# 所属集群名称,如果节点较多可以配置多个
brokerClusterName = DefaultCluster
#broker名称,master和slave使用相同的名称,表明他们的主从关系
brokerName = broker-a
#0表示Master,大于0表示不同的slave
brokerId = 0
#表示几点做消息删除动作,默认是凌晨4点
deleteWhen = 04
#在磁盘上保留消息的时长,单位是小时
fileReservedTime = 48
#有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机制;
brokerRole = ASYNC_MASTER
#刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH
# 设置broker节点所在服务器的ip地址
brokerIP1 = 192.168.2.115
# 开启权限认证
#aclEnable=true
権限認証を有効にするには、plain_acl.yml を作成する必要があります。
vi /data/docker/rocketmq/conf/plain_acl.yml
ユーザー権限を構成する
globalWhiteRemoteAddresses:
accounts:
- accessKey: RocketMQ
secretKey: 123456
whiteRemoteAddress:
admin: false
defaultTopicPerm: DENY
defaultGroupPerm: SUB
topicPerms:
# 用户RocketMQ只能发送TopicTest的消息,其他topic无权限发送
- TopicTest=PUB
groupPerms:
# the group should convert to retry topic
- oms_consumer_group=DENY
- accessKey: admin
secretKey: 123456
whiteRemoteAddress:
# if it is admin, it could access all resources
admin: true
ブローカーコンテナを構築する
非オープン許可方式:(推奨)
docker run -d \
--restart=always \
--name rmqbroker \
--link rmqnamesrv:namesrv \
-p 10911:10911 \
-p 10909:10909 \
-v /data/docker/rocketmq/data/broker/logs:/root/logs \
-v /data/docker/rocketmq/data/broker/store:/root/store \
-v /data/docker/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf \
-e "NAMESRV_ADDR=namesrv:9876" \
-e "MAX_POSSIBLE_HEAP=200000000" \
rocketmqinc/rocketmq \
sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
権限を有効にする方法:
docker run -d \
--restart=always \
--name rmqbroker \
--link rmqnamesrv:namesrv \
-p 10911:10911 \
-p 10909:10909 \
-v /data/docker/rocketmq/data/broker/logs:/root/logs \
-v /data/docker/rocketmq/data/broker/store:/root/store \
-v /data/docker/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf \
-v /data/docker/rocketmq/conf/plain_acl.yml:/opt/rocketmq-4.4.0/conf/plain_acl.yml \
-e "NAMESRV_ADDR=namesrv:9876" \
-e "MAX_POSSIBLE_HEAP=200000000" \
rocketmqinc/rocketmq \
sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
3.rockermq-console サービスを作成する
画像をプルします
docker pull pangliang/rocketmq-console-ng
Rockermq-console-ng コンテナーを構築する
docker run -d \
--restart=always \
--name rmqadmin \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.2.115:9876 \
-Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 9999:8080 \
pangliang/rocketmq-console-ng
コンソールにアクセスするには、ip:9999 にアクセスします。
ログインするために管理ページを開く必要がある場合は、/data/docker/rocketmq/dashboard フォルダーに users.properties ファイルを作成し、再起動しなくても有効になるようにユーザー名とパスワードを更新します。
# This file supports hot change, any change will be auto-reloaded without Console restarting.
# Format: a user per line, username=password[,N] #N is optional, 0 (Normal User); 1 (Admin)
# Define Admin
# =============用户名和密码规则「用户名=密码,权限」,这里的权限为1表示管理员,为0表示普通用户=============
# 例如:admin=admin123,1
admin=admin,1
user=user,0
# Define Users
# =============屏蔽下边两个账户=============
#user1=user1
#user2=user2
まず有効な起動ダッシュボード インスタンスを削除してから、再起動してコンテナを作成します
docker run -d \
--restart=always \
--name rmqadmin -v /data/docker/rocketmq/dashboard:/tmp/rocketmq-console/data \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.2.115:9876 \
-Dcom.rocketmq.sendMessageWithVIPChannel=false \
-Drocketmq.config.loginRequired=true" \
-p 9999:8080 \
pangliang/rocketmq-console-ng
コンテナーが起動したら、ログインしてコンソールにアクセスする必要があります。
この時点で、centos7 ビルドと docker ビルド rocketmq のチュートリアルは終了です。