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

在这里插入图片描述
一、 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 <config_path>--nacos.config.path=<config_path>: 指定 Nacos 配置文件的目录路径。 默认情况下,Nacos 会尝试加载 conf 目录下的配置文件。
  • conf/application.propertiesconf/application.yml: Nacos 的主要配置文件,用于配置 Nacos Server 的各种参数,例如端口、数据库连接、集群配置、日志配置等。

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

  • -p <port>--server.port=<port>: 指定 Nacos Server 的 HTTP 端口。 默认端口是 8848
  • --server.servlet.context-path=<context_path>: 指定 Nacos Server 的 Context Path (Servlet 上下文路径)。 默认为 /nacos
  • --nacos.inetutils.ip-address=<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=<node1>,<node2>,<node3> (不推荐,推荐使用 cluster.conf): 也可以通过命令行参数 --nacos.member.list 指定集群节点列表,用逗号分隔。 但通常推荐使用 cluster.conf 配置文件进行集群配置,更清晰易管理。

6. JVM 参数 (JVM Options):

  • Nacos Server 启动脚本通常会设置一些默认的 JVM 参数,例如堆内存大小、GC 参数等。
  • 你可以根据你的实际需求调整 JVM 参数,例如通过修改 startup.shstartup.cmd 脚本中的 JAVA_OPT 变量来设置 JVM 参数。
  • 常用的 JVM 参数包括:
    • -Xms<size>: 设置 JVM 初始堆大小。
    • -Xmx<size>: 设置 JVM 最大堆大小。
    • -Xmn<size>: 设置 JVM 新生代大小。
    • -XX:MetaspaceSize=<size>: 设置元空间大小 (JDK 8+)。
    • -XX:MaxMetaspaceSize=<size>: 设置最大元空间大小 (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 Home 目录是 Nacos Server 启动脚本所在的目录。
  • --spring.profiles.active=<profile>: 激活 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 官方文档获取更全面和最新的启动参数信息。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰糖心书房

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值