Springcloud Aibaba 现在这么火,我一直想写个基于 Springcloud Alibaba 一步一步构建微服务架构的系列博客,终于下定决心从今天开始本系列文章的第一篇 - 基础环境准备。
该系列文章内容主要基于三个微服务:用户服务 AccountService
,订单服务 OrderService
,产品服务 ProductService
用到的组件有:
- 注册中心、配置中心 Nacos
- 限流 Sentinel
- 分布式事务 Seata
- 网关 SpringCloud Gateway
- 认证授权 Spring Cloud Oauth2
- docker、docker-compose
由于用到的组件相对较多,部署会很繁琐,最关键的是没有资源服务器,所以在开发过程中我会逐渐将一些组件使用 docker-compose 部署。
本篇内容就是使用 Dokcer-compose 部署 Nacos,Sentinel,Mysql,作为后面的系列文章的基础环境。
如果你对 docker 或者 docker-compose 不是很熟悉的话,你可以翻看我之前的两篇文章,看完后相信你能很快入手。
容器化
mysql
由于 nacos 需要依赖于 Mysql 作为资源存储,所以在编写完整 docker-compose 之前我会先用 docker 启动临时的 mysql 容器,然后准备好 nacos 需要的数据库。
-
启动临时容器
docker run -p3306:3306 --rm --name mysql -e MYSQL_ROOT_PASSWORD=123456 -v /app/cloud/mysql/data:/var/lib/mysql mysql:5.7
此处需要挂载宿主机目录,在启动 docker-compse 后就不需要再次初识化数据。 -
用 mysql 客户端连接你的容器,然后导入 nacos 的数据表
https://github.com/alibaba/nacos/tree/develop/distribution/conf/ nacos-mysql.sql
-
停止容器,由于加了
--rm
参数,所以容器会自动删除
docker stop 3475ef078d3a
nacos
我们来看看 NACOS 的环境变量,如下表所示:
配置项 | 描述 | 可选参数 | 默认值 |
---|---|---|---|
MODE | 模式 cluster/standalone | cluster/standalone | cluster |
PREFER_HOST_MODE | 是否支持 hostname | hostname/ip | ip |
NACOS_SERVER_PORT | 服务端口号 | 8848 | |
SPRING_DATASOURCE_PLATFORM | 单机模式支持 mysql | mysql / empty | empty |
MYSQL_MASTER_SERVICE_HOST | mysql 主节点 host | ||
MYSQL_MASTER_SERVICE_PORT | mysql 主节点 port | 3306 | |
MYSQL_MASTER_SERVICE_DB_NAME | mysql 主节点数据库名 | ||
MYSQL_MASTER_SERVICE_USER | mysql 主节点用户名 | ||
MYSQL_MASTER_SERVICE_PASSWORD | mysql 主节点密码 | ||
MYSQL_SLAVE_SERVICE_HOST | mysql 从节点 host | ||
MYSQL_SLAVE_SERVICE_PORT | mysql 从节点 port | 3306 |
Nacos 支持主从配置,考虑到资源问题,我们只配置一台单独的 mysql 服务器,有资源的同学可以搭建主从环境。
sentinel
sentinel 比较简单,直接配置 sentinel-dashboard
镜像即可。
(在系列的开始不需要引入 sentinel 组件,为了后面不再单独介绍,本次我也把他加到我的 docker-compose 中)
seata
seata 由于一些原因,还没发布官方镜像,暂时搁浅。
docker-compose
以下是我编写的 docker-compse 文件,大家可以自行修改
version: "3"
services:
mysql:
container_name: mysql
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=123456
volumes:
- /app/cloud/mysql/data:/var/lib/mysql
ports:
- "3306:3306"
restart: always
nacos:
image: nacos/nacos-server:1.1.4
container_name: nacos
environment:
- PREFER_HOST_MODE=hostname
- MODE=standalone
- MYSQL_DATABASE_NUM=1
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_MASTER_SERVICE_HOST=mysql
- MYSQL_MASTER_SERVICE_DB_NAME=nacos_config
- MYSQL_MASTER_SERVICE_PORT=3306
- MYSQL_MASTER_SERVICE_USER=root
- MYSQL_MASTER_SERVICE_PASSWORD=123456
volumes:
- /app/cloud/nacos/logs:/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
将其上传至你的服务器,执行 docker-compose up -d
命令启动
环境验证
nacos
访问 nacos http://192.168.136.129:8848/nacos
,使用账号密码 nacos/nacos 登录,添加一个 name=JAVA日知录
的配置。
nacos 安装成功!
mysql
使用客户端工具连接上 mysql 服务,查看 his_config_info
表,确认是否有刚刚的配置
mysql 安装成功!
sentinel
访问 http://192.168.136.129:8858
使用账号 sentinel/sentinel 登录
sentinel 安装成功!
至此前期所需要的组件都安装成功,那么本期的“SpringCloud Alibaba 微服务实战 - 基础环境准备”篇也就该结束啦,咱们下期有缘再见!
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于