本文详解如何搭建 SpringcloudAlibaba 基础环境:Mysql、Nacos、Sentinal、RocketMQ
整体概况
本系列文章主要是详解搭建 SpringcloudAlibaba 的一系列环境。主要包括 2 部分:基础环境准备、项目搭建。
基础环境主要包括:Mysql、Nacos、Sentinal、RocketMQ、Docker。
项目搭建包括 3 个服务:网关、订单服务、商品服务、营销服务。
本篇主要详解第一部分:基础环境准备。
基础环境
基础环境准备:Docker、Mysql、Nacos、Sentinal、RocketMQ
大部分组件直接使用 docker 安装,方便快捷。如果有对 docker 的不了解的,需要提前准备下。本文不做详解。
安装 Docker
Docker 的安装此处不多赘述,笔者使用的是 Mac,直接在 Docker 官网下载安装即可。
Docker 部署 Mysql、Nacos、Sentinal
考虑到 3 个组件单独用 docker 部署比较麻烦,所以此处笔者直接利用 docker-compose,将 3 个部件合并部署。
nacos:1.3.2
sentinal:1.8
mysql:5.7
1、在某个文件夹下编写名为docker-compose.yaml
的 yaml 文件,安装 Mysql、安装 Nacos、安装 Sentinal
version: "3"
services:
mysql:
container_name: mysql
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=123456
volumes:
- /Users/yclxiao/Program/volume/mysql/data:/var/lib/mysql
ports:
- "3306:3306"
restart: always
nacos:
image: nacos/nacos-server:1.3.2
container_name: nacos
environment:
- PREFER_HOST_MODE=hostname
- MODE=standalone
- MYSQL_DATABASE_NUM=1
- MYSQL_SERVICE_HOST=127.0.0.1
- MYSQL_SERVICE_DB_NAME=nacos_config
- MYSQL_SERVICE_PORT=3306
- MYSQL_SERVICE_USER=root
- MYSQL_SERVICE_PASSWORD=123456
volumes:
- /Users/yclxiao/logs/nacos:/home/nacos/logs
ports:
- "8848:8848"
depends_on:
- mysql
restart: always
sentinel:
image: bladex/sentinel-dashboard:latest
container_name: sentinel
ports:
- "8858:8858"
restart: always
复制代码
2、在 yaml 所在文件夹下运行docker-compose up -d
即可。
3、docker ps -a
查询容器
验证 Mysql、Nacos、Sentinal 部署结果
1、验证 Mysql:直接使用 DataGrip 连接本地 Mysql 服务器,用户名root
,密码123456
。
2、验证 Nacos:http://localhost:8848/nacos/index.html
,用户名nacos
,密码nacos
。
3、验证 Sentinal:http://localhost:8858/#/dashboard
,用户名sentinel
,密码sentinel
。
安装 RocketMQ
之前尝试用 docker 安装 RocketMQ 多个版本一直没成功,要不就是成功之后页面无法打开,要不就是容器启动之后,Mac 机器直接 CPU 飙升,所以放弃了 docker 部署,直接采用原始方式安装,安装包的下载地址:https://archive.apache.org/dist/rocketmq/
RocketMQ:4.4.0
(一)安装 nameserver、broker
安装步骤:
1、建立自己的 rocketmq 安装目录
2、进入https://archive.apache.org/dist/rocketmq/下载安装包,选择 4.4.0
3、解压安装包
4、建立 rocketmq 的数据文件夹rocketmqdata
5、编辑./conf/broker.conf
5.1、增加brokerIp1 = 127.0.0.1
5.2、增加文件存储位置:
#存储路径
storePathRootDir=/Users/yclxiao/Project/middleware/rocketmq/rocketmq-native/rocketmqdata/store
#commitLog 存储路径
storePathCommitLog=/Users/yclxiao/Project/middleware/rocketmq/rocketmq-native/rocketmqdata/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/Users/yclxiao/Project/middleware/rocketmq/rocketmq-native/rocketmqdata/store/consumequeue
#消息索引存储路径
storePathIndex=/Users/yclxiao/Project/middleware/rocketmq/rocketmq-native/rocketmqdata/store/index
#checkpoint 文件存储路径
storeCheckpoint=/Users/yclxiao/Project/middleware/rocketmq/rocketmq-native/rocketmqdata/store/checkpoint
#abort 文件存储路径
abortFile=/Users/yclxiao/Project/middleware/rocketmq/rocketmq-native/rocketmqdata/store/abort
复制代码
文件中的/Users/yclxiao/Project/middleware/rocketmq/rocketmq-native
目录改成自己的目录地址
6、编写启动脚本,内容如下,文件名startrmq.sh
,授予执行权限chmod +x startrmq.sh
#!/bin/sh
nohup sh ./rocketmq-all-4.4.0-bin-release/bin/mqnamesrv >mqnamesrv.log 2>&1 &
sleep 5
echo "namesrv started"
nohup sh ./rocketmq-all-4.4.0-bin-release/bin/mqbroker -n localhost:9876 -c ./rocketmq-all-4.4.0-bin-release/conf/broker.conf >mqbroker.log 2>&1 &
echo "broker starting"
nohup java -jar -Drocketmq.config.namesrvAddr=localhost:9876 -Drocketmq.config.isVIPChannel=false -Drocketmq.config.dataPath=./rocketmqdata -Dserver.port=8180 ./rocketmq-dashboard-2.0.0.jar >dashboard.log 2>&1 &
echo "dashboard starting"
复制代码
7、启动:
启动 namesrv:nohup sh ./rocketmq-all-4.4.0-bin-release/bin/mqnamesrv >mqnamesrv.log 2>&1 &
启动 broker:nohup sh ./rocketmq-all-4.4.0-bin-release/bin/mqbroker -n localhost:9876 -c ./rocketmq-all-4.4.0-bin-release/conf/broker.conf >mqbroker.log 2>&1 &
(二)安装 dashboard
由于 rocketmq-console 已经被 rocketmq-dashboard 取代了,所以直接安装 dashboard
1、拷贝项目:https://github.com/apache/rocketmq-dashboard
2、将项目打成 jar 包:mvn clean package -Dmaven.test.skip=true
3、将 jar 拷贝到外层目录
4、启动:nohup java -jar -Drocketmq.config.namesrvAddr=localhost:9876 -Drocketmq.config.isVIPChannel=false -Drocketmq.config.dataPath=./rocketmqdata -Dserver.port=8180 ./rocketmq-dashboard-2.0.0.jar >dashboard.log 2>&1 &
参考文件目录如下:
(三)rocketmq 一键启停
rocketmq 的启动涉及到 3 个部件,比较麻烦,所以制作了简易的 shell 脚本,方便启动。
启动脚本:
#!/bin/sh
nohup sh ./rocketmq-all-4.4.0-bin-release/bin/mqnamesrv >mqnamesrv.log 2>&1 &
sleep 5
echo "namesrv started"
nohup sh ./rocketmq-all-4.4.0-bin-release/bin/mqbroker -n localhost:9876 -c ./rocketmq-all-4.4.0-bin-release/conf/broker.conf >mqbroker.log 2>&1 &
echo "broker starting"
nohup java -jar -Drocketmq.config.namesrvAddr=localhost:9876 -Drocketmq.config.isVIPChannel=false -Drocketmq.config.dataPath=./rocketmqdata -Dserver.port=8180 ./rocketmq-dashboard-2.0.0.jar >dashboard.log 2>&1 &
echo "dashboard starting"
复制代码
停止脚本:
#!/bin/sh
sh ./rocketmq-all-4.4.0-bin-release/bin/mqshutdown namesrv
sh ./rocketmq-all-4.4.0-bin-release/bin/mqshutdown broker
pid=`ps ax | grep rocketmq-dashboard | grep java | grep -v grep | awk '{print $1}'`
if [ -z "$pid" ] ; then
echo "No rocketmq-dashboard running."
exit -1;
fi
echo "The rocketmq-dashboard(${pid}) is running..."
kill ${pid}
echo "Send shutdown request to rocketmq-dashboard(${pid}) OK"
复制代码
一键启动:./startrmq.sh
一键停止:./stoprmq.sh
(四)验证 RocketMQ 部署结果
总结
总体来说,整个安装过程还算简单清晰,照着步骤安装肯定会成功,如果在安装过程中有啥疑问,也可与我交流,谢谢你的阅读,我们下期见。
个人联系方式如下:http://mangod.top/s/aboutme
评论