定位

  1. 它是一个 Service 的:注册发现管理、配置管理的服务器。
  2. 自身是用 SpringBoot 的完在的 Java 项目
  3. 有着“独立和集群”两种启动模式。
  4. 采用 Derby(standalone 模式)或 Mysql(Cluster 模式)做为持久化存储方案。
  5. 其管理的服务可以是:
    • SpringBoot 微服务
    • K8S 的 Service
    • Doubbo 的 RPC Service

安装与启停管理

  1. 下载
    可以从https://github.com/alibaba/nacos/releases进行下载。
  2. 解压,并观察目录结构
    核心为 bin 和 conf 目录
  3. 启动和停止
    启动:bash startup.sh -m standalone,此时 8848 端口打开,同时可以使用http://localhost:8848/nacos/index.html进入管理界面,使用nacos/nacos进行登录。
    停止: bash shutdown.sh
    到此,完成了独立运行,此时使用了内置的 tomcat 和 derby。

集群配置(单机版准备)

配置 application.properties

重新配置 ${nacos_home}/conf/application.properties 文件:

  1. server.servlet.contextPath=/nacos
  2. server.port=8848
  3. # ============ 以下部分是配置的关键所在 =============================
  4. spring.datasource.platform=mysql
  5. db.num=1
  6. db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
  7. db.user=johnn
  8. db.password=123
  9. # ============ 以上部分是配置的关键所在 =============================
  10. nacos.naming.empty-service.auto-clean=true
  11. nacos.naming.empty-service.clean.initial-delay-ms=50000
  12. nacos.naming.empty-service.clean.period-time-ms=30000
  13. management.metrics.export.elastic.enabled=false
  14. management.metrics.export.influx.enabled=false
  15. server.tomcat.accesslog.enabled=true
  16. server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i
  17. server.tomcat.basedir=
  18. nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
  19. nacos.core.auth.system.type=nacos
  20. nacos.core.auth.enabled=false
  21. nacos.core.auth.default.token.expire.seconds=18000
  22. nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
  23. nacos.core.auth.caching.enabled=true
  24. nacos.istio.mcp.server.enabled=false

准备数据 库和表

  1. mysql>create database nacos_config;
  2. mysql>use nancos_config
  3. mysql>source ../conf/nacos-mysql.sql

集群方式单机启动测试

如果没有问题,则可以进一步进行多机集群测试环境搭建。

四、集群配置(多机版)

编辑集群配置文件conf/cluster.conf

  1. 192.168.31.164:8848
  2. 192.168.31.164:8849

以上配置可以指定到同一个可用区的不同主机上(笔者对未做跨可用区的集群,希望有人能够补充)
此时可以使用bin/bash startup.sh启动(此时是 8848 节点启动),可以在 nacos 管理界面的集群管理->节点列表中看到集群的情况。

启动 8849 节点

(1)方法一:
复制一份 nacos 的安装文件,并发动 application.properties,使用使用 8849 端口启动(注意:数据库配置应该和 8848 保持一致)。
当然,也可以使用不同的主机或 docker 来完成,只要保证不同的ip:port组合。
(2)方法二:
改动 bin/startup.sh 启动脚本,使其加上-o 8849 参数,文件改动如下:

  1. 59 while getopts ":m:f:s:c:p:o:" opt
  2. 60 do
  3. 61 case $opt in
  4. 62 m)
  5. 63 MODE=$OPTARG;;
  6. 64 f)
  7. 65 FUNCTION_MODE=$OPTARG;;
  8. 66 s)
  9. 67 SERVER=$OPTARG;;
  10. 68 c)
  11. 69 MEMBER_LIST=$OPTARG;;
  12. 70 p)
  13. 71 EMBEDDED_STORAGE=$OPTARG;;
  14. 72 o)
  15. 73 PORT=$OPTARG;;
  16. 74 ?)
  17. 75 echo "Unknown parameter"
  18. 76 exit 1;;
  19. 77 esac
  20. 78 done
  21. 144 nohup $JAVA -Dserver.port=${PORT} ${JAVA_OPT} nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1 &

文件的改动在 59,72,73,144 四行代码。
此时可以使用bash startup.sh -o 8848bash startup.sh -o 8849启动 nacos 即可以完成测试了。