Spring Cloud Alibaba(三):Nacos 服务安装与配置

Nacos 使服务注册和发现其它服务变得简单。Nacos 还提供服务的实时健康检查,以防止不健康的主机或服务实例发送请求。

Nacos 服务安装简单方便,部署支持单机模式,集群模式,多集群模式。

Nacos官网Spring Cloud > Spring Cloud AlibabaGithub > Spring Cloud AlibabaGithub > 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 Cluster Map

部署环境

Nacos 定义为一个 IDC(互联网数据中心) 内部应用组件,并非面向公网环境的产品,建议在内部隔离网络环境中部署,强烈不建议部署在公共网络环境。

Nacos 依赖 Java 环境来运行。如果使用源码构建并运行 Nacos,还需要为此配置 Maven 环境,请确保是在以下版本环境中安装使用:

  1. 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
  2. 64 bit JDK 1.8+;下载 & 配置
  3. Maven 3.2.x+;下载 & 配置
  4. 集群模式需要3个或3个以上Nacos节点才能构成集群。

注意:配置 Java 运行环境,需要定义环境变量:JAVA_HOME,Nacos 的运行脚本需要读取该环境变量。

安装方式

可以通过源码和发行包两种方式来获取 Nacos。

源码安装

选择合适的版本分支编译打包。Nacos 最新版本 2.0 了。

1
2
3
4
5
6
7
8
9
10
11
# 下载 Nacos 工程
git clone https://github.com/alibaba/nacos.git
# 进入工程目录
cd nacos/
# -P 指定编译的 profiles, -D入参忽略测试, -U 强制更新snapshots包
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
# 查看编译打包到的目录
ls -al distribution/target/

// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin

压缩包安装

可以从 最新稳定版本 下载 nacos-server-$version.zip 包。

1
2
3
unzip nacos-server-$version.zip 
# 或者
tar -xvf nacos-server-$version.tar.gz

部署模式

  • 单机模式 - 用于测试和单机试用。
  • 集群模式 - 用于生产环境,确保高可用。
  • 多集群模式 - 用于多数据中心场景。

单机模式

Nacos 为单机模式下在 Linux/Unix/Max 和 Windows 环境运行 Nacos 提供了 startup(启动) 和 shutdown(停止) 脚本,脚本位于解压的 bin目录下。

1
2
3
4
[root@gxcentos bin]# pwd
/usr/local/nacos/bin
[root@gxcentos bin]# ls
shutdown.cmd shutdown.sh startup.cmd startup.sh

运行的配置文件位于解压的 conf 目录下,包含主配置文件,日志配置,sql文件,配置文件示例。

1
2
3
4
5
[root@gxcentos conf]# pwd
/usr/local/nacos/conf
[root@gxcentos conf]# ls
1.4.0-ipv6_support-update.sql application.properties.example nacos-logback.xml schema.sql
application.properties cluster.conf.example nacos-mysql.sql

启动运行

启动命令(standalone代表着单机模式运行,非集群模式)。

  • 启动和停止脚本

    1
    2
    [root@gxcentos bin]# ls
    shutdown.cmd shutdown.sh startup.cmd startup.sh
  • Linux/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
    2
    # cmd 命令进入 nacos 解压包的 bin 目录
    > startup.cmd -m standalone

运行日志

Nacos 服务启动后,默认输出日志到 /usr/local/nacos/logs/start.out,可以进入日志目录,使用 tail -f start.out 命令监视输出的日志。

日志信息可以看到一些启动运行的参数配置,包括内存大小,运行模式(单机或集群);可以看到Nacos 的版本号,端口号,进程号,Web 控制台地址。

1
2
3
4
5
Nacos 2.0.0
Running in stand alone mode, All function modules
Port: 8848
Pid: 33965
Console: http://192.168.0.120:8848/nacos/index.html

启动脚本

Nacos 默认的运行参数,模式都可以在启动脚本中修改。

  • 例如,nacos 启动如果不带参数,默认是集群模式,可以修改默认为单机模式

    1
    2
    3
    4
    # 默认集群模式
    export MODE="cluster"
    # 改为单机模式, 执行脚本就可以不带用于指定单机模式的参
    export MODE="standalone"
  • 例如修改运行的 JVM 内存大小

    1
    2
    3
    if [[ "${MODE}" == "standalone" ]]; then
    JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"
    JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"

支持MySQL

在0.7版本之前,在单机模式时 nacos 使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7 版本增加了支持 mysql 数据源能力,具体的操作步骤:

  1. 安装数据库,版本要求:5.6.5+
  2. 初始化mysql数据库,数据库初始化文件:nacos-mysql.sql
  3. 修改conf/application.properties文件,增加支持 mysql 数据源配置(目前只支持mysql),添加 mysql 数据源的 url用户名密码
1
2
3
4
5
6
7
spring.datasource.platform=mysql

db.num=1

db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=nacos
db.password.0=nacos

关闭服务

  • Linux/Unix/Mac

    1
    sh shutdown.sh
  • Windows

    1
    cmd shutdown.cmd

    或者双击 shutdown.cmd 运行文件。

集群模式

3个或3个以上Nacos节点才能构成集群。

创建多个实例

  1. Git Nacos 下载编译后的压缩包,并复制集群的服务机器上。

  2. 解压压缩包。

    1
    2
    3
    unzip 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 的错误,因为存在端口冲突。

  3. 启动服务,Nacos 启动默认就是集群模式。

    在集群管理的节点列表中,可以看到成功运行的节点。如果节点运行失败,节点状态是 红色块 DOWN

    Nacos Cluster

配置集群配置文件

nacos 的解压目录 nacos/conf 目录下,有配置文件 cluster.conf,请每行配置成ip:port。(需配置3个或3个以上节点)

1
2
3
4
# ip:port
200.8.9.16:8848
200.8.9.17:8848
200.8.9.18:8848

确定数据源

  • 使用内置数据源:数据源无需任何配置。

    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/

作者

光星

发布于

2021-03-30

更新于

2022-06-17

许可协议

评论