Nacos单机版的基本使用

                                              作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.Spring Cloud Alibaba项目介绍

1.Spring Cloud Alibaba简介

当前微服务应用最广泛的主要都是基于JAVA的项目,而 Spring Cloud 是当前最主流的JAVA微服务开发框架规范。

2015年6月, Spring Cloud第一个正式版本发布后,得益于Spring Boot奠定的用户群体基础,再加上Spring Cloud本身较为完善的解决方案能力和简单易上手的特点,迅速成为微服务技术圈热点。随后两年的发展事实证明,以 Spring Cloud Netflix为代表的基于 Spring Cloud规范的一整套微服务解决方案,对中小企业的技术发展产生了巨大影响,加速了大量中小企业从单体式应用向分布式微服务转型的节奏。

受到Spring Cloud Netflix 项目的启发,考虑到虽然Spring Cloud生态设计理念非常好,但相关微服务解决方案并不是十分成熟,部分能力缺失。恰逢阿里内部已经有一套相对较完整的解决方案。因此,阿里于 2018 年 7 月将内部经过十多年技术打磨的一整套微服务解决方案,通过 Spring Cloud Alibaba 的方式贡献给 Spring Cloud 生态基于微服务中的标准,Spring Cloud Alibaba 为来自阿里巴巴内部的微服务解决方案提供了具体实现,不仅给 Spring Cloud 生态带来Nacos、RocketMQ、Sentinel 等微服务解决方案的实现,还集成了一些阿里云平台服务,比如短信服务、SMS、分布式任务调度、Schedulex 等。

Spring Cloud Netflex 和 Spring Cloud Alibaba 与 Spring Cloud 的关系一样,都是基于 Spring Cloud 这一整套微服务所定义标准的具体实现。Spring Cloud Alibaba 和 Spring Cloud Netflix 互为补充,在 Spring Cloud 生态完整度方面起到重要作用。另外,Spring Cloud Alibaba的组件在国内用户中的受欢迎程度已经超过 Spring Cloud 官方默认提供的一些组件,比如Nacos和RocketMQ已经逐渐成为国内分布式注册配置中心和分布式消息的事实标准,广泛应用于大量中小企业的生产环境中。

综上所述,Spring Cloud 规范有多种实现方案:Spring Cloud 官方,Spring Cloud Netflix,Spring Cloud Alibaba等,而Spring Cloud的当前最为流行的具体实现方案当属 Spring Cloud Alibaba。

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
 
依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。此外,阿里云同时还提供了 Spring Cloud Alibaba 企业版 微服务解决方案,包括无侵入服务治理(全链路灰度,无损上下线,离群实例摘除
等),企业级 Nacos 注册配置中心和企业级云原生网关等众多产品。

2.Spring Cloud Alibaba主要功能

- 服务限流降级:
	默认支持WebServlet、WebFlux、OpenFeign、RestTemplate、Spring Cloud Gateway、Dubbo 和 RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics 监控。

- 服务注册与发现:
	适配Spring Cloud服务注册与发现标准,默认集成对应 Spring Cloud 版本所支持的负载均衡组件的适配。

- 分布式配置管理:
	支持分布式系统中的外部化配置,配置更改时自动刷新。

- 消息驱动能力:
	基于Spring Cloud Stream 为微服务应用构建消息驱动能力。

- 分布式事务:
	使用 @GlobalTransactional 注解, 高效并且对业务零侵入地解决分布式事务问题。

- 阿里云对象存储:
	阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任意类型的数据。
	
- 分布式任务调度:
	提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker(schedulerx-client)上执行。
	
- 阿里云短信服务:
	覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。

除了上述所具有的功能外,针对企业级用户的场景,Spring Cloud Alibaba 配套的企业版微服务治理方案 微服务引擎MSE 还提供了企业级微服务治理中心,包括全链路灰度、服务预热、无损上下线和离群实例摘除等更多更强大的治理能力,同时还提供了企业级 Nacos 注册配置中心,企业级云原生网关等多种产品及解决方案。

3.Spring Cloud Alibaba主要组件

- Sentinel:
	把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

- Nacos:
	一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

- RocketMQ:
	一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。

- Seata:
	阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。

- Alibaba Cloud OSS: 
	阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。
	您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。

- Alibaba Cloud SchedulerX: 
	阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。
	
- Alibaba Cloud SMS: 
	覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。

4.Spring Cloud Alibaba对于JDK构建版本支持

Spring Cloud Alibaba对于JDK构建版本支持如下:
	- 2022.x 分支对应的是 Spring Cloud 2022 与 Spring Boot 3.0.x,最低支持 JDK 17。
	- 2021.x 分支对应的是 Spring Cloud 2021 与 Spring Boot 2.6.x,最低支持 JDK 1.8。
	- 2020.0 分支对应的是 Spring Cloud 2020 与 Spring Boot 2.4.x,最低支持 JDK 1.8。
	- 2.2.x 分支对应的是 Spring Cloud Hoxton 与 Spring Boot 2.2.x,最低支持 JDK 1.8。
	- greenwich 分支对应的是 Spring Cloud Greenwich 与 Spring Boot 2.1.x,最低支持 JDK 1.8。
	- finchley 分支对应的是 Spring Cloud Finchley 与 Spring Boot 2.0.x,最低支持 JDK 1.8。
	- 1.x 分支对应的是 Spring Cloud Edgware 与 Spring Boot 1.x,最低支持 JDK 1.7。
	
Spring Cloud 使用 Maven 来构建,最快的使用方式是将本项目 clone 到本地,然后执行以下命令:
./mvn  install

5.Spring Cloud Alibaba导入依赖

如果需要使用已发布的版本,在 dependencyManagement 中添加如下配置:
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2022.0.0.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
Spring Cloud Alibaba示例代码,开发的小伙伴可以尝试阅读:
	https://github.com/alibaba/spring-cloud-alibaba/blob/2022.x/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme-zh.md
	
	https://github.com/alibaba/spring-cloud-alibaba/blob/2022.x/spring-cloud-alibaba-examples/rocketmq-example/readme-zh.md
	
	https://github.com/alibaba/aliyun-spring-boot/tree/master/aliyun-spring-boot-samples/aliyun-oss-spring-boot-sample

6.Spring Cloud Alibaba版本管理规范

项目的版本号格式为 x.x.x 的形式,其中 x 的数值类型为数字,从0开始取值,且不限于0~9这个范围。

项目处于孵化器阶段时,第一位版本号固定使用0,即版本号为 0.x.x 的格式。

由于Spring Boot 1 和 Spring Boot 2 在 Actuator 模块的接口和注解有很大的变更,且 spring-cloud-commons 从 1.x.x 版本升级到 2.0.0 
版本也有较大的变更,因此我们采取跟 SpringBoot 版本号一致的版本:
	- 1.5.x 版本适用于 Spring Boot 1.5.x
	- 2.0.x 版本适用于 Spring Boot 2.0.x
	- 2.1.x 版本适用于 Spring Boot 2.1.x
	- 2.2.x 版本适用于 Spring Boot 2.2.x
	- 2020.x 版本适用于 Spring Boot 2.4.x
	- 2021.x 版本适用于 Spring Boot 2.6.x
	- 2022.x 版本适用于 Spring Boot 3.0.x

7.Spring Cloud Alibaba的微服务架构

参考链接:
	https://sca.aliyun.com/

二.Nacos概述

1.Nacos是什么

Nacos /nɑ:kəʊs/ 是Dynamic Naming and Configuration Service的首字母简称。

Nacos 是阿里巴巴开源的一个基于JAVA语言的更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Nacos 是 Spring Cloud Alibaba开发框架的众多组件之一。

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数
据及流量管理。

Nacos帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

服务(Service)是 Nacos 世界的一等公民。Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理,,包括:
	- Kubernetes Service
	- gRPC & Dubbo RPC Service
	- Spring Cloud RESTful Service
	
	
Nacos官网地址:
	https://nacos.io/

Nacos的Github地址:
	https://github.com/alibaba/nacos

2.Nacos 的核心功能

- 服务发现和服务健康监测
	Nacos支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO 或HTTP&API查找和发现服务。
	Nacos提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如HTTP、MySQL、用户自定义)的健康检查。 对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。

- 动态配置服务
	动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
	动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。
	配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。
	Nacos 提供了一个简洁易用的UI (控制台样例 Demo) 帮助您管理所有的服务和应用的配置。Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。

- 动态DNS服务
	动态DNS服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以 DNS 协议为基础的服务发现,以帮助您消除耦合到厂商私有服务发现 API 上的风险。
	Nacos 提供了一些简单的 DNS APIs TODO 帮助您管理服务的关联域名和可用的 IP:PORT 列表.

- 服务及其元数据管理
	Nacos 能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。

3.Nacos 基本架构及概念

端口 与主端口的偏移量 描述
9848 1000 客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求
9849 1001 服务端gRPC请求服务端端口,用于服务间同步等
7848 -1000 Jraft请求服务端端口,用于处理服务端间的Raft相关请求
Nacos2.X版本新增了gRPC的通信方式,因此需要增加2个端口。新增端口是在配置的主端口(server.port,默认8848)基础上,进行一定偏移量自动生成,具体端口内容及偏移量请参考如上表所示。

使用VIP/nginx请求时,需要配置成TCP转发,不能配置http2转发,否则连接会被nginx断开。

对外暴露端口时,只需要暴露主端口(默认8848)和gRPC端口(默认9848),其他端口为服务端之间的通信端口,请勿暴露其他端口,同时建议所有端口均不暴露在公网下。


客户端拥有相同的计算逻辑,用户如同1.X的使用方式,配置主端口(默认8848),通过相同的偏移量,计算对应gRPC端口(默认9848)。

因此如果客户端和服务端之前存在端口转发,或防火墙时,需要对端口转发配置和防火墙配置做相应的调整。


Nacos 基本架构及概念:
    - 服务 (Service)
        服务是指一个或一组软件功能(例如特定信息的检索或一组操作的执行),其目的是不同的客户端可以为不同的目的重用(例如通过跨进程的网络调用)。Nacos 支持主流的服务生态,如 Kubernetes Service、gRPC|Dubbo RPC Service 或者 Spring Cloud RESTful Service。

    - 服务注册中心 (Service Registry)
        服务注册中心,它是服务,其实例及元数据的数据库。服务实例在启动时注册到服务注册表,并在关闭时注销。服务和路由器的客户端查询服务注册表以查找服务的可用实例。服务注册中心可能会调用服务实例的健康检查 API 来验证它是否能够处理请求。

    - 服务元数据 (Service Metadata)
        服务元数据是指包括服务端点(endpoints)、服务标签、服务版本号、服务实例权重、路由规则、安全策略等描述服务的数据。

    - 服务提供方 (Service Provider)
        是指提供可复用和可调用服务的应用方。

    - 服务消费方 (Service Consumer)
        是指会发起对某个服务调用的应用方。

    - 配置 (Configuration)
        在系统开发过程中通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物理运行环境进行适配。配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成这个步骤。配置变更是调整系统运行时的行为的有效手段之一。

    - 配置管理 (Configuration Management)
        在数据中心中,系统中所有配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动统称为配置管理。

    - 名字服务 (Naming Service)
        提供分布式系统中所有对象(Object)、实体(Entity)的“名字”到关联的元数据之间的映射管理服务,例如 ServiceName -> Endpoints Info, Distributed Lock Name -> Lock Owner/Status Info, DNS Domain Name -> IP List, 服务发现和 DNS 就是名字服务的2大场景。

    - 配置服务 (Configuration Service)
        在服务或者应用运行过程中,提供动态配置或者元数据以及配置管理的服务提供者。
        
        
参考链接:
	https://nacos.io/docs/latest/manual/admin/deployment/deployment-overview/
	https://nacos.io/docs/latest/architecture/#基本架构及概念

4.Nacos逻辑架构及其组件介绍

Nacos各组件介绍:
    - 服务管理:
        实现服务CRUD,域名CRUD,服务健康状态检查,服务权重管理等功能
    - 配置管理:
        实现配置管CRUD,版本管理,灰度管理,监听管理,推送轨迹,聚合数据等功能
    - 元数据管理:
        提供元数据CURD 和打标能力
    - 插件机制:
        实现三个模块可分可合能力,实现扩展点SPI机制
    - 事件机制:
        实现异步化事件通知,sdk数据变化异步通知等逻辑
    - 日志模块:
        管理日志分类,日志级别,日志可移植性(尤其避免冲突),日志格式,异常码+帮助文档
    - 回调机制:
        sdk通知数据,通过统一的模式回调用户处理。接口和数据结构需要具备可扩展性
    - 寻址模式:
        解决ip,域名,nameserver、广播等多种寻址模式,需要可扩展
    - 推送通道:
        解决server与存储、server间、server与sdk间推送性能问题
    - 容量管理:
        管理每个租户,分组下的容量,防止存储被写爆,影响服务可用性
    - 流量管理:
        按照租户,分组等多个维度对请求频率,长链接个数,报文大小,请求流控进行控制
    - 缓存机制:
        容灾目录,本地缓存,server缓存机制。容灾目录使用需要工具
    - 启动模式:
        按照单机模式,配置模式,服务模式,dns模式,或者all模式,启动不同的程序+UI
    - 一致性协议:
        解决不同数据,不同一致性要求情况下,不同一致性机制
    - 存储模块:
        解决数据持久化、非持久化存储,解决数据分片问题
    - Nameserver:
        解决namespace到clusterid的路由问题,解决用户环境与nacos物理环境映射问题
    - CMDB:
        解决元数据存储,与三方cmdb系统对接问题,解决应用,人,资源关系
    - Metrics:
        暴露标准metrics数据,方便与三方监控系统打通
    - Trace:
        暴露标准trace,方便与SLA系统打通,日志白平化,推送轨迹等能力,并且可以和计量计费系统打通
    - 接入管理:
        相当于阿里云开通服务,分配身份、容量、权限过程
    - 用户管理:
        解决用户管理,登录,sso等问题
    - 权限管理:
        解决身份识别,访问控制,角色管理等问题
    - 审计系统:
        扩展接口方便与不同公司审计系统打通
    - 通知系统:
        核心数据变更,或者操作,方便通过SMS系统打通,通知到对应人数据变更
    - OpenAPI:
        暴露标准Rest风格HTTP接口,简单易用,方便多语言集成
    - Console:
        易用控制台,做服务管理、配置管理等操作
    - SDK:
        多语言sdk
    - Agent:
        dns-f类似模式,或者与mesh等方案集成
    - CLI:
        命令行对产品进行轻量化管理,像git一样好用
        
参考链接:
	https://nacos.io/docs/latest/architecture/#逻辑架构及其组件介绍
	https://nacos.io/docs/latest/concepts/

5.Nacos支持三种部署模式

Nacos支持三种部署模式
	单机模式:
		又称单例模式,主要用于测试和单机试用。
	集群模式:
		主要用于生产环境,确保高可用。
	多集群模式(TODO):
		用于多数据中心场景。


参考链接:
	https://nacos.io/docs/latest/manual/admin/deployment/deployment-overview/#2-nacos支持三种部署模式

服务提供者分类
	临时实例: 
		服务提供者主动向nacos 发送心跳监测,如果一段时间后,nacos无法收到心跳,则删除此实例
	非临时实例: 
		nacos 主动定时监测此类实例,如果提供者实例异常,则并不会删除只是标记此实例异常,等待此实例恢复

服务消费者
	消费者定时向nacos 注册中心PULL拉取提供者信息,并加以缓存
	如果提供者有变化,nacos会主动向消费者PUSH推送消息通知,Eureka不支持主动PUSH

集群模式
	Nacos 默认使用 AP ( Availability和Partiton tolerance)模式,存在非临时实例时,会采用CP(Consistency和Partiton tolerance)模式
	Eureka 采用 AP( Availability和Partiton tolerance)模式

集群数据一致性实现
	CP模式基于 Raft
	AP模式基于 阿里的Distro(基于Gossip和Eureka协议优化而来)最终一致性的AP分布式协议

三.Nacos的基本使用

1.部署Nacos单机版

	1.安装JDK(Nacos基于Java开发,要求JDK1.8+)
[root@master231 ~]# apt update && apt -y install openjdk-11-jdk


	2.下载二进制软件版
[root@master231 ~]# wget https://github.com/alibaba/nacos/releases/download/2.5.0/nacos-server-2.5.0.tar.gz


	3.解压软件包
[root@master231 ~]# tar xf nacos-server-2.5.0.tar.gz -C /yinzhengjie/softwares/
[root@master231 ~]# tree /yinzhengjie/softwares/nacos/
/yinzhengjie/softwares/nacos/
├── bin
│   ├── shutdown.cmd
│   ├── shutdown.sh
│   ├── startup.cmd
│   └── startup.sh
├── conf
│   ├── 1.4.0-ipv6_support-update.sql
│   ├── announcement_en-US.conf
│   ├── announcement_zh-CN.conf
│   ├── application.properties
│   ├── application.properties.example
│   ├── cluster.conf.example
│   ├── console-guide.conf
│   ├── derby-schema.sql
│   ├── mysql-schema.sql
│   └── nacos-logback.xml
├── LICENSE
├── NOTICE
└── target
    └── nacos-server.jar

3 directories, 17 files
[root@master231 ~]# 


	4.指定standalone单机版模式启动Nacos服务,默认监听8848端口
[root@master231 ~]# /yinzhengjie/softwares/nacos/bin/startup.sh -m standalone
...
nacos is starting with standalone
nacos is starting. you can check the /yinzhengjie/softwares/nacos/logs/start.out
[root@master231 ~]# 
[root@master231 ~]# ss -ntl | grep 8848
LISTEN 0      100                      *:8848             *:*          
[root@master231 ~]# 


	5.如上图所示,访问Nacos的WebUI
http://10.0.0.231:8848/nacos


	6.停止服务
[root@master231 ~]# /yinzhengjie/softwares/nacos/bin/shutdown.sh 
The nacosServer(137161) is running...
Send shutdown request to nacosServer(137161) OK
[root@master231 ~]# 
[root@master231 ~]# ss -ntl | grep 8848
[root@master231 ~]# 

2.Nacos的基本配置

2.1 服务注册案例

	1.启动Nacos服务
[root@master231 ~]# /yinzhengjie/softwares/nacos/bin/startup.sh -m standalone
...
nacos is starting with standalone
nacos is starting. you can check the /yinzhengjie/softwares/nacos/logs/start.out
[root@master231 ~]# 
[root@master231 ~]# ss -ntl | grep 8848
LISTEN 0      100                      *:8848             *:*          
[root@master231 ~]# 

	2.服务注册
[root@worker232 ~]# curl -s -X POST 'http://10.0.0.231:8848/nacos/v1/ns/instance?serviceName=elk91&ip=10.0.0.91&port=9200' | more 
ok
[root@worker232 ~]# 


[root@worker232 ~]# curl -s -X POST 'http://10.0.0.231:8848/nacos/v1/ns/instance?serviceName=elk92&ip=10.0.0.92&port=9200' | more 
ok
[root@worker232 ~]# 

[root@worker232 ~]# curl -s -X POST 'http://10.0.0.231:8848/nacos/v1/ns/instance?serviceName=elk93&ip=10.0.0.93&port=9200' | more 
ok
[root@worker232 ~]# 


	3.观察Nacos的WebUI
如上图所示,我们成功实现了服务注册,但是注册的实例属于"临时实例",如下图所示,因此过一段时间Nacos会自动删除。

2.2 服务发现案例

	1.注册服务
[root@worker232 ~]# curl -s -X POST 'http://10.0.0.231:8848/nacos/v1/ns/instance?serviceName=elasticstack&ip=10.0.0.91&port=9200' | more 
ok
[root@worker232 ~]# 
[root@worker232 ~]# curl -s -X POST 'http://10.0.0.231:8848/nacos/v1/ns/instance?serviceName=elasticstack&ip=10.0.0.92&port=9200' | more 
ok
[root@worker232 ~]# 
[root@worker232 ~]# curl -s -X POST 'http://10.0.0.231:8848/nacos/v1/ns/instance?serviceName=elasticstack&ip=10.0.0.93&port=9200' | more 
ok
[root@worker232 ~]# 



	2.服务发现
[root@worker233 ~]# curl -X GET -s  'http://10.0.0.231:8848/nacos/v1/ns/instance/list?serviceName=elasticstack' | more  | jq
{
  "name": "DEFAULT_GROUP@@elasticstack",
  "groupName": "DEFAULT_GROUP",
  "clusters": "",
  "cacheMillis": 10000,
  "hosts": [
    {
      "instanceId": "10.0.0.92#9200#DEFAULT#DEFAULT_GROUP@@elasticstack",
      "ip": "10.0.0.92",
      "port": 9200,
      "weight": 1,
      "healthy": true,
      "enabled": true,
      "ephemeral": true,
      "clusterName": "DEFAULT",
      "serviceName": "DEFAULT_GROUP@@elasticstack",
      "metadata": {},
      "instanceHeartBeatInterval": 5000,
      "instanceHeartBeatTimeOut": 15000,
      "ipDeleteTimeout": 30000,
      "instanceIdGenerator": "simple"
    },
    {
      "instanceId": "10.0.0.93#9200#DEFAULT#DEFAULT_GROUP@@elasticstack",
      "ip": "10.0.0.93",
      "port": 9200,
      "weight": 1,
      "healthy": true,
      "enabled": true,
      "ephemeral": true,
      "clusterName": "DEFAULT",
      "serviceName": "DEFAULT_GROUP@@elasticstack",
      "metadata": {},
      "instanceHeartBeatInterval": 5000,
      "instanceHeartBeatTimeOut": 15000,
      "ipDeleteTimeout": 30000,
      "instanceIdGenerator": "simple"
    },
    {
      "instanceId": "10.0.0.91#9200#DEFAULT#DEFAULT_GROUP@@elasticstack",
      "ip": "10.0.0.91",
      "port": 9200,
      "weight": 1,
      "healthy": true,
      "enabled": true,
      "ephemeral": true,
      "clusterName": "DEFAULT",
      "serviceName": "DEFAULT_GROUP@@elasticstack",
      "metadata": {},
      "instanceHeartBeatInterval": 5000,
      "instanceHeartBeatTimeOut": 15000,
      "ipDeleteTimeout": 30000,
      "instanceIdGenerator": "simple"
    }
  ],
  "lastRefTime": 1738984250264,
  "checksum": "",
  "allIPs": false,
  "reachProtectionThreshold": false,
  "valid": true
}
[root@worker233 ~]# 

2.3 服务配置案例

	1.发布配置(如上图所示,发布成功后,可以在Nacos的WebUI查看)
[root@worker232 ~]# curl -s -X POST "http://10.0.0.231:8848/nacos/v1/cs/configs?dataId=blog&group=k8s&content=https://www.cnblogs.com/yinzhengjie" | more
true
[root@worker232 ~]# 


	2.获取配置(如下图所示,我们也可以通过Nacos的WebUI查看数据详情哟~)
[root@worker232 ~]# curl -s -X GET "http://10.0.0.231:8848/nacos/v1/cs/configs?dataId=blog&group=k8s" | more
https://www.cnblogs.com/yinzhengjie
[root@worker232 ~]# 

2.4 创建名称空间

如上图所示,我们可以创建不同的名称空间,默认有一个"public"的名称空间。

如下图所示,我们创建了3个不同的名称空间。

2.5 查看配置管理的名称空间

如上图所示,当我们创建名称空间后,将来可以基于名称空间来隔离用户的配置信息。

3.单机模式基于MySQL实现数据存储

推荐阅读:
    https://www.cnblogs.com/yinzhengjie/p/18704219

4.Nacos开启鉴权并验证实战案例

推荐阅读:
    https://www.cnblogs.com/yinzhengjie/p/18698697

5.Nacos启动脚本编写

5.1 编写启动脚本

cat > /lib/systemd/system/nacos.service <<EOF
[Unit]
Description=nacos.service
After=network.target
[Service]
Type=forking
ExecStart=/yinzhengjie/softwares/nacos/bin/startup.sh -m standalone
ExecStop=/yinzhengjie/softwares/nacos/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
EOF

5.2 基于脚本管理Nacos服务

	1.手动停止之前的Nacos服务
[root@master231 ~]# /yinzhengjie/softwares/nacos/bin/shutdown.sh 
The nacosServer(221972) is running...
Send shutdown request to nacosServer(221972) OK
[root@master231 ~]# 
[root@master231 ~]# ss -ntl | grep 8848
[root@master231 ~]# 

	
	2.基于systemctl方式管理Nacos服务
systemctl daemon-reload
systemctl enable --now nacos.service
systemctl is-active nacos.service
systemctl status nacos.service
ss -ntl | grep 8848
posted @ 2025-02-04 00:01  尹正杰  阅读(263)  评论(0)    收藏  举报