微信公众号:PersistentCoder 关注可了解更多的教程。问题或建议,请公众号留言;
内容目录
一、服务结构二、相关版本要求三、服务搭建四、配置alb负载五、配置域名和证书
一、服务结构
二、相关版本要求
1.服务器
服务器类型 | ec2 amazon linux2 | 或者其他linux版本 |
---|---|---|
cpu | 2核 | 可根据需要调整 |
内存 | 8G | 可根据需要调整 |
硬盘 | 128G | 可根据需要调整 |
2.jdk
jdk1.8
3.rocketmq
5.0.0
4.控制台
dashboard1.0.1
三、服务搭建
1.机器初始化
初始化两台机器,忽略。
2.安装jdk
yum install -y java-1.8.0-openjdk-devel
#/etc/profile环境变量
jdk 8
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.amzn2.0.2.x86_64
export CLASSPATH=.:JAVA_HOME/jre/lib/rt.jar:JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=PATH:JAVA_HOME/bin保存后,source生效
source /etc/profile
3.安装rocketmq
下载
mkdir -p /usr/local/apache-rocketmq
cd /usr/local/apache-rocketmq
wget https://archive.apache.org/dist/rocketmq/5.0.0/rocketmq-all-5.0.0-bin-release.zip
unzip rocketmq-all-5.0.0-bin-release.zip
mkdir -p /usr/local/rocketmq/store
mkdir /usr/local/rocketmq/store/commitlog -p
mkdir /usr/local/rocketmq/store/consumequeue -p
mkdir /usr/local/rocketmq/store/index -p
修改配置文件
vim /usr/local/apache-rocketmq/conf/2m-2s-async/broker-a.properties
对于master,填入以下内容:
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
namesrvAddr=rocketmq-nameserver1:9876
brokerIP1=ip
defaultTopicQueueNums=4
#是否允许Broker自动创建 Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
listenPort=10911
deleteWhen=04
fileReservedTime=120
mapedFileSizeCommitLog=1073741824
mapedFileSizeConsumeQueue=300000
diskMaxUsedSpaceRatio=88
storePathRootDir=/usr/local/rocketmq/store
storePathCommitLog=/usr/local/rocketmq/store/commitlog
storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
storePathIndex=/usr/local/rocketmq/store/index
storeCheckpoint=/usr/local/rocketmq/store/checkpoint
abortFile=/usr/local/rocketmq/store/abort
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
对于slave,填入如下内容:
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=1
namesrvAddr=rocketmq-nameserver1:9876
brokerIP1=172.31.23.122
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
修改其他配置:
cd /usr/local/apache-rocketmq/conf/
sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml
在主从两台机器的/etc/hosts中添加以下内容:
内网ip1 rocketmq-nameserver1
内网ip1 rocketmq-master1
内网ip2 rocketmq-slave1
修改nameserver和broker的启动参数,对于2c8g机器,nameserver建议1g,broker建议4g。
nameserver启动脚本/usr/local/apache-rocketmq/bin/runserver.sh
broker启动脚本/usr/local/apache-rocketmq/bin/runbroker.sh
在server1上先启动nameserver:
/usr/local/apache-rocketmq/bin
nohup sh mqnamesrv >/dev/null 2>&1 &
再启动master broker:
cd /usr/local/apache-rocketmq/bin
nohup sh mqbroker -c /usr/local/apache-rocketmq/conf/2m-2s-async/broker-a.properties >/dev/null 2>&1 &
最后启动slave broker(同样修改启动参数 jvm 4g):
cd /usr/local/apache-rocketmq/bin
nohup sh mqbroker -c /usr/local/apache-rocketmq/conf/2m-2s-async/broker-a.properties >/dev/null 2>&1 &
4.安装控制台
低版本的控制台不支持账密登录,高版本的控制台需要自己编译打包。
安装maven并配置环境变量:
mkdir /opt/tools/maven
cd /opt/tools/maven
wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
tar -zxvf apache-maven-3.8.8-bin.tar.gz
#配置环境变量
vim /etc/profilemaven 3.8.8
export MAVEN_HOME=/opt/tools/maven/apache-maven-3.8.8
export PATH={PATH}:{MAVEN_HOME}/bin
#保存后source生效
source /etc/profile
安装git,从github拉取控制台源码:
yum -y install git
拉取dashboard代码:
mkdir -p /usr/local/rocketmq-console/
cd /usr/local/rocketmq-console/
git clone https://github.com/apache/rocketmq-dashboard.git
开启账密登录:
vim /usr/local/rocketmq-console/rocketmq-dashboard/src/main/resources/application.yml
rocketmq:
config:
loginRequired: true
设置登录账密:
vim /usr/local/rocketmq-console/rocketmq-dashboard/src/main/resources/users.properties
admin=xxxxxx,1
编译打包:
cd /usr/local/rocketmq-console/rocketmq-dashboard
mvn clean package -Dmaven.test.skip=true拷贝到/usr/local/rocketmq-console目录
cp target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar /usr/local/rocketmq-console/
启动控制台:
cd /usr/local/rocketmq-console
nohup java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar --server.port=8080 --rocketmq.config.namesrvAddr=ip1:9876 >/dev/null 2>&1 &
四、配置alb负载
消息能力主要是线上机器内网访问,配置安全组的时候配置内网即可,控制台需要开发人员本地电脑访问,考虑到安全问题,基于alb穿透到内网机器,内网机器不用暴露任何ip和端口到公网。
1.创建目标群组
2.注册目标机器
3.创建alb
创建完成后可以看到详情页有dns信息和对应A记录:
A记录可以直接拿来访问.
五、配置域名和证书
1.配置域名
到域名管理平台配置二级域名解析,配置cname类型:
2.配置证书
这里使用aws免费证书
需要按照aws的要求,将上述截图中的内容到域名管理平台配置cname解析,这里验证域名所属权,如果验证没问题,等5分钟左右,aws会颁发证书,证书状态变成已颁发:
3.配置加密访问
到alb详情页添加侦听器:
配置http协议自动转换成https协议,修改80端口的侦听器:
这样http和https协议都可以访问,并且通过http协议访问会自动转换为https协议。