Spring Cloud Alibaba Nacos集群和持久化配置

一、简介

前面我们已经使用Nacos作为我们的服务注册中心和服务配置中心,但都是单机版的,在实际生产环境中,服务不可能单机部署,如果Nacos突然发生宕机现象,那么带来的后果可想而知,所以在学习的时候采用单机模式还是可以的,上线后必须采用集群模式搭建Nacos,保证其高可用。本篇文章将详细介绍如何搭建一个三个节点组成的Nacos集群。

官网地址:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html

  • 集群部署架构图

http://ip1:port/openAPI 直连ip模式,机器挂则需要修改ip才可以使用。

http://VIP:port/openAPI 挂载VIP模式,直连vip即可,下面挂server真实ip,可读性不好。

http://nacos.com:port/openAPI 域名 + VIP模式,可读性好,而且换ip方便,推荐模式。

deployDnsVipMode.jpg

 简单理解,其实VIP扮演的角色就是Nginx,所有的请求都先到VIP层,然后由它来完成分发到下面的某个Nacos实例。

默认Nacos使用嵌入式数据库实现数据存储。所以,如果使用多个默认配置下的Nacos节点,数据存储一致性存在问题。为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只支持MySQL的存储

  • Nacos支持的三种部署模式
  1. 单机模式:用于测试和单机使用;
  2. 集群模式:用户生产环境,确保高可用;
  3. 多集群模式:用于多数据中心场景;

二、Nacos集群和持久化搭建

其实细心的小伙伴都会发现,就算我们没有进行持久化到Mysql之前,如果我们重启或者重新登录Nacos,我们都能看到之前添加的配置文件都还在,这其中的原因就是Nacos自带了一个嵌入式的数据库derby,它帮助我们将配置信息持久化到内存。

本篇文章主要搭建

1个Nginx + 3个Nacos + 1个MySQL(实际应该是MySQL集群,至少为一主一从)

为了减少端口的开放步骤,我提前将防火墙关闭。大体的架构图如下所示:

【a】预备环境准备

请确保是在环境中安装使用:

  1. 64 bit OS Linux/Unix/Mac,推荐使用Linux系统;
  2. 64 bit JDK 1.8+;下载.配置
  3. Maven 3.2.x+;下载.配置
  4. 3个或3个以上Nacos节点才能构成集群;
  5. 安装Mysql数据库,版本在5.6.5以上; 
  6. 安装Nginx服务器;

【b】Linux中安装Nacos

(1). 在官网https://github.com/alibaba/nacos/tags下载Linux版的安装包

(2).将安装包上传到Linux虚拟机中的/usr/local路径下

(3). 解压缩nacos压缩包

tar -zxvf nacos-server-1.2.0.tar.gz

解压缩完后会有一个nacos文件夹。 

(4). 进入nacos目录

如果能看到类似目录结构,说明nacos在Linux环境下安装成功。

【c】初始化mysql数据库,数据库初始化文件nacos-mysql.sql

SQL语句源文件地址

Nacos官网已经提供了持久化所用到的表结构的SQL,我们只需要复制出来,直接执行即可。

(1).创建名称为"nacos_config"的数据库,注意名称一定要是"nacos_config".

(2). 执行SQL初始化脚本

执行完后,会帮我们自动创建11张用于nacos持久化相关的数据表。 

【d】修改conf/application.properties文件,增加mysql数据源配置,添加mysql数据源url、用户名和密码

vim application.properties

 指定mysql的数据源、用户名等信息:

经过上面的配置后,就代表后续我们新建的各种配置列表都会存入你设定的mysql数据库中,而不是存入自带的derby。

【e】配置集群配置文件cluster.conf

在nacos的解压目录nacos/的conf目录下,有配置文件cluster.conf,请每行配置成ip:port。(请配置3个或3个以上节点)

cp cluster.conf.example cluster.conf
vim cluster.conf

梳理出3台nacos集群的不同服务端口号:3333,4444,5555。复制cluster.conf,并配置:

#it is ip
# ip:port
192.168.6.19:3333
192.168.6.19:4444
192.168.6.19:5555

注意:IP不能写127.0.0.1,必须是Linux命令hostname -i 能够识别的IP。

【f】编辑Nacos的启动脚本startup.sh,使它能够接受不同的启动端口

集群启动,我们希望可以类似其他软件的shell命令,传递不同的端口号启动不同的nacos实例。

例如:./startup.sh -p 3333表示启动端口号3333的nacos服务实例。

vim startup.sh

 

【g】 配置Nginx,由它作为负载均衡

修改nginx.conf,具体如下图所示:

 

upstream cluster{
        server 127.0.0.1:3333;
        server 127.0.0.1:4444;
        server 127.0.0.1:5555;
   }

   server{
        listen  1111;
        server_name     localhost;

        location  / {
                proxy_pass http://cluster;
        }
   }

【h】启动nginx

 cd sbin/
./nginx -c /usr/local/nginx/conf/nginx.conf

【i】启动3个nocos

注意:启动nacos之前需要Linux安装好jdk 1.8环境。可以参照: https://blog.csdn.net/pang_ping/article/details/80570011

cd /usr/local/nacos/bin/
./startup.sh -p 3333
./startup.sh -p 4444
./startup.sh -p 5555

启动完成后,浏览器访问:http://localhost:1111/nacos/

可见,如果看到上图所示界面,说明我们的nacos搭建成功。

【j】nacos新建配置

【k】mysql数据库查看是否持久化配置信息

可以看到,nacos已经成功帮我们持久化配置信息,到这里,Nacos的集群搭建就完成了!我们可以通过Nginx配置的代理地址:http://localhost:1111/nacos/ 来访问Nacos,在SpringCloud Alibaba应用中也可以用这个地址来作为注册中心和配置中心的访问地址来配置。

三、总结

本篇文章主要总结了有关nacos搭建集群的详细步骤,在生产环境,一般都是nacos集群部署,再加上mysql主从复制架构,确保单个机器宕机时,不会影响其他服务的正常使用。由于笔者水平有限,如有不对之处,还请小伙伴们指正,相互学习,一起进步。

参考资料:

https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html

https://www.cnblogs.com/H2deNote/p/12694122.html

https://www.cnblogs.com/h--d/p/12926803.html

https://www.sohu.com/a/358000390_120342270

下面是笔者总结的关于Spring Cloud Alibaba教程系列文章目录,有需要的小伙伴可以前往学习:

1. Spring Cloud Alibaba入门简介

2. Spring Cloud Alibaba Nacos之服务注册中心

3. Spring Cloud Alibaba Nacos之服务配置中心

4. Spring Cloud Alibaba Nacos集群和持久化配置

5. Spring Cloud Alibaba Sentinel之入门篇

6. Spring Cloud Alibaba Sentinel之流控规则篇

7. Spring Cloud Alibaba Sentinel之服务降级篇

8. Spring Cloud Alibaba Sentinel之热点参数限流篇

9. Spring Cloud Alibaba @SentinelResource配置详解

10. Spring Cloud Alibaba Sentinel之服务熔断篇

11. Spring Cloud Alibaba Sentinel之持久化篇

12. Spring Cloud Alibaba Seata处理分布式事务及案例实战

13. Spring Cloud Alibaba Seata工作原理

已标记关键词 清除标记
本课程总计13大章节,115课时,是一门全面的SpringCloud微服务体系化课程。课程共包括十三个大章节,涵盖注册中心、网关、熔断、降级、监控、安全、限流等全部体系。包含阿里巴巴Nacos,Consul,Spring Cloud Gateway,OAuth2.0 JWT 等主流技术。     [为什么要学习Spring Cloud微服务] SpringCloud作为主流微服务框架,已成为各互联网公司的首选框架,国内外企业占有率持续攀升,是Java工程师的必备技能。就连大名鼎鼎的阿里巴巴dubbo也正式更名为Spring Cloud Alibaba,成为了Spring Cloud 微服务中的一个子模块。Spring Cloud是企业架构转型、个人能力提升、架构师进阶的不二选择。     【推荐你学习这门课的理由:知识体系完整+丰富学习资料】   1、本课程总计13大章节,115课时,是一门全面的SpringCloud微服务体系化课程。 2、课程0基础入门,逐层递进深入,理论和代码相结合。 3、十三个大章节,涵盖注册中心、网关、熔断、降级、监控、安全、限流等全部体系。 4、包含阿里巴巴Nacos,Consul,Spring Cloud Gateway,OAuth2.0 JWT 主流技术。 5、课程附带230页高清PDF正版课件、Hoxton版本配套项目源码37个、Edgware版本配套项目26个,所有代码均有详细注释。     【主讲讲师】 尹洪亮Kevin: 现任职某互联网公司首席架构师,负责系统架构、项目群管理、产品研发工作。 10余年软件行业经验,具有数百个线上项目实战经验。 擅长JAVA技术栈、高并发高可用伸缩式微服务架构、DevOps。 主导研发的蜂巢微服务架构已经成功支撑数百个微服务稳定运行     【学完后我将达到什么水平?】 1、 对Spring Cloud的各个组件能够熟练配置、开发、部署。 2、 吊打一切关于Spring Cloud微服务的笔试面试题 3、 能够上手搭建十分完整的微服务分布式系统,涵盖服务注册与发现、负载、网关、配置中心、监控、安全、熔断等。 4、 对整个微服务体系架构有十分清晰准确的掌握。   【面向人群】 1、 不了解微服务是什么,感觉微服务很难、不敢学,网上资料松散,没有好的学习资料 2、 这么多年还一直在写SSH、SSM项目,没有更新过自己的知识体系。 3、 Spring Cloud组件太多,不知道应该重点关注和学习哪些。 4、 不会搭建微服务项目、依赖项目太多、完全搞不清楚。   【课程知识体系图】
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值