Nacos Server 的启动入口在哪里?启动参数有哪些?

Nacos Server 的启动入口在哪里?启动参数有哪些?_第1张图片
一、 Nacos Server 启动入口

Nacos Server 的启动入口位于 nacos-server 模块的 com.alibaba.nacos.Nacos 类。

  • 主类: com.alibaba.nacos.Nacos
  • 主方法: public static void main(String[] args)

当运行 Nacos Server 的启动脚本 (startup.shstartup.cmd) 时,脚本最终会执行 java 命令,并指定 com.alibaba.nacos.Nacos 作为主类来启动 Nacos 应用。

源码位置: nacos/nacos-server/src/main/java/com/alibaba/nacos/Nacos.java

二、 Nacos Server 启动参数

Nacos Server 的启动参数主要通过以下几种方式传递:

  1. 命令行参数 (Command-Line Arguments): 直接在启动命令中通过 -D 参数指定 Java 系统属性,或者使用 -- 参数传递应用配置参数。
  2. 配置文件 (Configuration Files): Nacos Server 会加载指定的配置文件,配置文件中的参数会被读取并应用。
  3. 环境变量 (Environment Variables): Nacos Server 可以读取环境变量中的参数。

常用的启动参数 (按功能分类):

1. 运行模式 (Mode):

  • -m standalone--server.standalone=true: 以 单机模式 (Standalone Mode) 启动 Nacos Server。这是默认模式,适用于开发、测试环境,或对高可用性要求不高的场景。单机模式下,数据默认使用内嵌的 Derby 数据库存储。
  • -m cluster--server.standalone=false (或不指定 -m):集群模式 (Cluster Mode) 启动 Nacos Server。 适用于生产环境,提供高可用性和高扩展性。集群模式下,数据通常需要配置外部数据库 (如 MySQL) 进行持久化。

2. 配置文件 (Configuration Files):

  • -p --nacos.config.path=: 指定 Nacos 配置文件的目录路径。 默认情况下,Nacos 会尝试加载 conf 目录下的配置文件。
  • conf/application.propertiesconf/application.yml: Nacos 的主要配置文件,用于配置 Nacos Server 的各种参数,例如端口、数据库连接、集群配置、日志配置等。

3. 端口和地址 (Ports and Addresses):

  • -p --server.port=: 指定 Nacos Server 的 HTTP 端口。 默认端口是 8848
  • --server.servlet.context-path=: 指定 Nacos Server 的 Context Path (Servlet 上下文路径)。 默认为 /nacos
  • --nacos.inetutils.ip-address=: 指定 Nacos Server 绑定的 IP 地址。 默认情况下,Nacos 会自动检测 IP 地址。在多网卡或特殊网络环境下,可能需要手动指定 IP 地址。

4. 数据持久化 (Data Persistence):

  • 单机模式 (Standalone Mode):

    • 默认使用内嵌的 Derby 数据库进行持久化,数据存储在 data/derby-data 目录。
    • 单机模式下,不建议修改数据库配置,因为 Derby 主要用于演示和测试,性能和可靠性有限。
  • 集群模式 (Cluster Mode):

    • 需要配置外部数据库 (通常是 MySQL) 进行持久化。
    • 数据库连接配置通常在 conf/application.propertiesconf/application.yml 文件中配置,例如:
    spring.datasource.platform=mysql
    db.num=1
    db.url.0=jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DBNAME}?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&serverTimezone=UTC
    db.user=nacos
    db.password=nacos
    
    • MYSQL_HOST, MYSQL_PORT, MYSQL_DBNAME, nacos, nacos: 这些占位符通常需要替换为你的实际 MySQL 数据库连接信息。 你也可以直接在配置文件中填写实际的值,或者通过环境变量传入。

5. 集群配置 (Cluster Configuration):

  • conf/cluster.conf: 在集群模式下,需要配置 conf/cluster.conf 文件,列出 Nacos 集群中所有 Server 节点的 IP 地址和端口。 每行一个节点,格式为 ip:port
    192.168.1.10:8848
    192.168.1.11:8848
    192.168.1.12:8848
    
  • --nacos.member.list=,, (不推荐,推荐使用 cluster.conf): 也可以通过命令行参数 --nacos.member.list 指定集群节点列表,用逗号分隔。 但通常推荐使用 cluster.conf 配置文件进行集群配置,更清晰易管理。

6. JVM 参数 (JVM Options):

  • Nacos Server 启动脚本通常会设置一些默认的 JVM 参数,例如堆内存大小、GC 参数等。
  • 你可以根据你的实际需求调整 JVM 参数,例如通过修改 startup.shstartup.cmd 脚本中的 JAVA_OPT 变量来设置 JVM 参数。
  • 常用的 JVM 参数包括:
    • -Xms: 设置 JVM 初始堆大小。
    • -Xmx: 设置 JVM 最大堆大小。
    • -Xmn: 设置 JVM 新生代大小。
    • -XX:MetaspaceSize=: 设置元空间大小 (JDK 8+)。
    • -XX:MaxMetaspaceSize=: 设置最大元空间大小 (JDK 8+)。
    • -XX:+UseG1GC-XX:+UseConcMarkSweepGC: 选择垃圾回收器。
    • -verbose:gc, -XX:+PrintGCDetails, -XX:+PrintGCTimeStamps: GC 日志相关参数。

7. 日志配置 (Logging Configuration):

  • Nacos 默认使用 Logback 作为日志框架。
  • 日志配置文件通常是 conf/logback.xml
  • 你可以修改 logback.xml 文件来配置日志级别、日志输出格式、日志文件路径等。

8. 安全配置 (Security Configuration):

  • 认证 (Authentication):

    • Nacos 默认开启认证。
    • 默认用户名/密码是 nacos/nacos
    • 我们可以在 conf/application.propertiesconf/application.yml 中配置认证相关的参数,例如:
    nacos.core.auth.enabled=true # 开启认证
    nacos.core.auth.server.identity.key=your_key #  服务端密钥
    nacos.core.auth.server.identity.value=your_value # 服务端密钥值
    
    • 用户管理: Nacos 控制台提供用户管理功能,可以添加、删除、修改用户和角色。
  • 鉴权 (Authorization):

    • Nacos 也支持基于 RBAC 的权限控制。
    • 鉴权配置也通常在 conf/application.propertiesconf/application.yml 中配置。

9. 其他常用参数:

  • --nacos.home=: 指定 Nacos Home 目录。 默认情况下,Nacos Home 目录是 Nacos Server 启动脚本所在的目录。
  • --spring.profiles.active=: 激活 Spring Profiles,用于加载不同环境的配置 (例如 dev, test, prod)。
  • --help-h: 显示 Nacos Server 启动参数帮助信息。

启动脚本示例 (startup.sh - Linux/macOS):

#!/bin/bash

# ... 其他脚本代码 ...

JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump.hprof"
JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages -Dnacos.home=${NACOS_HOME}"

# 集群模式启动 (默认)
JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=false"
# 或 单机模式启动
# JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"

# 指定配置文件目录 (可选)
# JAVA_OPT="${JAVA_OPT} -Dnacos.config.path=${NACOS_HOME}/conf"

# 启动命令
JAVA_HOME="${JAVA_HOME:-/usr/java/jdk1.8.0_202}" "${JAVA}" ${JAVA_OPT} com.alibaba.nacos.Nacos "$@"

总结

Nacos Server 的启动入口是 com.alibaba.nacos.Nacos 类的 main 方法。 启动参数可以通过命令行、配置文件、环境变量等多种方式传递。 常用的启动参数包括运行模式、配置文件路径、端口、数据库连接、集群配置、JVM 参数、日志配置、安全配置等。 我们可以根据实际需求,选择合适的启动模式和参数配置 Nacos Server。 最后建议查阅 Nacos 官方文档获取更全面和最新的启动参数信息。

你可能感兴趣的:(Nacos源码系列,服务发现,java)