Nacos 基本概念与部署
Nacos支持三种部署模式单机模式 - 用于测试和单机试用。集群模式 - 用于生产环境,确保高可用。多集群模式 - 用于多数据中心场景。单机模式下部署Nacos1、下载源码或者安装包wget https://github.com/alibaba/nacos/releases/download/1.1.0/nacos-server-1.1.0.tar.gz2、解压后直接可以启动...
Nacos能帮我们解决什么问题
配置作为代码如影随行的伙伴,伴随着应用的整个周期,配置一般通过如下几种形式存在。
1、硬编码
配置如果需要动态修改的话,需要当前应用去暴露管理该配置项的接口。
另外配置变更都是发生在内存中,并没有持久化。因此,在修改配置后需要重启应用,配置又会变回代码中的默认值了。
当有多台机器时,运维成本可想而知。
2、配置文件
相比"硬编码"它解决了第二个问题,持久化。但是另外两个问题,并没有解决。
动态修改是类似于"硬编码"中暴露管理接口的方式,代码中会多一步持久化新配置到文件的逻辑。
也可以直接去机器上修改配置文件,再重启应用。增加定时任务,让配置生效可以避免重启的操作。
3、DB配置表
这里的DB可以是mysql等关系型数据库,也可以是redis等非关系数据库。
将配置从应用中抽离出来,集中管理,能较大的降低运维成本。
那么,它能怎么解决动态更新配置的问题呢?据我所知,有两种方式。
其一,如同之前一样,通过暴露管理接口去解决,当然,也一样得增加持久化的逻辑,只不过,之前是写文件,现在是将最新配置写入数据库。不过,程序中还需要有定时从数据库读取最新配置的任务,这样,才能做到只需调用其中一台机器的管理配置接口,就能把最新的配置下发到整个应用集群所有的机器上,真正达到降低运维成本的目的。
其二,直接修改数据库,程序中通过定时任务从数据库读取最新的配置内容。
“DB 配置表”的形式解决了主要的问题,但是它不够优雅,带来了一些“累赘”。
关于配置的动态更新,对 Nacos Spring 的用户来说,在自身应用中就只是设置 “autoRefreshed” 的一个布尔值。然后在需要修改配置的时候,调用 Nacos 修改配置的接口,或使用 Nacos 的控制台去修改,配置发生变更后, Nacos 就会把最新的配置推送到该应用的所有机器上,简单而高效。
Nacos 有哪些典型的应用场景?- 配置管理
1、数据库连接信息
- 将数据库连接信息等敏感配置从项目中剥离;
- 数据库增加 IP 白名单连接限制;
- 最小权限原则:每个账号只配置所必需的权限,避免删表删库等高危操作;
- 定期修改数据库账号、密码。 使用 Nacos配置管理模块,将敏感配置信息都存放到 Nacos 中。 Nacos 配置管理,其中一个立身之本就是为敏感配置保驾护航。
它提供上述场景所需的功能,通过命名空间区分不同环境(开发、测试、预发、生产),通过“版本控制”保证变更可追溯,通过“快速回滚”保证错误变更时影响最小,通过的“灰度发布”功能保障配置安全平稳地变更,还有更多更全面功能(权限管控、变更审计等)即将支持。
2、限流阈值和降级开关
动态推送能力
3、流量的动态调度
动态调度流量,能秒级得将流量从一个区域调度到另外可用的区域的集群上。
将用户 ID 的分片和对应的路由规则存放在 Nacos 的中,配合统一接入层等的组件,就能将流量打散到各个集群上,进而让系统能承载更大的流量,以更好的支撑业务的发展。
另外,将其存放与 Nacos 中,也就具备了配置“动态化”的能力,一旦某区域出现基础设施无法及时恢复的问题时,只需在 Nacos 的控制台上修改 ID 分片的路由规则,就能将有问题的区域流量快速切换到其他可用的区域上,保障对业务几乎无损。
Nacos 概念
地域:
物理的数据中心,资源创建成功后不能更换。
可用区:
同一地域内,电力和网络互相独立的物理区域。同一可用区内,实例的网络延迟较低。
接入点:
地域的某个服务的入口域名。
命名空间:
可以用于配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。
Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。
配置:
在系统开发过程中,开发者通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。
目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物理运行环境进行适配。
配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成。配置变更是调整系统运行时的行为的有效手段。
配置管理:
系统配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动。
配置项:
一个具体的可配置的参数与其值域,通常以 param-key=param-value 的形式存在。
例如我们常配置系统的日志输出级别(logLevel=INFO|WARN|ERROR) 就是一个配置项。
配置集:
一组相关或者不相关的配置项的集合称为配置集。在系统中,一个配置文件通常就是一个配置集,包含了系统各个方面的配置。
例如,一个配置集可能包含了数据源、线程池、日志级别等配置项。
配置集ID:
Nacos 中的某个配置集的 ID。配置集 ID 是组织划分配置的维度之一。Data ID 通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。
Data ID 通常采用类 Java 包(如 com.taobao.tc.refund.log.level)的命名规则保证全局唯一性。此命名规则非强制。
配置分组:
Nacos 中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如 Buy 或 Trade )对配置集进行分组,从而区分 Data ID 相同的配置集。
当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。配置分组的常见场景:不同的应用或组件使用了相同的配置类型,如 database_url 配置和 MQ_topic 配置。
配置快照:
Nacos 的客户端 SDK 会在本地生成配置的快照。当客户端无法连接到 Nacos Server 时,可以使用配置快照显示系统的整体容灾能力。
配置快照类似于 Git 中的本地 commit,也类似于缓存,会在适当的时机更新,但是并没有缓存过期(expiration)的概念。
服务:
通过预定义接口网络访问的提供给客户端的软件功能。
服务名:
服务提供的标识,通过该标识可以唯一确定其指代的服务。
服务注册中心:
存储服务实例和服务负载均衡策略的数据库。
服务发现:
在计算机网络上,(通常使用服务名)对服务下的实例的地址和元数据进行探测,并以预先定义的接口提供给客户端进行查询。
Nacos支持三种部署模式
- 单机模式 - 用于测试和单机试用。
- 集群模式 - 用于生产环境,确保高可用。
- 多集群模式 - 用于多数据中心场景。
单机模式下部署Nacos
1、下载源码或者安装包
wget https://github.com/alibaba/nacos/releases/download/1.1.0/nacos-server-1.1.0.tar.gz
2、解压后直接可以启动
tar -xvf nacos-server-1.1.0.tar.gz
cd nacos/bin
启动命令(standalone代表着单机模式运行,非集群模式):
sh startup.sh -m standalone
关闭服务器
sh shutdown.sh
3、现在使用ip加端口就可以访问控制台了
http://ip:port/nacos
Nacos监控 prometheus+grafana
配置application.properties文件,暴露metrics数据
management.endpoints.web.exposure.include=*
访问{ip}:8848/nacos/actuator/prometheus,看是否能访问到metrics数据
搭建prometheus采集Nacos metrics数据
1、下载安装包
wget https://github.com/prometheus/prometheus/releases/download/v2.17.1/prometheus-2.17.1.linux-amd64.tar.gz
tar xvfz prometheus-2.17.1.linux-amd64.tar.gz
cd prometheus-2.17.1.linux-amd64
2、修改配置文件prometheus.yml采集Nacos metrics数据
- job_name: nacos
metrics_path: '/nacos/actuator/prometheus'
static_configs:
- targets:['{ip1}:8848','{ip2}:8848','{ip3}:8848']
注意格式,我这里是单机部署,只写了本机。
3、启动prometheus
nohup ./prometheus --config.file=./prometheus.yml &
通过访问http://{ip}:9090/graph可以看到prometheus的采集数据,在搜索栏搜索nacos_monitor可以搜索到Nacos数据说明采集数据成功
搭建grafana图形化展示metrics数据
1、和prometheus在同一台机器上安装grafana,使用 yum 安装grafana
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.4-1.x86_64.rpm
yum install grafana-5.2.4-1.x86_64.rpm
或
yum install https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.4-1.x86_64.rpm
启动:
service grafana-server start
2、配置prometheus数据源
访问grafana
http://{ip}:3000
创建数据源
Name要小写
Type 选择prometheus
URL给自己的ip
其他默认,点击绿色按钮。
导入Nacos grafana监控模板
到这里就结束了,监控指标和配置grafana告警请参见官网。
程序启动默认占用的端口是8848(珠穆朗玛峰的高度),我们可以对端口进行修改,用编辑器打开bin目录下的startup.cmd文件 添加一行代码
set "JAVA_OPT=%JAVA_OPT% --server.port=9090
还可以在conf文件下的application.properties中添加
server.port=9090
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)