nacos--安装
一、安装
a、直接安装
从官网 下载适合版本
这里以2.0.3为例
liunx2.0.3百度网盘地址 提取码:xnvi
windows2.0.3百度网盘地址 提取码:k3uk
b、上传到服务器后解压
tar -xvf nacos-server-2.0.3.tar.gz
c、启动
cd /nacos/bin
sh startup.sh -m standalone
二、docker安装
a、先直接启动
docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server
b、将镜像内/home/nacos/的配置文件导入到宿主机上
docker container cp 35e03a8c4e00:/home/nacos/ /home/
c、停止并移除当前镜像
docker stop 35e03a8c4e00 && docker rm 35e03a8c4e00
d、重新启动
2.2.3为例
docker run -d -p 8848:8848 -p 9848:9848 -p 9849:9849 --name nacos_2.2.3 \
-e MODE=standalone -e PREFER_HOST_MODE=hostname \
-e JVM_XMS=512m -e JVM_XMX=2048m \
-v /home/mount/nacos2.2.3/conf:/home/nacos/conf \
-v /home/mount/nacos2.2.3/data:/home/nacos/data \
-v /home/mount/nacos2.2.3/logs:/home/nacos/logs \
--privileged=true --restart=always nacos/nacos-server
三、docker-compose启动
a、准备挂载的目录
mkdir -p /home/nacos/logs /home/nacos/conf /home/nacos/tomcat/basedir
b、需要在挂载的conf下准备application.properties
# spring
server.servlet.contextPath=/nacos
server.contextPath=/nacos
server.port=8848
spring.datasource.platform=mysql
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=1
db.url.0=jdbc:mysql://192.168.3.87:13307/nacos2?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
db.user=root
db.password=Ts@20230131
### The auth system to use, currently only 'nacos' is supported:
nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}
### The token expiration in seconds:
nacos.core.auth.default.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}
### The default token:
nacos.core.auth.default.token.secret.key=ZlcyVsvBBOF3Guu3UvsJqQRIuwe3aYra4quIhXgJ3nRdLtgL3JqnBKrA6PFfE3ejiVSn3
nacos.core.auth.plugin.nacos.token.secret.key=VGhpc0lzTXlDdXN0b65TZWNyABCLZXkwMTIzPXU2Nzg=
### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false}
nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}
nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:serverIdentity}
nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:security}
server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D
# default current work dir
server.tomcat.basedir=/home/nacos/tomcat/basedir
## spring security config
### turn off security
nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}
# metrics for elastic search
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
nacos.naming.distro.taskDispatchThreadCount=10
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true
c、需要在挂载的conf下准备nacos-logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1 seconds">
<contextName>logback</contextName>
<property name="log.path" value="/home/nacos/logs/logback.log" />
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- <filter class="com.example.logback.filter.MyFilter" /> -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<appender name="file"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
<logger name="com.example.logback" level="warn" />
</configuration>
d、启动
version: '3'
services:
nacos:
image: nacos/nacos-server:v2.2.1
container_name: nacos
restart: always
volumes:
- /home/nacos/logs:/home/nacos/logs
- /home/nacos/conf:/home/nacos/conf
- /home/nacos/tomcat/basedir:/home/nacos/tomcat/basedir
ports:
- 8848:8848
- 9848:9848
environment:
- PREFER_HOST_MODE=ip
- MODE=standalone
- SPRING_DATASOURCE_PLATFORM=mysql
四、官网推荐的docker-compose部署(prometheus/grafana等监控组件)
1、拉取仓库
git clone --depth 1 https://github.com/nacos-group/nacos-docker.git
2、运行docker-compose
cd nacos-docker
docker-compose -f example/standalone-derby.yaml up -d
3、访问
http://ip:port/nacos
默认账号密码:nacos/nacos
五、集群
集群模式必须使用数据库
1、配置集群配置文件
在nacos的解压目录nacos/的conf目录下,有配置文件cluster.conf,请每行配置成ip:port。(请配置3个或3个以上节点)
2、首先进入conf目录下,默认只有一个cluster.conf.example文件,我们需要自行复制一份,修改名称为cluster.conf
cd /usr/local/nacos/config
cp cluster.conf.example cluster.conf
3、打开cluster.conf文件,添加集群的其他节点
#ip:port
192.168.1.120:8848
192.168.1.121:8848
192.168.1.122:8848
4、重启服务
将上面的步骤依次在其他机器上执行,或者直接将配置文件拷贝到其他机器上重启即可
五、application.properties配置文件详解
#*************** Spring Boot Related Configurations ***************#
# 访问路径
server.servlet.contextPath=/nacos
# 服务端口
server.port=8848
#*************** Network Related Configurations ***************#
# 从cluster.conf配置文件中获取IP(集群模式)
# nacos.inetutils.prefer-hostname-over-ip=false
# 设置nacos的ip
# nacos.inetutils.ip-address=
#*************** Config Module Related Configurations ***************#
# 数据库类型
# spring.datasource.platform=mysql
# 数据库数量
# db.num=1
# 数据库连接URL
# db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
# 数据库用户
# db.user=nacos
# 数据库密码
# db.password=nacos
### Connection pool configuration: hikariCP
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2
#*************** Naming Module Related Configurations ***************#
# 同步任务生成的周期,单位为毫秒 Will removed on v2.1.X, replace with nacos.core.protocol.distro.data.sync.delayMs
# nacos.naming.distro.taskDispatchPeriod=200
# 同步任务每批的key的数目 : Will removed on v2.1.X. Deprecated
# nacos.naming.distro.batchSyncKeyCount=1000
# 同步任务失败的重试间隔,单位为毫秒 Will removed on v2.1.X, replace with nacos.core.protocol.distro.data.sync.retryDelayMs
# nacos.naming.distro.syncRetryDelay=5000
# 是否在Server启动时进行数据预热
# nacos.naming.data.warmup=true
# 是否自动摘除临时实例(健康检查)
# nacos.naming.expireInstance=true
#是否自动清理不在线服务
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
### Add in 2.0.0
### 清理空服务间隔, unit: milliseconds.
# nacos.naming.clean.empty-service.interval=60000
### 清理空服务的过期时间, unit: milliseconds.
# nacos.naming.clean.empty-service.expired-time=60000
### 清除过期元数据的间隔 , unit: milliseconds.
# nacos.naming.clean.expired-metadata.interval=5000
### 清除过期元数据的过期时间, unit: milliseconds.
# nacos.naming.clean.expired-metadata.expired-time=60000
### The delay time before push task to execute from service changed, unit: milliseconds.
# nacos.naming.push.pushTaskDelay=500
### The timeout for push task execute, unit: milliseconds.
# nacos.naming.push.pushTaskTimeout=5000
### The delay time for retrying failed push task, unit: milliseconds.
# nacos.naming.push.pushTaskRetryDelay=1000
### Since 2.0.3
### The expired time for inactive client, unit: milliseconds.
# nacos.naming.client.expired.time=180000
#*************** CMDB Module Related Configurations ***************#
### The interval to dump external CMDB in seconds:
# nacos.cmdb.dumpTaskInterval=3600
### The interval of polling data change event in seconds:
# nacos.cmdb.eventTaskInterval=10
### The interval of loading labels in seconds:
# nacos.cmdb.labelTaskInterval=300
### If turn on data loading task:
# nacos.cmdb.loadDataAtStart=false
#*************** CMDB Module Related Configurations ***************#
# 全量dump的间隔,单位为秒
# nacos.cmdb.dumpTaskInterval=3600
# 变更事件的拉取间隔,单位为秒
# nacos.cmdb.eventTaskInterval=10
# 标签集合的拉取间隔,单位为秒
# nacos.cmdb.labelTaskInterval=300
# 是否打开CMDB
# nacos.cmdb.loadDataAtStart=false
#*************** Metrics Related Configurations ***************#
# 监控端点(prometheus)
#management.endpoints.web.exposure.include=*
# 是否导出监控数据到ES
management.metrics.export.elastic.enabled=false
# ES地址
#management.metrics.export.elastic.host=http://localhost:9200
# 是否导出监控数据到influxdb(一款时序数据库)
management.metrics.export.influx.enabled=false
# 数据库名
#management.metrics.export.influx.db=springboot
# 数据库地址
#management.metrics.export.influx.uri=http://localhost:8086
# 是否自动创建数据库
#management.metrics.export.influx.auto-create-db=true
# 为每个点编写一致性
#management.metrics.export.influx.consistency=one
# 是否启用发布到Influx的指标批次的GZIP压缩
#management.metrics.export.influx.compressed=true
#*************** Access Log Related Configurations ***************#
# 是否打印access日志
server.tomcat.accesslog.enabled=true
# 日志打印格式
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i
# 日志存储目录
server.tomcat.basedir=
#*************** Access Control Related Configurations ***************#
# 开启security框架访问控制
#spring.security.enabled=false
# 配置security放行路径
nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
### The auth system to use, currently only 'nacos' and 'ldap' is supported:
# 系统授权认证类型
nacos.core.auth.system.type=nacos
# 是否开启授权
nacos.core.auth.enabled=false
### worked when nacos.core.auth.system.type=ldap,{0} is Placeholder,replace login username
# nacos.core.auth.ldap.url=ldap://localhost:389
# nacos.core.auth.ldap.userdn=cn={0},ou=user,dc=company,dc=com
# 令牌失效时间
nacos.core.auth.default.token.expire.seconds=18000
# 默认访问密钥
nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
# 更新授权信息后的延迟时间
nacos.core.auth.caching.enabled=true
### Since 1.4.1, Turn on/off white auth for user-agent: nacos-server, only for upgrade from old version.
nacos.core.auth.enable.userAgentAuthWhite=false
### Since 1.4.1, worked when nacos.core.auth.enabled=true and nacos.core.auth.enable.userAgentAuthWhite=false.
### The two properties is the white list for auth and used by identity the request from other server.
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security
#*************** Istio Related Configurations ***************#
### If turn on the MCP server:
# 是否开启MCP
nacos.istio.mcp.server.enabled=false
#*************** Core Related Configurations ***************#
# 数据的主键雪花ID
# nacos.core.snowflake.worker-id=
### Member-MetaData
# nacos.core.member.meta.site=
# nacos.core.member.meta.adweight=
# nacos.core.member.meta.weight=
### MemberLookup
# 寻址模式类型
# nacos.core.member.lookup.type=[file,address-server,discovery]
# 使用配置文件或命令行参数设置群集列表
# nacos.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
# 自动寻址
# nacos.member.discovery=false
# 初始化时查询地址服务器的最大重试次数
# nacos.core.address-server.retry=5
## Server domain name address of [address-server] mode
# address.server.domain=jmenv.tbsite.net
## Server port of [address-server] mode
# address.server.port=8080
## Request address of [address-server] mode
# address.server.url=/nacos/serverlist
#*************** JRaft Related Configurations ***************#
# 选举超时时间,默认5s
# nacos.core.protocol.raft.data.election_timeout_ms=5000
# 集群以中性数据快照间隔时间 default is 30 minute
# nacos.core.protocol.raft.data.snapshot_interval_secs=30
# 请求失败尝试次数 default value is 1
# nacos.core.protocol.raft.data.request_failoverRetries=1
### raft internal worker threads
# 线程个数
# nacos.core.protocol.raft.data.core_thread_num=8
# 客户端线程请求数
# nacos.core.protocol.raft.data.cli_service_thread_num=4
# 一致性线性读策略
### rpc request timeout, default 5 seconds
# RPC 请求超时时间 default 5 seconds
# nacos.core.protocol.raft.data.rpc_request_timeout_ms=5000
#*************** Distro Related Configurations ***************#
### Distro data sync delay time, when sync task delayed, task will be merged for same data key. Default 1 second.
# nacos.core.protocol.distro.data.sync.delayMs=1000
### Distro data sync timeout for one sync data, default 3 seconds.
# nacos.core.protocol.distro.data.sync.timeoutMs=3000
### Distro data sync retry delay time when sync data failed or timeout, same behavior with delayMs, default 3 seconds.
# nacos.core.protocol.distro.data.sync.retryDelayMs=3000
### Distro data verify interval time, verify synced data whether expired for a interval. Default 5 seconds.
# nacos.core.protocol.distro.data.verify.intervalMs=5000
### Distro data verify timeout for one verify, default 3 seconds.
# nacos.core.protocol.distro.data.verify.timeoutMs=3000
### Distro data load retry delay when load snapshot data failed, default 30 seconds.
# nacos.core.protocol.distro.data.load.retryDelayMs=30000
六、启动参数--附
name | description | option |
---|---|---|
MODE | cluster模式/standalone模式 | cluster/standalone default cluster |
NACOS_SERVERS | nacos cluster地址 | eg. ip1,ip2,ip3 |
PREFER_HOST_MODE | 是否支持hostname | hostname/ip default ip |
NACOS_SERVER_PORT | nacos服务器端口 | default 8848 |
NACOS_SERVER_IP | 多网卡下的自定义nacos服务器IP | |
SPRING_DATASOURCE_PLATFORM | standalone 支持 mysql | mysql / empty default empty |
MYSQL_MASTER_SERVICE_HOST | mysql 主节点host | |
MYSQL_MASTER_SERVICE_PORT | mysql 主节点端口 | default : 3306 |
MYSQL_MASTER_SERVICE_DB_NAME | mysql 主节点数据库 | |
MYSQL_MASTER_SERVICE_USER | 数据库用户名 | |
MYSQL_MASTER_SERVICE_PASSWORD | 数据库密码 | |
MYSQL_SLAVE_SERVICE_HOST | mysql从节点host | |
MYSQL_SLAVE_SERVICE_PORT | mysql从节点端口 | default :3306 |
MYSQL_DATABASE_NUM | 数据库数量 | default :2 |
JVM_XMS | -Xms | default :2g |
JVM_XMX | -Xmx | default :2g |
JVM_XMN | -Xmn | default :1g |
JVM_MS | -XX:MetaspaceSize | default :128m |
JVM_MMS | -XX:MaxMetaspaceSize | default :320m |
NACOS_DEBUG | 开启远程调试 | y/n default :n |
TOMCAT_ACCESSLOG_ENABLED | server.tomcat.accesslog.enabled | default :false |
注意:本文归作者所有,未经作者允许,不得转载