Spring Cloud Alibaba(三):Nacos 服务安装与配置
Nacos 使服务注册和发现其它服务变得简单。Nacos 还提供服务的实时健康检查,以防止不健康的主机或服务实例发送请求。
Nacos 服务安装简单方便,部署支持单机模式,集群模式,多集群模式。
Nacos官网,Spring Cloud > Spring Cloud Alibaba,Github > Spring Cloud Alibaba,Github > Nacos
服务下载
从 Github 下载发布的版本,目前最新版本是 Nacos 2.0.0-bugfix。
下载地址:https://github.com/alibaba/nacos/releases
集群部署架构
建议把所有 Nacos 服务实例部署在内网,不直接暴露在外网,以免带来安全风险。通过 域名 + SLB(负载均衡)的方式来访问,这样可读性好,更新IP方便。
http://SLB:port/openAPI 挂载SLB模式(内网SLB,不可暴露到公网,以免带来安全风险),直连SLB即可,下面挂server真实ip,可读性不好。
http://nacos.com:port/openAPI 域名 + SLB模式(内网SLB,不可暴露到公网,以免带来安全风险),可读性好,而且换ip方便,推荐模式
部署环境
Nacos 定义为一个 IDC(互联网数据中心) 内部应用组件,并非面向公网环境的产品,建议在内部隔离网络环境中部署,强烈不建议部署在公共网络环境。
Nacos 依赖 Java 环境来运行。如果使用源码构建并运行 Nacos,还需要为此配置 Maven 环境,请确保是在以下版本环境中安装使用:
- 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
- 64 bit JDK 1.8+;下载 & 配置。
- Maven 3.2.x+;下载 & 配置。
- 集群模式需要3个或3个以上Nacos节点才能构成集群。
注意:配置 Java 运行环境,需要定义环境变量:JAVA_HOME
,Nacos 的运行脚本需要读取该环境变量。
安装方式
可以通过源码和发行包两种方式来获取 Nacos。
源码安装
选择合适的版本分支编译打包。Nacos 最新版本 2.0 了。
1 | 下载 Nacos 工程 |
压缩包安装
可以从 最新稳定版本 下载 nacos-server-$version.zip
包。
1 | unzip nacos-server-$version.zip |
部署模式
- 单机模式 - 用于测试和单机试用。
- 集群模式 - 用于生产环境,确保高可用。
- 多集群模式 - 用于多数据中心场景。
单机模式
Nacos 为单机模式下在 Linux/Unix/Max 和 Windows 环境运行 Nacos 提供了 startup(启动) 和 shutdown(停止) 脚本,脚本位于解压的 bin
目录下。
1 | bin]# pwd |
运行的配置文件位于解压的 conf
目录下,包含主配置文件,日志配置,sql文件,配置文件示例。
1 | conf]# pwd |
启动运行
启动命令(standalone
代表着单机模式运行,非集群模式)。
启动和停止脚本
1
2[root@gxcentos bin]# ls
shutdown.cmd shutdown.sh startup.cmd startup.shLinux/Unix/Max
1
2
3
4
5[root@gxcentos bin]# pwd
/usr/local/nacos/bin
[root@gxcentos bin]# ./startup.sh -m standalone
或
[root@gxcentos bin]# sh startup.sh -m standalone如果使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:
1
[root@gxcentos bin]# bash startup.sh -m standalone
Windows
1
2cmd 命令进入 nacos 解压包的 bin 目录
startup.cmd -m standalone
运行日志
Nacos 服务启动后,默认输出日志到 /usr/local/nacos/logs/start.out
,可以进入日志目录,使用 tail -f start.out
命令监视输出的日志。
日志信息可以看到一些启动运行的参数配置,包括内存大小,运行模式(单机或集群);可以看到Nacos 的版本号,端口号,进程号,Web 控制台地址。
- 默认端口:8848
- 上下文路径:/nacos
- Web 控制台地址:http://localhost:8848/nacos/index.html
- 默认使用应用嵌入数据库存储
- 暴露端点基本路径:/actuator,访问路径:http://localhost:8848/nacos/actuator
1 | Nacos 2.0.0 |
启动脚本
Nacos 默认的运行参数,模式都可以在启动脚本中修改。
例如,nacos 启动如果不带参数,默认是集群模式,可以修改默认为单机模式
1
2
3
4默认集群模式
export MODE="cluster"
改为单机模式, 执行脚本就可以不带用于指定单机模式的参
export MODE="standalone"例如修改运行的 JVM 内存大小
1
2
3if [[ "${MODE}" == "standalone" ]]; then
JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"
JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"
支持MySQL
在0.7版本之前,在单机模式时 nacos 使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7 版本增加了支持 mysql 数据源能力,具体的操作步骤:
- 安装数据库,版本要求:5.6.5+
- 初始化mysql数据库,数据库初始化文件:
nacos-mysql.sql
- 修改
conf/application.properties
文件,增加支持 mysql 数据源配置(目前只支持mysql),添加 mysql 数据源的url
、用户名
和密码
。
1 | mysql = |
关闭服务
Linux/Unix/Mac
1
sh shutdown.sh
Windows
1
cmd shutdown.cmd
或者双击
shutdown.cmd
运行文件。
集群模式
3个或3个以上Nacos节点才能构成集群。
创建多个实例
从 Git Nacos 下载编译后的压缩包,并复制集群的服务机器上。
解压压缩包。
1
2
3unzip nacos-server-1.3.0.zip
或者
tar -xvf nacos-server-1.3.0.tar.gz注意:如果是单机演示 Nacos 集群部署,建议 nacos 目录增加端口号以作区分,修改每个实例的
conf/application.properties
文件中的端口号,端口号不能重复;修改每个实例的conf/cluster.conf
中的实例节点的IP
和端口
。注意:Nacos 服务运行会占用四个端口进行监听,分别是:(port-1000),port,(port + 1000),(port + 1000 + 1)。
例如,使用默认端口 8848 运行,服务会占用 7848,8848,9848,9849 四个端口。
所以在单机演示集群部署时,需要特别注意各实例的端口配置范围跨度,以防止出现端口冲突。
错误示例:一个实例端口 7000,另一个实例端口 8000,那么后启动的这个实例就必然运行失败,会报:address already in use 的错误,因为存在端口冲突。
启动服务,Nacos 启动默认就是集群模式。
在集群管理的节点列表中,可以看到成功运行的节点。如果节点运行失败,节点状态是 红色块 DOWN。
配置集群配置文件
nacos 的解压目录 nacos/conf
目录下,有配置文件 cluster.conf
,请每行配置成ip:port
。(需配置3个或3个以上节点)
1 | # ip:port |
确定数据源
使用内置数据源:数据源无需任何配置。
1
sh startup.sh -p embedded
使用外置数据源:每个实例的数据源配置与单节点配置方式一致。生产使用建议至少主备模式,或者采用高可用数据库。
1
sh startup.sh
相关参考
Spring Cloud Alibaba(三):Nacos 服务安装与配置
http://blog.gxitsky.com/2021/03/30/SpringCloudAlibaba-03-nacos-install-config/