基础介绍
Nacos是阿里巴巴推出的开源工具,提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
Nacos注册中心分为server与client,server采用Java编写,为client提供注册发现服务与配置服务。而client可以用多语言实现,client与微服务嵌套在一起,nacos提供sdk和openApi,如果没有sdk也可以根据openApi手动写服务注册与发现和配置拉取的逻辑
服务注册的策略的是每5秒向nacos server发送一次心跳,心跳带上了服务名,服务ip,服务端口等信息。同时 nacos server也会向client 主动发起健康检查,支持tcp/http检查。如果15秒内无心跳且健康检查失败则认为实例不健康,如果30秒内健康检查失败则剔除实例。
Nacos相关概念和功能可以参考官网:什么是 Nacos
安装
Nacos提供源码和发行包两种下载安装的方式,这里以编译后的发行包为例。以下示例基于1.4.2
或者2.0.4
版本。
在CentOS下安装
-
在官方github库中选择需要的版本
github地址:发布 ·阿里巴巴/纳科斯 ·GitHub
需要注意的是,nacos 1.x版本<=1.4.1的版本和2.x版本<=2.0.0-ALPHA.1的版本存在未授权漏洞,选择使用版本的时候需要注意。
-
下载压缩包
在想要安装的目录下,使用以下命令下载压缩包wget https://github.com/alibaba/nacos/releases/download/1.4.2/nacos-server-1.4.2.zip
下载完成之后使用unzip进行解压
unzip nacos-server-1.4.2.zip
加压完成之后可以看到以下文件
-
启动
cd 到nacos/bin文件夹中,可以看到startup.sh文件,这个是启动文件,相对应的还有shutdown.sh停止服务文件
执行以下命令,这里是以单机模式进行启动,仅做学习和测试的情况下,单机启动就足够了,生产环境中根据实际情况判断是否需要搭建集群。./startup.sh -m standalone
nacos的配置文件是conf文件夹中的application.properties,可以通过修改改文件自定义一些配置,如使用独立安装的mysql,或者设置端口等。server.contextPath=/nacos server.servlet.contextPath=/nacos server.port=8848 spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://xx.xx.xx.x:3306/nacos_devtest_prod?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=user db.password=pass nacos.cmdb.dumpTaskInterval=3600 nacos.cmdb.eventTaskInterval=10 nacos.cmdb.labelTaskInterval=300 nacos.cmdb.loadDataAtStart=false 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 nacos.security.ignore.urls=/,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/login,/v1/console/health/**,/v1/cs/**,/v1/ns/**,/v1/cmdb/**,/actuator/**,/v1/console/server/** nacos.naming.distro.taskDispatchThreadCount=1 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 nacos.naming.expireInstance=true
上面讲到的nacos未授权漏洞问题,在1.4.2及以后版本已经解决,可以通过配置文件启动授权认证,配置如下:
### 进行安全加固 ### 开启鉴权 nacos.core.auth.enabled=true ### 关闭使用user-agent判断服务端请求并放行鉴权的功能 nacos.core.auth.enable.userAgentAuthWhite=false ### 配置自定义身份识别的key(不可为空)和value(不可为空) nacos.core.auth.server.identity.key=yyl nacos.core.auth.server.identity.value=yyl@!12
需要注意的是所有集群均需要配置相同的server.identity信息,否则可能导致服务端之间数据不一致或无法删除实例等问题。
启动之后,可以通过浏览器查看nacos管理平台,http://ip:8848/nacos,默认用户名密码是:nacos/nacos
docker安装
- 拉取镜像
docker pull nacos/nacos-server
- 启动容器
启动脚本:
这里将配置文件映射到本地文件夹,custome.properties配置会覆盖application.propertiesdocker run --name nacos -d -p 8848:8848 --privileged=true --restart=always -e JVM_XMS=256m // 配置jvm启动时分配的内存 -e JVM_XMX=256m // 配置jvm运行过程中分配的最大内存 -e MODE=standalone // 以单机模式启动 -e PREFER_HOST_MODE=hostname -v /home/nacos/logs:/home/nacos/logs // 映射日志文件到本地文件夹 -v /home/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties // 映射配置文件到本地文件夹 nacos/nacos-server
window安装
从github下载压缩包,解压到安装目录
在bin文件夹中,通过cmd执行以下脚本,注意nacos依赖java环境,windows安装需要先安装java8以上环境
startup.cmd -m standalone
集群搭建
nacos解压后的conf文件夹中不仅有用于当前nacos server的配置,还有一个集群配置文件cluster.conf.example,这里我们需要复制一份文件,并改名为cluster.conf,修改cluster.conf,将里面的ip地址改为我们作为集群机器的ip地址,集群中的nacos server都需要增加一样的cluster.conf配置
修改application.properties配置文件中的mysql连接信息,集群中的nacos server需要连接到同一个mysql数据库
mysql独立安装的情况下,需要初始化nacos相关的表结构,conf文件夹下有相关的脚本文件,在想要的mysql数据库中执行即可
参考文献:
什么是Nacos?Nacos注册配置中心介绍 - 简书 (jianshu.com)
Nacos篇五 - Nacos集群(Linux下standalone模式和cluster模式)
微服务系列文章:
下一篇:服务发现—Asp.net core结合nacos实现服务发现