Nacos 系统参数介绍
1. Nacos Server
对于Server端来说,一般是设置在{nacos.home}/conf/application.properties
里,如果参数名后标注了(-D)的,则表示是 JVM
的参数,需要在{nacos.home}/bin/startup.sh
里进行相应的设置。例如像设置 nacos.home
的值,可以在{nacos.home}/bin/startup.sh
进行如下设置:
若没有标注(-D)的参数,则同时可以在{nacos.home}/conf/application.properties
里和JVM参数中配置,如果同时配置了JVM参数和{nacos.home}/conf/application.properties
,那么JVM参数的优先级更高。
1.1. 全局参数
1.1.1. 基础参数
参数名 | 含义 | 可选值 | 默认值 |
---|
nacos.home(-D) | Nacos的根目录 | 目录路径 | Nacos安装的目录 |
nacos.standalone(-D) | 是否在单机模式 | true/false | false |
nacos.functionMode(-D) | 启动模式,支持只启动某一个模块,不设置时所有模块都会启动 | config/naming/空 | 空 |
nacos.server.ip(-D) | Nacos服务端的IP,优先级比nacos.inetutils.ip-address 更高,如果配置了该参数,则nacos.inetutils.ip-address 不再生效 | 本机IP | null |
nacos.inetutils.prefer-hostname-over-ip | 节点优先使用hostname作为本机ip,若为true 时,cluster.conf 里是否应该填hostname | true/false | false |
nacos.inetutils.ip-address | 本机IP,该参数设置后,将会使用这个IP去cluster.conf 里进行匹配,请确保这个IP的值在cluster.conf 里是存在的 | 本机IP | null |
nacos.core.sys.basic.processors | 指定服务端的处理器个数,用于部分虚拟化场景,防止读取CPU个数时读取到错误的值,导致线程数过多或过少 | 正整数 | CPU个数 |
nacos.core.monitor.topn.enabled | Nacos Server topN 监控统计能力开关 | true/false | true |
nacos.core.monitor.topn.count | Nacos Server topN 监控统计 top的个数,如如配置为10,表示top10的配置和服务 | 正整数 | 10 |
nacos.core.snowflake.worker-id | Nacos Server 的snowflake workerId | 正整数 | -1 |
nacos.core.param.check.enabled | Nacos Server 参数校验能力开关,开启后将会校验请求时的参数是否符合规范,不符合将被拦截,详情查看 参数校验 | true/false | true |
nacos.server.main.port | Nacos Server 的端口 | 正整数 | 8848 |
nacos.server.contextPath | Nacos Server 的Servlet上下文路径 | 正则表达式 | /nacos |
spring.config.additional-location | Nacos Server 的额外配置文件路径,除{nacos.home}/conf/application.properties 外,用户可以添加额外的配置文件 | 文件路径,多个文件路径用逗号分隔 | null |
nacos.core.api.compatibility.client.enabled | Nacos是否兼容旧版本OpenAPI | true/false | true |
nacos.core.api.compatibility.admin.enabled | Nacos是否兼容旧版本AdminAPI | true/false | false |
nacos.core.api.compatibility.console.enabled | Nacos是否兼容旧版本ConsoleAPI | true/false | false |
1.1.2. 数据库
参数名 | 含义 | 可选值 | 默认值 |
---|
spring.sql.init.platform | Nacos Server 使用的数据库类型 | mysql/空,指定为空时会根据nacos.standalone 判断使用derby数据库还是mysql数据库;在使用数据源插件时,可以指定为插件对应的数据库值,比如oracle或postgresql | null |
db.num | 数据库数目 | 正整数 | 0 |
db.url.0 | 第一个数据库的URL | 字符串 | 空 |
db.url.1 | 第二个数据库的URL,当db.num=2时生效 | 字符串 | 空 |
db.user | 数据库连接的用户名 | 字符串 | 空 |
db.password | 数据库连接的密码 | 字符串 | 空 |
db.pool.config.xxx | 数据库连接池参数,使用的是hikari连接池,参数与hikari连接池相同,如db.pool.config.connectionTimeout 或db.pool.config.maximumPoolSize | 字符串 | 同hikariCp对应默认配置 |
当前数据库配置支持多数据源。通过db.num
来指定数据源个数,db.url.index
为对应的数据库的链接。db.user
以及db.password
没有设置index
时,所有的链接都以db.user
和db.password
用作认证。如果不同数据源的用户名称或者用户密码不一样时,可以通过符号,
来进行切割,或者指定db.user.index
,db.user.password
来设置对应数据库链接的用户或者密码。需要注意的是,当db.user
和db.password
没有指定下标时,因为当前机制会根据,
进行切割。所以当用户名或者密码存在,
时,会把,
切割后前面的值当成最后的值进行认证,会导致认证失败。
Nacos提供了一个方法能够配置HikariCP连接池。
db.pool.config
为配置前缀,xxx
为实际的hikariCP配置,如db.pool.config.connectionTimeout
或db.pool.config.maximumPoolSize
等。更多hikariCP的配置请查看HikariCP
需要注意的是,url,user,password会由db.url.n
,db.user
,db.password
覆盖,driverClassName则是默认的MySQL8 driver(该版本mysql
driver支持mysql5.x)
1.1.2. Remoting
参数名 | 含义 | 可选值 | 默认值 |
---|
nacos.remote.server.grpc.sdk.max-inbound-message-size | Nacos Server gRPC 能接收的单次最大客户端请求大小,单位byte | 正整数 | 10 * 1024 * 1024 |
nacos.remote.server.grpc.cluster.max-inbound-message-size | Nacos Server gRPC 能接收的单次最大集群间请求大小,单位byte | 正整数 | 10 * 1024 * 1024 |
nacos.metric.grpc.server.executor.enabled | Nacos Server gRPC线程池 监控能力开关 | true/false | true |
nacos.metric.grpc.server.executor.interval | Nacos Server gRPC线程池的间隔时间,单位为毫秒 | 正整数 | 15000 |
nacos.metric.grpc.server.connection.enabled | Nacos Server gRPC长连接 监控能力开关 | true/false | true |
nacos.metric.grpc.server.connection.interval | Nacos Server gRPC长连接的间隔时间,单位为秒 | 正整数 | 15 |
remote.executor.times.of.processors(-D) | 服务端,处理请求的线程池大小的倍数, 例如配置为2,表示线程池大小为2 * CPU | 正整数 | 16 |
remote.executor.queue.size(-D) | 服务端,处理请求的线程池队列大小 | 正整数 | 16384 |
1.1.3. 集群列表
参数名 | 含义 | 可选值 | 默认值 |
---|
nacos.member.list | Nacos Server 地址列表,在cluster.conf 不存在时生效 | ip1:port1,ip2:port2 | null |
nacos.member-change-event.queue.size | Nacos Server 集群节点变更事件队列的大小,当集群节点通过cluster.conf 或地址服务器变更时,会将变更事件放入该队列,该队列会异步通知Server中的一些机制,比如Distro/Raft协议。 | 正整数 | 128 |
nacos.core.member.lookup.type | Nacos Server 集群节点的发现方式,支持配置文件cluster.conf 和地址服务器模式 | file/address-server | file |
nacos.core.address-server.retry | 当nacos.core.member.lookup.type 指定为address-server 时生效,请求地址服务器的重试次数,超过重试次数后不再尝试从地址服务器获取NacosServer的集群列表 | 正整数 | 5 |
address.server.domain | 当nacos.core.member.lookup.type 指定为address-server 时生效,地址服务器的域名 | 域名 | jmenv.tbsite.net |
address.server.port | 当nacos.core.member.lookup.type 指定为address-server 时生效,地址服务器的端口 | 0~65535 | 8080 |
address.server.url | 当nacos.core.member.lookup.type 指定为address-server 时生效,地址服务器的url | 字符串 | /serverlist |
1.2. Distro 协议
参数名 | 含义 | 可选值 | 默认值 |
---|
nacos.core.protocol.distro.data.sync.delayMs | Distro协议同步数据的延迟时间,同一份数据处于延迟时间内多次变更时,会被合并为一次同步,单位为毫秒 | 正整数 | 1000 |
nacos.core.protocol.distro.data.sync.timeoutMs | Distro协议同步数据的超时时间,同步到目标节点时超过该时间,则会认为同步失败,进行延迟后重试,单位为毫秒 | 正整数 | 3000 |
nacos.core.protocol.distro.data.sync.retryDelayMs | Distro协议同步数据的重试间隔,当数据同步到目标节点失败时,进行该值时间的延迟后再重试,避免同步重试风暴,单位为毫秒 | 正整数 | 3000 |
nacos.core.protocol.distro.data.verify.intervalMs | Distro协议数据验证的间隔,已经同步过的数据,会定期进行数据有效性验证,验证失败会重新发起该数据的同步,单位为毫秒 | 正整数 | 5000 |
nacos.core.protocol.distro.data.verify.timeoutMs | Distro协议数据验证的超时时间,单位为毫秒 | 正整数 | 3000 |
nacos.core.protocol.distro.data.load.retryDelayMs | Distro协议快照数据加载的重试间隔,在节点刚启动时生效,单位为毫秒 | 正整数 | 30000 |
nacos.core.protocol.distro.data.load.timeoutMs | Distro协议快照数据加载的超时时间,超过该时间未读取到其他节点的快照数据,则认为加载快照失败,单位为毫秒 | 正整数 | 30000 |
1.3 Raft 协议
参数名 | 含义 | 可选值 | 默认值 |
---|
nacos.core.protocol.raft.election_timeout_ms | Raft协议选举超时时间,单位ms | 正整数 | 5000 |
nacos.core.protocol.raft.snapshot_interval_secs | Raft协议快照写入间隔时间,单位s | 正整数 | 3600 |
nacos.core.protocol.raft.core_thread_num | Raft协议的核心线程数,用于处理Raft同步的请求线程数 | 正整数 | 8 |
nacos.core.protocol.raft.cli_service_thread_num | Raft协议的核心线程数,用于发起Raft同步数据的请求线程数 | 正整数 | 4 |
nacos.core.protocol.raft.rpc_request_timeout_ms | Raft协议请求的超时时间,单位ms | 正整数 | 5000 |
nacos.core.protocol.raft.max_byte_count_per_rpc | Raft协议单次请求最大字节数 | 正整数 | 128 * 1024 |
nacos.core.protocol.raft.max_entries_size | Raft协议单个日志的最大个数 | 正整数 | 1024 |
nacos.core.protocol.raft.max_body_size | Raft协议发送日志的最大 body 大小 | 正整数 | 512 * 1024 |
nacos.core.protocol.raft.max_append_buffer_size | Raft协议日志存储缓冲区最大大小 | 正整数 | 256 * 1024 |
nacos.core.protocol.raft.max_election_delay_ms | Raft协议选举的最大随机间隔,选举定时器间隔会在指定时间之外随机的最大范围 | 正整数 | 1000 |
nacos.core.protocol.raft.strict_mode | 从2.4.2 版本开始支持,Raft的启动校验是否采用严格模式,开启后,当raft无法选举时,引擎的readiness接口将返回500 | true/false | false |
1.4. Naming模块
参数名 | 含义 | 可选值 | 默认值 |
---|
nacos.naming.expireInstance | 是否自动摘除临时实例 | true/false | true |
nacos.naming.data.warmup | 从2.4.2 版本开始支持,是否在启动时校验数据是否预热,开启可能造成Server的readiness接口返回500,需要等待预热完成,启动时间变长 | true/false | false |
nacos.naming.clean.empty-service.interval | Naming模块的空服务清理间隔,单位毫秒 | 正整数 | 60 * 1000 |
nacos.naming.clean.empty-service.expired-time | Naming模块的空服务过期时间,过期的空服务会被清理,单位毫秒 | 正整数 | 60 * 1000 |
nacos.naming.clean.expired-metadata.interval | Naming模块的元数据清理间隔,单位毫秒 | 正整数 | 5000 |
nacos.naming.clean.expired-metadata.expired-time | Naming模块的元数据过期时间,过期的元数据会被清理,单位毫秒 | 正整数 | 60 * 1000 |
nacos.naming.client.expired.time | 临时Client对应数据的过期时间,当Distro协议停止对该Client的数据进行续约且时间超过该值时,该Client数据将被删除,主要应对Nacos Server之间断网的场景,单位毫秒 | 正整数 | 3 * 60 * 1000 |
nacos.naming.push.pushTaskDelay | 服务数据推送的延迟时间,同一个人服务处于延迟时间内多次变更时,会被合并为一次推送,单位为毫秒 | 正整数 | 500 |
nacos.naming.push.pushTaskTimeout | 服务数据推送的超时时间,超过该时间未收到客户端的确认,将延迟后重试,单位为毫秒 | 正整数 | 5000 |
nacos.naming.push.pushTaskRetryDelay | 服务数据推送失败后的重试间隔时间,单位为毫秒 | 正整数 | 1000 |
1.5. Config模块
参数名 | 含义 | 可选值 | 默认值 |
---|
nacos.config.push.maxRetryTime | 配置变更数据推送的延迟时间,同一个人配置处于延迟时间内多次变更时,会被合并为一次推送,单位为毫秒 | 正整数 | 50 |
nacos.config.retention.days | Nacos配置中心配置变更历史保留天数,超过该时间的配置变更历史会被删除 | 正整数 | 30 |
nacos.config.search.max_capacity | Nacos配置中心,根据配置内容查找配置功能的最大队列个数,由于基于内容的检索十分消耗性能,因此对该功能的并发进行限制,最大不可超过32 | 0~32 | 4 |
nacos.config.search.max_thread | 根据配置内容查找配置功能的最大线程数,最大并发数,最大不可超过16 | 0~16 | 2 |
nacos.config.search.wait_timeout | 根据配置内容查找配置功能的等待超时时间,超过等待时间的查找任务会直接失败丢弃,单位毫秒 | 正整数 | 8000 |
nacos.config.derby.ops.enabled | 当使用derby数据库作为存储时,是否开启derby的相关运维接口 | true/false | false |
nacos.persistence.sql.derby.limit.enabled | 当使用derby数据库作为存储时,限制derby数据库可执行的SQL范围为DML和部分DDL,从2.4.1 版本开始支持 | true/false | true |
1.6. CMDB模块
参数名 | 含义 | 可选值 | 默认值 |
---|
nacos.cmdb.loadDataAtStart | 是否打开CMDB | true/false | false |
nacos.cmdb.dumpTaskInterval | 全量dump的间隔,单位为秒 | 正整数 | 3600 |
nacos.cmdb.eventTaskInterval | 变更事件的拉取间隔,单位为秒 | 正整数 | 10 |
nacos.cmdb.labelTaskInterval | 标签集合的拉取间隔,单位为秒 | 正整数 | 300 |
1.7. Istio模块
参数名 | 含义 | 可选值 | 默认值 |
---|
nacos.extension.naming.istio.enabled | 是否加载istio模块 | true/false | false |
nacos.istio.mcp.server.enabled | 是否开启Istio MCP协议 | true/false | false |
nacos.istio.mcp.server.port | Istio MCP协议监听端口 | 正整数 | 18848 |
1.8. 插件
1.8.1. 鉴权插件
关于如何开发鉴权插件,请参考鉴权插件
参数名 | 含义 | 可选值 | 默认值 |
---|
nacos.core.auth.enabled | Nacos是否开启鉴权 | true/false | false |
nacos.core.auth.system.type | Nacos鉴权插件的类型 | nacos/ldap/自定义插件类型 | nacos |
nacos.core.auth.server.identity.key | Nacos Server节点身份信息的key,用户Server节点之间通信的识别,当开启鉴权时为必填项 | 字符串 | null |
nacos.core.auth.server.identity.value | Nacos Server节点身份信息的value,用户Server节点之间通信的识别,当开启鉴权时为必填项 | 字符串 | null |
nacos.core.auth.enable.userAgentAuthWhite | Nacos Server使用UserAgent来进行Server节点之间通信的识别,在1.4.1版本后仅作为升级时的兼容,开启后会存在安全问题,后续版本将移除该参数 | true/false | false |
同时对于Nacos默认鉴权插件的使用及更多默认鉴权插件的配置项,请参考权限校验
1.8.2. 数据源插件
其他和数据库相关的开发,请参考全局参数-数据库
参数名 | 含义 | 可选值 | 默认值 |
---|
spring.sql.init.platform | Nacos Server 使用的数据库类型 | mysql/空,指定为空时会根据nacos.standalone 判断使用derby数据库还是mysql数据库;在使用数据源插件时,可以指定为插件对应的数据库值,比如oracle或postgresql | null |
nacos.plugin.datasource.log.enabled|Nacos Server 是否开启SQL日志打印,开启后会打印每一次执行的SQL,方便进行插件开发时的问题排查,但是较为损耗性能,日常状态建议关闭 | true/false | false | |
1.8.3. 环境变量插件
关于如何开发环境变量插件,请参考环境变量插件
参数名 | 含义 | 可选值 | 默认值 |
---|
nacos.custom.environment.enabled | Nacos Server 是否开启环境变量插件 | true/false | false |
1.8.4. 反脆弱插件
反脆弱插件的开发,请参考反脆弱插件
参数名 | 含义 | 可选值 | 默认值 |
---|
nacos.plugin.control.manager.type | Nacos反脆弱插件的类型 | nacos/其他自定义插件类型 | null |
nacos.plugin.control.rule.external.storage | Nacos反脆弱插件,反脆弱规则外部存储类型,需要自行实现 | 字符串 | null |
nacos.plugin.control.rule.local.basedir | Nacos反脆弱插件,反脆弱规则本地存储目录 | 文件路径 | ${nacos.home}/data/ |
1.8.5. 配置变更插件
反脆弱插件的开发,请参考配置变更插件
参数名 | 含义 | 可选值 | 默认值 |
---|
nacos.core.config.plugin.${configChangePluginName}.enabled=true | Nacos Server 是否开启配置变更插件 | true/false | false |
nacos.core.config.plugin.${configChangePluginName}.${propertyKey}=${propertyValue} | 配置变更插件的配置项 | 插件自定义 | 插件自定义 |
1.9. 控制台
1.9.1. 基础参数
参数名 | 含义 | 可选值 | 默认值 |
---|
nacos.console.port | Nacos控制台端口 | 正整数 | 8080 |
nacos.console.contextPath | Nacos的Servlet上下文路径 | 字符串 | 空字符串 |
nacos.console.ui.enabled | Nacos控制台是否开启UI | true/false | true |
2. 镜像环境变量
Nacos 3.0.0-ALPHA.2 暂不提供镜像,该部分代3.0.0镜像版本发布后进行更新。
属性配置列表
属性名称 | 描述 | 选项 |
---|
MODE | 系统启动方式: 集群/单机,对应nacos.standalone | cluster/standalone 默认 cluster |
NACOS_SERVERS | 集群地址,对应nacos.member.list | p1空格ip2 空格ip3 |
PREFER_HOST_MODE | 支持IP还是域名模式,对应nacos.inetutils.prefer-hostname-over-ip | hostname/ip 默认IP |
NACOS_SERVER_PORT | Nacos 运行端口,对应server.port | 默认8848 |
NACOS_SERVER_IP | 多网卡模式下可以指定IP,对应nacos.server.ip | |
SPRING_DATASOURCE_PLATFORM | 单机模式下支持MYSQL数据库,对应spring.sql.init.platform | mysql / 空 默认:空 |
MYSQL_SERVICE_HOST | 数据库 连接地址 | |
MYSQL_SERVICE_PORT | 数据库端口 | 默认 : 3306 |
MYSQL_SERVICE_DB_NAME | 数据库库名 | |
MYSQL_SERVICE_USER | 数据库用户名 | |
MYSQL_SERVICE_PASSWORD | 数据库用户密码 | |
MYSQL_SERVICE_DB_PARAM | 数据库连接参数 | 默认:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false |
MYSQL_DATABASE_NUM | 数据库个数 | 默认:1 |
JVM_XMS | -Xms | 默认 :1g |
JVM_XMX | -Xmx | 默认 :1g |
JVM_XMN | -Xmn | 512m |
JVM_MS | - XX | 默认 :128m |
JVM_MMS | -XX | 默认 :320m |
NACOS_DEBUG | 是否开启远程DEBUG | y/n 默认 |
TOMCAT_ACCESSLOG_ENABLED | server.tomcat.accesslog.enabled | 默认 |
NACOS_AUTH_SYSTEM_TYPE | 权限系统类型选择,目前只支持nacos类型 | 默认 |
NACOS_AUTH_ENABLE | 是否开启权限系统,对应nacos.core.auth.enabled | 默认 |
NACOS_AUTH_TOKEN_EXPIRE_SECONDS | token 失效时间 | 默认 :18000 |
NACOS_AUTH_TOKEN | token | 注意:该环境变量的默认值在Nacos 2.2.1版本中已移除,开启鉴权时需要指定 |
NACOS_AUTH_CACHE_ENABLE | 权限缓存开关 ,开启后权限缓存的更新默认有15秒的延迟 | 默认 : false |
MEMBER_LIST | 通过环境变量的方式设置集群地址 | 例子:192.168.16.101:8847?raft_port=8807,192.168.16.101?raft_port=8808,192.168.16.101:8849?raft_port=8809 |
EMBEDDED_STORAGE | 是否开启集群嵌入式存储模式 | embedded 默认 : none |
NACOS_AUTH_CACHE_ENABLE | nacos.core.auth.caching.enabled | default : false |
NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE | nacos.core.auth.enable.userAgentAuthWhite | default : false |
NACOS_AUTH_IDENTITY_KEY | nacos.core.auth.server.identity.key | 注意:该环境变量的默认值在Nacos 2.2.1版本中已移除,开启鉴权时需要指定 |
NACOS_AUTH_IDENTITY_VALUE | nacos.core.auth.server.identity.value | 注意:该环境变量的默认值在Nacos 2.2.1版本中已移除,开启鉴权时需要指定 |
NACOS_SECURITY_IGNORE_URLS | nacos.security.ignore.urls | default : /,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/** |
DB_POOL_CONNECTION_TIMEOUT | 数据库连接池超时时间,单位为毫秒 | 默认 : 30000 |
NACOS_CONSOLE_UI_ENABLED | nacos.console.ui.enabled | default : true |
NACOS_CORE_PARAM_CHECK_ENABLED | nacos.core.param.check.enabled | default : true |