• 【玩转Springcloud Alibaba系列】Nacos集成Nginx搭建高可用Nacos集群(超详细!!)


     🏠个人主页啊陈晓

    🎉学习方向:java后端开发

    🎁我的上一篇文章:【深入浅出Nginx系列】Nginx入门?看这一篇就够了(实战篇)

    💕如果我的文章对你有帮助,点赞、收藏、留言都是对我最大的动力

    【玩转Springcloud Alibaba系列】文章直通车~   

    【玩转Springcloud Alibaba系列】使用Nacos 实现服务注册与负载均衡

    未完待续.........


    现在让我们正式开启进入今天的正文 

    目录

    前言

    一、什么是Nacos集群?

    二、环境准备

    1.搭建环境介绍

    2.Linux环境下Nacos的安装

    3.配置数据库

    三、修改配置文件

    1.修改nacos中的配置文件application.properties

    2.修改集群配置cluster.conf 

     3.修改nacos的启动脚本

    4.复制nacos

    5.启动Nacos服务

    6.测试 

    四、配置Nginx

    五、测试

    总结


    前言

         在上一讲中,我们已经对Nacos的服务发现负载均衡的实现做出了详细的介绍,今天,我们在上一讲的基础上再进一步,使用Nacos集成 Nginx技术搭建架构更为复杂、可用性更高的Nacos集群。

    注意:

    在进行本文的学习前,读者需要对Nginx的基础知识微服务架构Nacos基础有一定的了解喔,不然本文学习起来可能会较为吃力。

    如果还未了解过这些知识的小伙伴可以移步我的主页,那里有着与Nacos的基础知识Nginx基础以及部分微服务架构相关的博客~欢迎大家前去观看~


     

    一、什么是Nacos集群?

    学习过Nacos基础的小伙伴都知道,Nacos支持三种部署模式:

    • 单机模式 - 用于测试和单机环境。
    • 集群模式 - 用于生产环境,确保高可用性。
    • 多集群模式 - 用于多数据中心场景。

    而在【玩转Springcloud Alibaba系列】的上一篇文章【玩转Springcloud Alibaba系列】使用Nacos 实现服务注册与负载均衡中,我已经对Nacos单机模式的部署做出了详细的介绍,而今天,我们要介绍的,就是在生产环境下用的更多的部署模式——集群模式

    首先,我们先来看看一张架构图,对比单机模式和集群模式的区别:

    Nacos部署模式:单机模式VS集群模式
    单机模式集群模式
    Nacos节点数量1个至少3个
    数据库DerbyMysql
    代理服务器Nginx集群

    在表格中我们可以看到,对比起单机模式,集群模式有着下面的优点:

    • 高可用性

    在学习微服务时,无论是Eureka的集群也好、zookeeper、consul的集群架构也罢,我们总会听到高可用性这个词,那究竟什么是高可用性呢?

    “高可用性”(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。这种操作在现在的集群系统中。

    人话:

    Nacos作为服务注册中心,起着服务发现、配置中心、负载均衡等的作用,在只有一台Nacos服务器在工作的时候,一旦这台服务器发生宕机,就会导致整个系统发生故障,造成数据的丢失。为了保证整个系统的可用性,于是我们增加了两台或更多的Nacos服务器,这样即使是部分Nacos服务器宕机,也不会影响到整个系统的使用,提高了整个系统的可用性。

    • 数据持久化&数据一致性

    在单机模式中,Nacos默认采用内嵌式数据库Derby来存储数据,这使得Nacos在数据环境下有以下缺点:

    • 一旦Nacos重启,所有数据都会丢失,数据无法进行持久化
    • 搭建集群时,会造成多台Nacos服务器各一台Derby数据库的情况,使得数据不同步

    所以在集群模式中,Nacos配置了Mysql,将数据放到可以统一共享的数据库中,保证了数据的一致性和持久化的问题

    • 集成了代理服务器技术

    在集群模式的架构图中,我们可以看到集群中集成了Nginx,Nginx作为一款出色的完成高并发任务的代理服务器,能够出色的完成下面这些场景的任务: 

    • 反向代理
    • 负载均衡
    • 动静分离

    这使得集群具备更强的高并发能力,能够承受更多的负载压力并被使用在更多场景之中,进一步提升了整个集群的高可用性。

     

    二、环境准备

    1.搭建环境介绍

    环境准备

    Linux环境
                                                JDK1.8及以上(Linux)

    Nginx环境(Linux)

    mysql 5.6.5+以上(Linux)
    Naocs环境(Linux)

          在配置Nacos集群前,我们需要上表所示的环境,如果还未安装的小伙伴可以自行在网上查找相对应的教程进行安装,在这里因为篇幅原因我们就只对Linux环境下Nacos的安装做出介绍。


    在这里我也为大家提供了相对应的安装包供大家使用

    链接:百度网盘

    提取码:acxy


     

    2.Linux环境下Nacos的安装

    安装Nacos需要具备jdk环境,输入下面命令检测jdk环境是否安装成功:

    java -version

    安装成功后如下所示:

    在这里插入图片描述

    进入到/usr/local/software 目录(如果没有 software则自己创建)

    1. cd /usr/local/software #进入对应目录
    2. mkdir software #如果目录不存在则在对应路径下创建文件夹

     将下载好的资源包上传到software文件夹中,也可以直接将文件拖进去。

     解压安装包

    tar -zxvf nacos-server-1.4.3.tar.gz

    将解压后的文件夹放到服务器/usr/local文件夹下 

    mv nacos /usr/local/
    

     

    3.配置数据库

    进入  /usr/local/nacos/conf 目录下,可以看到nacos-mysql.sql脚本,对其进行备份

    cp nacos-mysql.sql nacos-mysql.sql.bk #将数据库脚本文件进行备份
    

     连接到mysql

    1. systemctl start mysqld #启动mysql服务
    2. mysql -u 用户名 -p #连接到mysql,用户名即你所创建的用户名

     创建一个数据库nacos_config (名字必须为这个!!)

    1. CREATE DATABASE nacos_config; #创建一个数据库
    2. SHOW DATABASES; #查看数据库列表

     进入nacos_config数据库,执行脚本文件,查看执行后的表

    1. use nacos_config;
    2. source /usr/local/nacos/conf/nacos-mysql.sql;
    3. show tables;

    退出mysql 

    exit;

    三、修改配置文件

    1.修改nacos中的配置文件application.properties

    进入/usr/local/nacos/conf,可以看到application.properties文件,对其进行备份

    cp application.properties applicationbk.properties
    

    在这里配置Nacos服务的数据库 ,按下图所示修改完成后wq保存退出

    vi application.properties

    url、user、password改成你自己的数据后添加在文件的末端

    1. spring.datasource.platform=mysql
    2. db.num=1
    3. db.url.0=jdbc:mysql://127.0.0.1:3306/nacostest?characterEncoding=utf8&serverTimezone=UTC&connectTimeout=10000&socketTimeout=30000&autoReconnect=true
    4. db.user=root
    5. db.password=520141Cx..

     

    2.修改集群配置cluster.conf 

    确定三台服务器的端口号:

    3台nacos服务器的不同服务端口号
    192.168.154.140:8841
    192.168.154.140:8842
    192.168.154.140:8843

    进入/usr/local/nacos/conf,可以看到cluster.conf.example文件,将其复制成cluster.conf  (这里也要注意,必须是cluster.conf,否则nacos无法识别)

    cp cluster.conf.example cluster.conf
    

     对cluster.conf进行修改,在编辑模式下配置三台nacos服务器的地址后wq退出

    vi cluster.conf

     3.修改nacos的启动脚本

    进入/usr/local/nacos/bin,可以看到startup.sh,同样对其进行备份

    cp startup.sh startup.sh.bk
    

    编辑脚本文件,使其能够根据端口号运行对应的nacos服务器

    编辑处如下图所示后wq退出:

    vi startup.sh

    4.复制nacos

    启动Nacos集群必须使用三个文件夹分别进行启动,所以我们对拷贝出份nacos文件夹,分别为:

    • nacos01
    • nacos02
    • nacos01
    注意:一定要使用三个文件夹进行启动,不能只使用一个文件夹,不然集群会启动失败!!博主就在这里卡了很久!!
    1. mv nacos nacos01 #将nacos文件夹改名为nacos01
    2. mkdir nacos #新建一个名为nacos的文件夹
    3. mv nacos01 /usr/local/nacos #将nacos01文件夹移动到nacos中
    4. cp - r nacos01 /usr/local/nacos/nacos02 #将nacos01复制到nacos文件夹中并命名为nacos02
    5. cp - r nacos01 /usr/local/nacos/nacos03 #将nacos01复制到nacos文件夹中并命名为nacos03

    如下图所示即拷贝成功!

     

     

    5.启动Nacos服务

    进入/usr/local/nacos/目录,输入下面命令依次启动nacos服务,并查看启动的nacos数目:

    1. nacos1/bin/startup.sh -p 8841 #启动端口号为8841的nacos服务
    2. nacos2/bin/startup.sh -p 8842 #启动端口号为8842的nacos服务
    3. nacos3/bin/startup.sh -p 8843 #启动端口号为8843的nacos服务
    4. ps -ef|grep nacos|grep -v grep|wc -l #查看当前启动的nacos服务的个数

    注意:在这里有小伙伴可能会发现,我明明启动了三个服务器,但是查看的时候却只有一个,对此情况的解决方案是:

    1. 关闭当前虚拟机
    2. 进入虚拟机设置页面
    3. 适量增加虚拟机的内存
    4. 重启

     

     重启完成后,再次启动nacos服务,会发现此时启动多少个服务就显示多少个服务器:

     

     

    6.测试 

    启动nacos后,将IP地址换成你自己的,访问下面的链接:

    http://192.168.154.140:8843/nacos/index.html

    http://192.168.154.140:8842/nacos/index.html

    http://192.168.154.140:8841/nacos/index.html

    若结果如下图所示即证明nacos启动成功。

    四、配置Nginx

    进入/usr/lcoal/nginx/conf中,修改nginx.conf文件,如下图所示在对应位置进行修改,修改完成后wq保存退出。

     进入Nginx下的sbin目录,启动Nginx:

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

    进行测试:

    访问:http://192.168.154.140:1111/nacos/index.html

    如下图所示即配置成功

    输入账号和密码:

    账号:nacos

    密码:nacos

    登陆后查看集群配置中的节点列表,结果如下图所示即搭建成功!

     

    五、测试

     

     访问我们所设置数据库中的表,可以查看到对应的配置信息则成功

    1. mysql -u root -p #连接数据库
    2. use nacos_config; #切换到nacos_config数据库
    3. show tables; #展示该数据下所有表
    4. select * from config_info; #查看config_info表下所有的数据

     

     将微服务cloudalibaba-provider-payment9002注册进Nacos中

    修改yaml文件中的nacos地址如下:

    1. server:
    2. port: 9002
    3. spring:
    4. application:
    5. name: nacos-payment-provider
    6. cloud:
    7. nacos:
    8. discovery:
    9. server-addr: 192.168.154.140:1111 #配置Nacos地址
    10. #配置使用Actuator其他端点(除了info和health)
    11. management:
    12. endpoints:
    13. web:
    14. exposure:
    15. include: "*"

    启动服务,访问http://192.168.154.140:1111/

     

    若可以看到nacos集群中出现nacos-payment-provider,则证明服务注册成功

    至此,基于Nacos集成Nginx搭建高可用Nacos集群成功!!


    总结

           相对博主学过的其他集群搭建来说,Nacos高可用的集群的搭建还是比较复杂的,博主也是踩了很多坑才把集群搭建成功,长期处于下图的这种状态。

          总的来说,在搭建的过程中还是要细心一些,尽量避免一些不必要的错误。还有一点,就是看日志!!看日志!!看日志!!,重要的事情说三遍,不要一出现错误就盲目上网找!先了解到底是什么错误导致的失败再上网查找解决方案,这样才能锻炼到你的能力,少踩一些坑!!

          最后的最后,祝大家都能顺利搭建成功!!

    至此,我们今天的教程就到此结束啦~

    感谢您的阅读,希望我的文章能给你带来帮助!!!


  • 相关阅读:
    Leetcode 504.七进制数
    python/php/java/nodejs网上租车vue+elementui汽车租赁系统
    【场外衍生品系列】雪球结构定价研究
    maple中,如果一个函数的表达式有两个中含有rootof和_z要怎么画出他的图像呢?
    一款基于.NET Core的快速开发框架、支持多种前端UI、内置代码生成器
    基于GIS的生态安全网络格局构建(附练习数据下载)
    买房需要了解的一些事
    网络安全(黑客)自学
    【音视频流媒体】WebRTC 直播超详细介绍
    【DETR】
  • 原文地址:https://blog.csdn.net/weixin_47025166/article/details/126076999