深入微服务-Nacos 基础及Nacos Server搭建

  • Post author:
  • Post category:其他




系列文章目录





前言

本系列带着大家深入微服务 Spring体系的各个框架的基本使用以及底层原理。上一篇文章介绍了SpringCloud Eureka的高可用以及核心原理,本节将带着大家学习下Nacos的基础概念以及Nacos Server的搭建




Nacos是什么?

Nacos主要在微服务生态中可以发现、配置和管理微服务,实现动态服务发现、服务配置、服务元数据及流量管理



Nacos 关键特性

  • 服务发现和服务健康监测

    • Nacos 支持基于 DNS 和基于 RPC 的服务发现
    • Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求
  • 动态配置服务

    • Nacos 以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置
    • Nacos 提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态更新的配置管理特性
  • 动态 DNS 服务

    • 动态 DNS 服务支持权重路由
  • 服务及其元数据管理

    • Nacos支持数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据



Nacos 生态

目前Nacos支持多种生态,比如SpringCloud、Dubbo、云原生Cloud Native等

在这里插入图片描述



Nacos Server 搭建

可通过

下载地址


本文使用版本1.4.2

Nacos下载界面

下载之后的目录

下载目录

image.jpg



Nacos支持三种部署模式

  • 单机模式 – 用于测试和单机试用
  • 集群模式 – 用于生产环境,确保高可用
  • 多集群模式 – 用于多数据中心场景



单机模式启动

  • Linux/Unix


    bin/startup.sh -m standalone
  • Windows


    cmd startup.cmd -m standalone

Console 控制台输出

image.jpg

访问管理端http://xx.xx.xx.xx:8848,账号/密码为nacos/nacos

端口号8848为默认端口号,可在配置文件application.properties 修改server.port属性

Nacos 管理界面

Nacos管理界面



单机模式支持mysql

默认Nacos使用嵌入式数据库实现数据的存储,0.7版本之后支持mysql数据源能力

  1. 安装数据库,版本要求:5.6.5+
  2. 初始化mysql数据库,数据库初始化文件:nacos-mysql.sql
  3. 修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
 spring.datasource.platform=mysql

### Count of DB:
 db.num=1

### Connect URL of DB:
 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.0=nacos
 db.password.0=nacos

再以单机模式启动nacos,nacos所有写嵌入式数据库的数据都写到了mysql

nacos表如下

image.jpg



k8s 搭建单机nacos

---
apiVersion: v1
kind: Service
metadata:
  name: nacos
  namespace: #k8s资源空间
spec:
  externalIPs:
    - xx.xx.xx.xx
  selector:
    app: nacos
  ports:
    - name: svc-port
      port: 8848
      targetPort: 8848

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nacos
  namespace: #k8s资源空间
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nacos
  template:
    metadata:
      labels:
        app: nacos
    spec:
      volumes:
        - name: localtime
          hostPath:
            path: /usr/share/zoneinfo/Asia/Shanghai
        - name: timezone
          hostPath:
            path: /etc/timezone
      imagePullSecrets:
        - name: harborsecret
      containers:
        - name: nacos
          image: nacos-server:1.4.2
          imagePullPolicy: Always
          resources:
            limits:
              cpu: "2"
              memory: 2G
            requests:
              cpu: 500m
              memory: 500Mi
          env:
            #运行的profile
            - name: MODE
              value: standalone ## 集群模式
            - name: SPRING_DATASOURCE_PLATFORM
              value: mysql ## 数据源
            - name: MYSQL_SERVICE_HOST
              value: '127.0.0.1' ## MySQL 地址
            - name: MYSQL_SERVICE_DB_NAME
              value: nacos  	## MySQL Nacos 库名
            - name: MYSQL_SERVICE_USER
              value: root		## MySQL Nacos 账号
            - name: MYSQL_SERVICE_PASSWORD
              value: 'root'		## MySQL Nacos 密码
            - name: NACOS_AUTH_ENABLE
              value: 'true'		## 开启认证
            - name: NACOS_AUTH_CACHE_ENABLE
              value: 'true'		## 认证缓存开启
            - name: NACOS_AUTH_IDENTITY_KEY  ## 配置自定义身份识别的key
              value: 'xxx_key'	## 认证缓存开启
            - name: NACOS_AUTH_IDENTITY_VALUE 
              value: 'xxx_value'  ## 配置自定义身份识别的value
          volumeMounts:
            - name: localtime
              mountPath: /etc/localtime
            - name: timezone
              mountPath: /etc/timezone



版权声明:本文为janyxe原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。