title: 服务器Nacos集群搭建及使用总结
date: 2022-02-07 23:46:19
tags:

  • 服务器
  • Nacos
    categories:
  • 服务器
    cover: https://cover.png
    feature: false

1. 架构图


实际使用:

2. 下载

官网地址:home (nacos.io)

GitHub 下载地址:Releases · alibaba/nacos (github.com)

选择对应版本进行下载,下载有可能会很慢

3. 单机模式

1、下载完成后上传到服务器

2、解压文件

tar -zxvf nacos-server-2.2.0.tar.gz

3、重命名一下文件(非必要)

mv nacos nacos-2.2.0

4、进入 Nacos 的 conf 目录下,在 Nacos 配置文件 application.properties 里设置端口为 3333(默认为 8848),并且设置 MySQL 连接属性进行持久化配置,这里的 nacos_config 数据库使用 Nacos 自带的 mysql-schema.sql 数据库脚本构建

server.port=3333###########################################################
spring.datasource.platform=mysqldb.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=xxx

5、进入 Nacos 的 bin 目录下,直接执行如下命令即可启动

sh startup.sh -m standalone
或者 ./startup.sh -m standalone

由于 Nacos 默认模式为 cluster,即集群模式,需设置启动参数 -m standalone 为单机模式,也可在 application.properties 配置文件里修改默认模式为单机模式,则可直接通过 ./startup.sh 启动单机模式

4. 集群模式

4.1 配置 Nacos

前 4 步与单机版同

5、复制 cluster.conf.example 文件为 cluster.conf

cp cluster.conf.example cluster.conf

6、在集群配置文件 cluster.conf 里配置集群节点,IP:Port,IP 为服务器 IP 地址,端口为 Nacos 的端口,即 application.properties 配置文件里的 server.port=3333,包括其他集群节点的端口,同时在服务器防火墙中开放需要访问的端口 3333、4444、5555

10.0.4.9:3333
10.0.4.9:4444
10.0.4.9:5555

7、以集群模式启动,./startup.sh

可以看到 3333 的节点已经启动

8、如法炮制,再复制两份 Nacos,在 application.properties 配置文件里分别设置端口为 4444、5555,这样就有了三个 Nacos 文件,端口分别为 3333、4444、5555,并且在 cluster.conf 配置文件里都配置了这三个节点

9、分别启动三个 Nacos,假如服务器内存不够,会出现只能启动一两个,三个服务不能全部启动的情况,或者启动另一个之后,之前启动的服务关闭,可以修改 startup.sh 文件的启动参数数值大小,改小一点

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

4.2 配置 Nginx

1、进入 Nginx 的 conf 目录下修改配置文件 nginx.conf

# 代理转发地址
upstream cluster{server 124.222.xxx.90:3333;server 124.222.xxx.90:4444;server 124.222.xxx.90:5555;
}server {listen       1111; # 监听端口server_name  124.222.xxx.90; # 访问地址#charset koi8-r;#access_log  logs/host.access.log  main;location / {#root   html;#index  index.html index.htm;proxy_pass http://cluster;}
}

2、在服务器的防火墙里开放监听端口,即 1111

3、进入 Nginx 的 sbin 目录下,执行命令启动 Nginx

./nginx
或指定配置文件启动:./nginx -c /usr/nginx/conf/nginx.conf

假如 Nginx 已启动,则执行

./nginx -s reload

重新加载 Nginx 即可

4、访问 124.222.xxx.90:1111/nacos,其实就是转发到访问 124.222.xxx.90:3333/nacos 或 124.222.xxx.90:4444/nacos 或 124.222.xxx.90:5555/nacos

5、查看 Nacos 的启动情况,在集群节点里可以看到三个节点全是 UP 的状态,由于服务器内存原因,这里只启动了两个,内存不够了

5. 微服务注册进 Nacos

5.1 引入依赖

这里用的是 Spring Cloud,假如只使用 Spring Boot 参考官网的 Spring Boot 快速开始:Nacos Spring Boot 快速开始

按照对应关系来选择对应的版本,这里使用的版本是 Spring Boot 2.7.7、Spring Cloud Alibaba 2021.0.4.0、Spring Cloud 2021.0.4

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

5.2 修改配置文件

spring:application:name: discovery-configcloud:nacos:discovery:server-addr: 124.222.xxx.90:3333

5.3 添加注解

在启动类上添加 Spring Cloud 原生注解 @EnableDiscoveryClient 开启服务注册发现功能

@SpringBootApplication
@EnableDiscoveryClient
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}

5.4 注意

Nacos2.0 版本相比 1.X 新增了 GRPC 的通信方式,Nacos 2.0 的 GRPC 端口都是通过主端口的偏移量产生,GRPC 端口 = Nacos 主端口 + 1000,因此还要额外开放 主端口 + 1000 的端口,如主端口为 3333,则还需开放端口 4333,这里为客户端 GRPC 请求服务端端口。假如服务端 GRPC 请求服务端接口,还需开放偏移量为 1001 的端口,即 4334

否则会报 com.alibaba.nacos.api.exception.NacosException: Client not connected, current status:STARTING 异常

5.5 启动

启动主启动类后,即可在 Nacos 管理页面看到服务已经被注册了进来

6. Nacos 作为配置中心

在上面注册中心的基础上

6.1 引入依赖

由于在 SpringCloud 2020.* 版本把 bootstrap 禁用了,导致在读取文件的时候读取不到报错 No spring.config.import property has been defined,所以要重新引入 bootstrap 依赖

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

6.2 配置

这里需要两个配置文件 bootstrap.yml 和 application.yml,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。而 SpringBoot 中配置文件的加载是存在优先级顺序的,bootstrap 优先级高于 application

1、bootstrap.yml

server:port: 9001spring:application:name: discovery-configcloud:nacos:discovery:server-addr: 124.222.xxx.90:3333config:server-addr: 124.222.xxx.90:3333file-extension: yaml # 指定 yaml 格式的配置

2、application.yml

 spring:profiles:active: dev # 表示开发环境

6.3 ConfigController

通过 SpringCloud 原生注解 @RefreshScope 实现配置的自动更新

@RestController
@RefreshScope
public class ConfigController {@Value("${config.info}")private String configInfo;@GetMapping("/config/info")public String getConfigInfo() {return configInfo;}
}

6.4 持久化配置

在 Nacos 的配置列表里新建一个配置,这里的 Data ID,计算公式为:

${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

在前面已经配置好了持久化配置属性,配置信息会保存到数据库中

6.5 查看配置

启动服务,访问 http://localhost:9001/config/info,即可读取到配置中心的配置信息

更新一下配置信息

可以发现读取的配置信息也随之动态刷新

6.6 加载方案

6.61 Data ID 方案

默认空间 + 默认分组 + Data ID,主要通过不同的 Data ID 来进行区分,即上面的配置

6.6.2 Group 方案

通过 Group 实现环境区分

1、新建 Group

2、增加 group 配置

bootstrap.yml

server:port: 9001spring:application:name: discovery-configcloud:nacos:discovery:server-addr: 124.222.xxx.90:3333config:server-addr: 124.222.xxx.90:3333file-extension: yamlgroup: DEV_GROUP

application.yml

spring:profiles:# active: dev # 表示开发环境active: info # 表示开发环境

6.6.3 Namespace 方案

1、新建命名空间

2、选择该命名空间进行配置管理

3、配置命名空间

bootstrap.yml

server:port: 9001spring:application:name: discovery-configcloud:nacos:discovery:server-addr: 124.222.118.90:8848config:server-addr: 124.222.118.90:8848file-extension: yamlnamespace: a404abf6-f7ca-40f5-a106-2a892793fb48

服务器Nacos集群搭建及使用总结相关推荐

  1. Nacos配置管理-nacos集群搭建

    Nacos集群搭建 1.集群结构图 官方给出的Nacos集群图: 其中包含3个nacos节点,然后一个负载均衡器代理3个Nacos.这里负载均衡器可以使用nginx. 我们计划的集群结构: 三个nac ...

  2. 环境搭建:Windows系统下Nacos集群搭建

    环境搭建:Windows系统下Nacos集群搭建 一.环境准备 名称 版本 下载地址 nacos NACOS 1.2.0 下载地址,提取码:5555 MySQL mysql Ver 14.14 Dis ...

  3. 第七节:Nacos集群搭建

    Nacos集群搭建 1.集群结构图 官方文档: https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html 其中包含3个nacos节点,然后一个 ...

  4. SRS流媒体服务器——Edge集群搭建

    SRS流媒体服务器--Edge集群搭建 目录 edge原理 dege配置 1. edge原理 SRS的Edge主要解决⼏条流有⼤量播放请求的场景,⽐如⼀个流有上万⼈观看. SRS的Edge能对接所有的 ...

  5. SRS流媒体服务器——Forward集群搭建和源码分析

    SRS流媒体服务器--Forward集群搭建和源码分析 目录 Forward集群原理 RTMP流转发(Forward)部署实例 Forward集群源码分析 1. Forward集群原理 Forward ...

  6. 云服务器 Redis 集群搭建

    云服务器 Redis 集群搭建 主从复制架构搭建 集群架构介绍 环境准备 安装 配置及启动 测试 Sentinel (哨兵)架构搭建 集群架构介绍 环境准备 Sentinel 配置 Sentinel ...

  7. nacos集群搭建并配置nginx负载均衡

    一.配置 nacos 集群 注意:需要先配置好 nacos 连接本地数据库 1.拷贝三份 nacos 2.修改配置文件(application.properties) 修改启动端口: nacos1:8 ...

  8. Nacos 集群搭建_01

    文章目录 一.准备工作 1. 服务器部署 2. nacos下载 2. nacos下载与解压 3. 编辑配置文件 4. nacos 集群配置 二.初始化nacos脚本 2.1. 创建nacos数据库 2 ...

  9. 2017微服务 mysql集群_微服务架构系列之Nacos集群搭建

    上回我们说到了<微服务架构系列之Nacos 配置核心概念>,这次我们讲讲Nacos 集群环境搭建. 集群模式跟我们平时进行扩容是一样的,可以通过 Nginx 转发到多个节点,如下图: 如果 ...

最新文章

  1. Ubuntu下 ssh : connect to host localhost port 22:Connection refused
  2. Python3 使用推导式统计字符出现次数
  3. JVM优化原理—Java架构师必须要知晓的知识
  4. php注解rbac,PHP的RBAC权限详解
  5. ui设计 网络错误_UI设计人员常犯的10个错误
  6. Python编程教程:面向对象之高级特性!
  7. 关于企业应用SAP成本管理模式与方法的一些思考
  8. rockemq 发送延迟消息_58分布式消息队列WMB设计与实践
  9. Want VS Needs,产品经理基于场景的需求挖掘
  10. 配置Pylint for Python3.5
  11. poj2991 Crane
  12. linux执行命令在哪,在linux终端中执行root命令有哪些方法
  13. 零跑科技实现“领跑”背后:频现“质量门”,噱头大于实际?
  14. [0]Android框架揭秘-概论
  15. iOS 开发 多线程详解之线程生命周期控制
  16. 计算机三员运维机构,网络安全中的“三员”管理
  17. MYSQL 人民币大写金额转小写
  18. 复旦大学数学学院转入大数据学院的14级同学对高等代数课程的评价
  19. 联想拯救者y7000p加内存条_联想 拯救者Y7000P 怎么升级内存?
  20. 软件打开文件夹后闪退

热门文章

  1. linux安装打印机服务,archlinux安装打印机
  2. 一道算法题——合并有交集的集合
  3. 国内人工智能实验室的用意
  4. Pyecharts画K线,成交量
  5. 125、新技术之微前端
  6. 运营四十二章经(四)---亚马逊与海淘
  7. 关于syGate代理端口冲突问题
  8. Web前端设计开发规范
  9. 在ArcGIS Pro中进行拓扑编辑和错误处理
  10. ios 实现谷歌地图