【玩转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则自己创建)

cd /usr/local/software #进入对应目录
 
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

systemctl start mysqld #启动mysql服务

mysql -u 用户名 -p #连接到mysql,用户名即你所创建的用户名

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

CREATE DATABASE nacos_config; #创建一个数据库

SHOW DATABASES; #查看数据库列表

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

use nacos_config;  

source /usr/local/nacos/conf/nacos-mysql.sql;

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改成你自己的数据后添加在文件的末端

spring.datasource.platform=mysql


db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacostest?characterEncoding=utf8&serverTimezone=UTC&connectTimeout=10000&socketTimeout=30000&autoReconnect=true
db.user=root
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
注意:一定要使用三个文件夹进行启动,不能只使用一个文件夹,不然集群会启动失败!!博主就在这里卡了很久!!
mv nacos nacos01 #将nacos文件夹改名为nacos01

mkdir nacos #新建一个名为nacos的文件夹

mv nacos01 /usr/local/nacos  #将nacos01文件夹移动到nacos中

cp - r nacos01 /usr/local/nacos/nacos02 #将nacos01复制到nacos文件夹中并命名为nacos02

cp - r nacos01 /usr/local/nacos/nacos03 #将nacos01复制到nacos文件夹中并命名为nacos03

如下图所示即拷贝成功!

 

 

5.启动Nacos服务

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

nacos1/bin/startup.sh -p 8841         #启动端口号为8841的nacos服务

nacos2/bin/startup.sh -p 8842         #启动端口号为8842的nacos服务

nacos3/bin/startup.sh -p 8843         #启动端口号为8843的nacos服务

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

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

 

五、测试

 

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

mysql -u root -p   #连接数据库

use nacos_config;   #切换到nacos_config数据库

show tables;   #展示该数据下所有表

select * from config_info;  #查看config_info表下所有的数据

 

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

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

server:
  port: 9002

spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.154.140:1111 #配置Nacos地址

#配置使用Actuator其他端点(除了info和health)
management:
  endpoints:
    web:
      exposure:
        include: "*"

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

 

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

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


总结

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

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

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

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

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


  • 12
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啊陈晓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值