定位
- 它是一个 Service 的:注册发现管理、配置管理的服务器。
- 自身是用 SpringBoot 的完在的 Java 项目
- 有着“独立和集群”两种启动模式。
- 采用 Derby(standalone 模式)或 Mysql(Cluster 模式)做为持久化存储方案。
- 其管理的服务可以是:
- SpringBoot 微服务
- K8S 的 Service
- Doubbo 的 RPC Service
安装与启停管理
- 下载
可以从https://github.com/alibaba/nacos/releases进行下载。 - 解压,并观察目录结构
核心为 bin 和 conf 目录 - 启动和停止
启动: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
文件:
server.servlet.contextPath=/nacos
server.port=8848
# ============ 以下部分是配置的关键所在 =============================
spring.datasource.platform=mysql
db.num=1
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
db.user=johnn
db.password=123
# ============ 以上部分是配置的关键所在 =============================
nacos.naming.empty-service.auto-clean=true
nacos.naming.empty-service.clean.initial-delay-ms=50000
nacos.naming.empty-service.clean.period-time-ms=30000
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i
server.tomcat.basedir=
nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=false
nacos.core.auth.default.token.expire.seconds=18000
nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
nacos.core.auth.caching.enabled=true
nacos.istio.mcp.server.enabled=false
准备数据 库和表
mysql>create database nacos_config;
mysql>use nancos_config
mysql>source ../conf/nacos-mysql.sql
集群方式单机启动测试
如果没有问题,则可以进一步进行多机集群测试环境搭建。
四、集群配置(多机版)
编辑集群配置文件conf/cluster.conf
192.168.31.164:8848
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 参数,文件改动如下:
59 while getopts ":m:f:s:c:p:o:" opt
60 do
61 case $opt in
62 m)
63 MODE=$OPTARG;;
64 f)
65 FUNCTION_MODE=$OPTARG;;
66 s)
67 SERVER=$OPTARG;;
68 c)
69 MEMBER_LIST=$OPTARG;;
70 p)
71 EMBEDDED_STORAGE=$OPTARG;;
72 o)
73 PORT=$OPTARG;;
74 ?)
75 echo "Unknown parameter"
76 exit 1;;
77 esac
78 done
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 8848
和bash startup.sh -o 8849
启动 nacos 即可以完成测试了。