Spring Cloud 系列之 Alibaba Nacos 注册中心(二)
本篇文章为系列文章,未读第一集的同学请猛戳这里: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:8848 为 leader。
通过服务列表可以看到服务已注册至 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:8848 为 leader。
通过服务列表可以看到服务已注册至 Nacos。
访问:http://localhost:9090/order/1 结果如下:
至此 Nacos 注册中心所有的知识点就讲解结束了。
本文采用 知识共享「署名-非商业性使用-禁止演绎 4.0 国际」许可协议。
大家可以通过 分类 查看更多关于 Spring Cloud 的文章。
Spring Cloud 系列之 Alibaba Nacos 注册中心(二)的更多相关文章
- Spring Cloud 系列之 Alibaba Nacos 注册中心(一)
前言 从本章节开始,我们学习 Spring Cloud Alibaba 相关微服务组件. Spring Cloud Alibaba 介绍 Spring Cloud Alibaba 致力于提供微服务开发 ...
- Spring Cloud 系列之 Alibaba Nacos 配置中心
Nacos 介绍 Nacos 是 Alibaba 公司推出的开源工具,用于实现分布式系统的服务发现与配置管理.英文全称 Dynamic Naming and Configuration Service ...
- Spring Cloud Eureka Server使用(注册中心)
一.Spring Cloud Eureka 基于Netflix Eureka做了二次封装 由两个组件组成 Eureka Server 注册中心, 供服务注册的服务器 Eureka Client 服务注 ...
- Spring Cloud 系列之 Gateway 服务网关(二)
本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Gateway 服务网关(一) 本篇文章讲解 Gateway 网关的多种路由规则.动态路由规则(配合服务发现的路由规则 ...
- Spring Cloud 系列之 Sleuth 链路追踪(二)
本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Sleuth 链路追踪(一) 本篇文章讲解 Sleuth 基于 Zipkin 存储链路追踪数据至 MySQL,Elas ...
- Spring Cloud 系列之 Stream 消息驱动(二)
本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Stream 消息驱动(一) 本篇文章讲解 Stream 如何实现消息分组和消息分区. 消息分组 如果有多个消息消费者 ...
- Spring Cloud Alibaba (nacos 注册中心搭建)
[nacos下载地址](https://github.com/alibaba/nacos/releases) ### 什么是 Nacos? - nacos主要起到俩个作用一个是注册中心,另外一个是配置 ...
- 微服务架构 | 3.2 Alibaba Nacos 注册中心
目录 前言 1. Nacos 基础知识 1.1 Nacos 命名方式 1.2 Nasoc 是什么 1.3 Nacos 的 4 个关键特性 1.4 Nacos 生态图 1.5 Nacos 架构图 1.6 ...
- Spring Cloud 系列之 Alibaba Sentinel 服务哨兵
前文中我们提到 Netflix 中多项开源产品已进入维护阶段,不再开发新的版本,就目前来看是没有什么问题的.但是从长远角度出发,我们还是需要考虑是否有可替代产品使用.比如本文中要介绍的 Alibaba ...
随机推荐
- 使用interllij IDEA 写第一个Java程序
安装interllij IDEA interllij IDEA简称IDEA,是最好用的Java集成开发环境.你只需要安装一个IDEA,就可以立马开始学习Java,不用再费心去配置Java环境. IDE ...
- 配置Universal Links
参考: https://www.cnblogs.com/GJ-ios/p/9583141.html https://blog.csdn.net/saw471/article/details/10106 ...
- LeetCode上的SQL练习
184. 部门工资最高的员工 SELECT D. NAME Department, E. NAME Employee, E.Salary FROM -- 内连接两张查询表 Employee E INN ...
- 想学spark但是没有集群也没有数据?没关系,我来教你白嫖一个!
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是spark专题的第六篇文章,这篇文章会介绍一个免费的spark平台,我们可以基于这个平台做一些学习实验. databricks 今天要 ...
- 【github技巧2】下载包加速
打开代下网站:https://g.widora.cn 直接输入 https开头的github地址 或需下载包地址的链接 获取链接 下载压缩包 备注:压缩包格式为tar,需要解压
- Git创建子分支,合并分支并提交到Gitee码云
Git合并分支后,需要将子分支提交到git仓库,这个时候就需要单独提交子分支,其步骤如下: 先创建子分支,并包含最新当前分支下的修改数据 git checkout -b sonBranch 将新分支内 ...
- 【Java8新特性】面试官问我:Java8中创建Stream流有哪几种方式?
写在前面 先说点题外话:不少读者工作几年后,仍然在使用Java7之前版本的方法,对于Java8版本的新特性,甚至是Java7的新特性几乎没有接触过.真心想对这些读者说:你真的需要了解下Java8甚至以 ...
- NOI2006 最大获利 洛谷P4174
洛谷题目传送门! 题目描述 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU 集团旗下的 CS&T 通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就 ...
- R语言入门一
一.数据分析相关概念 数据:是指对事物或对象各方面进行描述的符号,包括事物的基本属性.特征.性质.状态.相互关系等:比如描述人的数据有:身高.年龄.性别.兴趣.性格.婚姻状态等等. 分析:是指把事物或 ...
- Vue3.0+ElementUI打包之后,为什么部分页面按钮图标找不到
有的页面可以显示这个按钮,有的页面不可以,找了好久,看这都webpack路径问题,到但是我这个没有webpack,没有build文件夹,最后发现是因为没有绑定点击事件 加上这个之后就好了