系列文章目录
-
深入微服务-SpringBoot启动原理
-
深入微服务-服务调用组件SpringCloud Feign
-
深入微服务-服务注册与发现 SpringCloud Eureka之基础
-
深入微服务-服务注册与发现 SpringCloud Eureka之高可用以及核心原理
-
深入微服务-Nacos 基础及Nacos Server搭建
文章目录
前言
本系列带着大家深入微服务 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支持三种部署模式
- 单机模式 – 用于测试和单机试用
- 集群模式 – 用于生产环境,确保高可用
- 多集群模式 – 用于多数据中心场景
单机模式启动
-
Linux/Unix
bin/startup.sh -m standalone
-
Windows
cmd startup.cmd -m standalone
Console 控制台输出
访问管理端http://xx.xx.xx.xx:8848,账号/密码为nacos/nacos
端口号8848为默认端口号,可在配置文件application.properties 修改server.port属性
Nacos 管理界面
单机模式支持mysql
默认Nacos使用嵌入式数据库实现数据的存储,0.7版本之后支持mysql数据源能力
- 安装数据库,版本要求:5.6.5+
- 初始化mysql数据库,数据库初始化文件:nacos-mysql.sql
- 修改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表如下
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 版权协议,转载请附上原文出处链接和本声明。