微服务架构系列之Nacos集群搭建

楚江王
• 阅读 269

上回我们说到了《微服务架构系列之Nacos 配置核心概念》,这次我们讲讲Nacos 集群环境搭建。

集群模式跟我们平时进行扩容是一样的,可以通过 Nginx 转发到多个节点,如下图:
微服务架构系列之Nacos集群搭建

如果为了方便省事,可以使用直连 ip 模式,配置中按如下编写即可:

spring:
  # 配置 Nacos 配置中心
  cloud:
    nacos:
      config:
        enabled: true # 如果不想使用 Nacos 进行配置管理,设置为 false 即可
        server-addr: 192.168.10.101:8848,192.168.10.102:8848,192.168.10.103:8848 # Nacos 服务器地址

PS:如果只是为了学习的话直接在本地启动 3 个实例,通过修改端口的方式即可。本文使用三台服务器的方式带大家搭建环境,其实这种方式反而更简单。

一、环境准备

Nacos 单节点,也就是我们刚才使用的 standalone 模式,默认使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况,0.7 版本以后增加了支持 MySQL 数据源能力。集群搭建的时候我们需要将 Nacos 对接 Mysql 进行数据存储。如果要搭建高可用的集群环境,至少要满足以下条件:

  • JDK 1.8+;
  • Maven 3.2.x+;
  • MySQL 5.6.5+(生产使用建议至少主备模式,或者采用高可用数据库);
  • 3个或3个以上Nacos节点才能构成集群。

二、下载源码或者安装包

可以通过源码和发行包两种方式来获取 Nacos。

1、源码方式
从 Github 上下载源码方式。

git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U  
ls -al distribution/target/

// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin

2、发行包方式
您可以从 https://github.com/alibaba/na... 下载最新稳定版本的 nacos-server 包。

三、配置集群配置文件

将安装包解压。

tar -zxvf nacos-server-1.3.0.tar.gz -C /usr/local/ # 解压文件至 local 目录
在 Nacos 的解压目录 nacos/conf 目录下,复制配置文件 cluster.conf.example 并重命名为 cluster.conf,每行配置成 ip:port。(请配置3个或3个以上节点)

192.168.10.101:8848
192.168.10.102:8848
192.168.10.103:8848

四、配置 MySQL 数据库

Nacos 在0.7版本之前,默认使用的是嵌入式数据库Apache Derby来存储数据(内嵌的数据库会随着 Nacos 一起启动,无需额外安装);0.7版本及以后,增加了对MySQL数据源的支持。

五、MySQL数据源

环境要求:MySQL 5.6.5+(生产使用建议至少主备模式,或者采用高可用数据库);

1、初始化 MySQL 数据库

创建数据库 nacos_config。

SQL源文件地址:https://github.com/alibaba/na... ,或者在 nacos-server 解压目录 conf 下,找到 nacos-mysql.sql 文件,运行该文件,结果如下:
微服务架构系列之Nacos集群搭建

2、application.properties 配置
修改 nacos/conf/application.properties 文件的以下内容。
微服务架构系列之Nacos集群搭建

最终修改结果如下:

#*************** Config Module Related Configurations ***************#
### If user MySQL as datasource:
# 指定数据源为 MySQL
spring.datasource.platform=mysql

### Count of DB:
# 数据库实例数量
db.num=1

# 数据库连接信息,如果是 MySQL 8.0+ 版本需要添加 serverTimezone=Asia/Shanghai
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=Asia/Shanghai
db.user=root
db.password=1234

❝如果你和我一样使用的是 MySQL 8.0+ 版本,那么启动 Nacos 时肯定会报错。莫慌,在 Nacos 安装目录下新建 plugins/mysql 文件夹,并放入 8.0+ 版本的 mysql-connector-java-8.0.xx.jar,重启 Nacos 即可,启动时会提示更换了 MySQL 的 driver-class 类。
微服务架构系列之Nacos集群搭建

六、启动服务器

Linux/Unix/Mac
在 Nacos 的解压目录 nacos/bin 目录下启动。

启动命令(在没有参数模式,是集群模式):

sh startup.sh

七、查看启动记录

可通过 /nacos/logs/nacos.log(详细日志)或 /nacos/conf/start.out(启动记录)的输出内容查看是否启动成功。

查看命令:

tail -f /usr/local/nacos/logs/start.out
启动成功输出结果:

2020-04-29 22:47:56,204 INFO Nacos is starting...

2020-04-29 22:47:56,556 INFO Nacos logs files: /usr/local/nacos/logs/

2020-04-29 22:47:56,556 INFO Nacos conf files: /usr/local/nacos/conf/

2020-04-29 22:47:56,556 INFO Nacos data files: /usr/local/nacos/data/

2020-04-29 22:47:56,556 INFO Nacos started successfully in cluster mode.

八、访问

访问以下链接,默认用户名/密码是 nacos/nacos :

http://192.168.10.101:8848/nacos/
http://192.168.10.102:8848/nacos/
http://192.168.10.103:8848/nacos/
微服务架构系列之Nacos集群搭建

从下图可以看到集群节点共有三个,其中 192.168.10.101:8848 为 leader。
微服务架构系列之Nacos集群搭建

九、关闭服务器

Linux/Unix/Mac

sh shutdown.sh

十、测试

1、直连 ip 模式

发布配置

选择 配置管理 的 配置列表 页面,点击最右侧 + 按钮新建配置。

Data ID: product-service.yaml
Group: DEFAULT_GROUP
Configuration format: YAML
Configuration content: project.name: SpringCloudAlibaba
                       project.org: Aliababa

获取配置

bootstrap.yml

server:
  port: 7070 # 端口

spring:
  application:
    name: product-service # 应用名称
  cloud:
    nacos:
      config:
        enabled: true # 如果不想使用 Nacos 进行配置管理,设置为 false 即可
        server-addr: 192.168.10.101:8848,192.168.10.102:8848,192.168.10.103:8848 # Nacos 服务器地址,集群版直连 ip 模式
        group: DEFAULT_GROUP # 组,默认为 DEFAULT_GROUP
        file-extension: yaml # 配置内容的数据格式,默认为 properties

使用之前的控制层代码,访问:http://localhost:7070/config 结果如下:

微服务架构系列之Nacos集群搭建

2、Nginx 转发
再启动一台服务器 192.168.10.100,安装 Nginx,配置代理转发规则。

upstream nacos {
    server 192.168.10.101:8848;
    server 192.168.10.102:8848;
    server 192.168.10.103:8848;
}

微服务架构系列之Nacos集群搭建

3、获取配置
bootstrap.yml

server:
  port: 7070 # 端口

spring:
  application:
    name: product-service # 应用名称
  cloud:
    nacos:
      config:
        enabled: true # 如果不想使用 Nacos 进行配置管理,设置为 false 即可
        server-addr: 192.168.10.100:80 # Nacos 服务器地址,集群版 Nginx 转发
        group: DEFAULT_GROUP # 组,默认为 DEFAULT_GROUP
        file-extension: yaml # 配置内容的数据格式,默认为 properties

使用之前的控制层代码,访问:http://localhost:7070/config 结果如下:
微服务架构系列之Nacos集群搭建

至此 Nacos 配置中心所有的知识点就讲解结束了,作者为 哈喽沃德先生,感谢关注 哈喽沃德先生公众号。获取微服务架构视频教程,请点:spring全家桶微服务架构

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
3年前
RAC环境单实例启动数据库收到ORA
     在RAC环境中,如果你在没有启动节点的集群服务的情况下单实例启动数据库,将收到类似如下的报错:\oracle@rhel1u01\$sqlSQL\Plus:Release10.2.0.5.0ProductiononTueApr215:00:272013Copyright(
Stella981 Stella981
3年前
Nacos配置中心动态获取数组配置
有的时候我们需要动态获取一系列的配置项,假设我们在nacos配置中心的配置如下,nacos配置中心的其他设置请参考Nacos搭建流程(https://my.oschina.net/u/3768341/blog/3138297)skill:name:爆炸冲刺在SpringCloud代
Stella981 Stella981
3年前
Spring Cloud Alibaba系列之Nacos服务注册与发现
SpringCloudAlibaba系列之Nacos服务注册与发现1、前言简介服务注册与发现是微服务架构体系中最关键的组件之一。SpringCloudAlibabaNacosDiscovery组件提供了服务自动注册到Nacos服务端的功能,并且能够动态感知和刷新某个服务实例的服务列表。除此之外,NacosDiscove
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Wesley13 Wesley13
3年前
mysql查询每个学生的各科成绩,以及总分和平均分
今天看一个mysql教程,看到一个例子,感觉里面的解决方案不是很合理。问题如下:有学生表:!在这里插入图片描述(https://oscimg.oschina.net/oscnet/07b001b0c6cb7e0038a9299e768fc00a0d3.png)成绩表:!在这里插入图片描述(https://oscimg.o