Nacos 在企业生产中如何使用集群环境?

点赞再看,养成习惯,微信搜索【牧小农】关注我获取更多资讯,风里雨里,小农等你,很高兴能够成为你的朋友。项目源码地址:公众号回复 nacos,即可免费获取源码
前言
由于在公司,注册中心和配置中心都是使用的 Nacos,因为前一段时间比较忙(木有划水时间),没有精力仔细去研究,时间就像海绵里的水,挤一挤总会是有的,出于对技术的好奇心,今天挤了一点时间,终于到了我 牧汉三 出马的时候。今儿个就说一说 Nacos 集群架构是如何搭配,以及在企业中是如何使用的。
Nacos 集群架构
在搭建 Nacos 集群之前,我们首先要了解一下 Nacos 的架构,工欲善其事必先利其器,磨刀不费砍材功,在上一节中,我们了解了 Nacos 基础功能,对 Nacos 的一些基本使用和配置,但是这些在实际工作过程中是远远不够的,我们还需要了解一个非常重要的点,就是对 Nacos 集群相关的操作,首先我们就要从 Nacos 的集群配置开始说起

,

2.1 Nacos 三种部署模式
单机模式:用于测试和单节点使用
集群模式:用于生产环境,确保高可用
多集群模式:用户多数据中心场景
2.2 参考文档
参考网站:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
部署手册:https://nacos.io/zh-cn/docs/deployment.html
下面我们来看一下 Nacos 的一个具体拆分架构图:

环境准备
对于 Nacos 而言,本身是存在内置的数据库 derby 实现配置持久化,但是为了查看和维护以及配置 nacos 集群方便我们需要将内置数据库配置成本地 MySQL 数据库,同时因为 Nacos 使用的嵌入式实现数据的存储,所以如果启动多个默认配置下的 Nacos 节点,数据存储会存在一致性的问题,为了解决这个问题,Naacos 采用了集中存储方式来支持集群化存储。<b>目前 nacos 仅支持 MySQL 数据库。</b>
3.1 准备工作
64 bit OS Linux/Unix/Mac,推荐使用 Linux 系统。
64 bit JDK 1.8+;
Maven 3.2.x+;
3 个或 3 个以上 Nacos 节点才能构成集群。
Nginx
MySql 5.6.5+
公众号后台回复:nacos 即可获取

在 Linxu 下安装 Nacos
我们需要 3 个或 3 个以上 Nacos 节点才能构成集群,同时也需要一个 Nginx 来模拟负载均衡。
安装包已备好,后台回复 nacos 即可

1. 解压 Nacos
tar -zxvf nacos-server-2.0.3.tar.gz
持久化配置
前面我们已经讲过了,Nacos 默认自带的嵌入式数据库 derby,当我们每次创建一个 Nacos 实例的时候就会有一个 derby,当我们想要搭建 Nacos 集群,出现多个 Nacos 节点的时候,就会出现一致性的问题,所以我们如果要搭建 Nacos 集群,首先要使用 Nacos 支持的外部统一数据管理 MYSQL。
参考官网:https://nacos.io/zh-cn/docs/deployment.html
这里建立的 Mysql 数据库,一定要 Linux 下 Nacos 的可以访问
我们需要找到 Nacos 安装目录下conf
目录下的SQL脚本
,然后在数据库中执行
1 创建数据库
2 执行脚本
找到 nacos 数据库脚本,在刚才创建的数据库中执行

执行成功,如下图所示:

3 修改配置
修改 conf/application.properties
文件,增加支持 MySQL 数据源配置
Nacos 集群配置
1. 修改 cluter.conf 文件
我们在正式开始配置集群之前,我们需要修改conf/cluter.conf
配置文件,在修改一个文件之前,先进行备份,这一步 Nacos 文件已经帮我们做了,如果没有手动复制一个备份文件
cp cluster.conf cluster.conf.example

在配置集群的时候,不能通过 127.0.0.1 来进行分配,服务器是不知道具体哪台机器,具体的 IP 地址,需要使用conf/cluter.conf
来指明对应的 IP 和端口
同时我们修改端口的时候,要有一定的偏移量,因为 Nacos2.0 本身新增了占用端口,在设置端口的时候要避开。


每行配置成 ip:port
ifconfig -a #查看具体 ip
在这里我的 IP 地址为:192.168.137.152
vi cluster.conf
在配置中添加我们需要使用的 IP 和 port
2.编辑启动脚本 startup.sh
修改这个脚本,是为了能够让我们在使用这个命令启动的时候传入对应的端口参数,这样携带具体端口号参数启动就能启动具体的 Nacos 节点,脚本目录为:nacos/bin/startup.sh
修改参数:


启动 Nacos
启动命令:
./startup.sh -o 8848
./startup.sh -o 8848
./startup.sh -o 8848
启动以后我们可以查看这个日志文件,是否启动成功

tail -f /usr/local/nacos/nacos/logs/start.out

启动完成之后,我们可以使用下面的命令来测试 Nacos 集群是否正常启动:
ps -ef|grep nacos|grep -v grep |wc -l
一般数量为 3,我这里是启动了三个日志查看,所以是 6

注意:我们在浏览器访问 Nacos 地址的时候,一定要把防火墙关闭
systemctl stop firewalld # 临时关闭
systemctl disable firewalld # 永久关闭
打开任意 IP 和端口下的路径,使用账号密码 nacos/nacos 登录成功后,在 集群管理>节点列表 中可以看到我们三个 nacos 服务,到这里 nacos 此时已经完成全部配置

nginx 负载均衡配置
整个文件中只需要使用到下面的配置即可:
下面没有使用 HTTP 请求进行转发,而是使用的 TCP 协议使用 nginx 请求时,需要配置成 TCP 转发,不能配置 http2 转发,否则连接会被 nginx 断开。
启动 nginx
cd /usr/local/nginx/sbin/ # 进入目录
./nginx #启动
在浏览器上输入网址,查看是否可以启动成功
http://192.168.137.152:81/nacos

添加配置

我们在 config_info
表中也看到了对应的添加记录

注册服务到 nacos 中
我们拿上一节中讲到的服务cloud-alibaba-nacos-9001
进行注册到 Nacos 集群中,如果成功,表示我们 Nacos 已经可以使用了
yml 配置:
启动成功后,我们在浏览器中就可以看到对应的服务注册到 nacos 了

总结
到这里,我们 Nacos 集群搭建就完成了,有不懂的小伙伴,再下方留言告诉我,小农看到了会第一时间回复,要注意的是,在 nginx 安装那里,可能会有一些包找不到,需要你自己去下载安装,上面都是小农自己一步一步搭建出来的,按照步骤来,是不会有问题的,如果觉得文中对你有帮助,记得点赞关注!
怕什么真理无穷,进一步有进一步的欢喜。大家加油~
版权声明: 本文为 InfoQ 作者【牧小农】的原创文章。
原文链接:【http://xie.infoq.cn/article/84b92ab7a6ad9c7883315706c】。文章转载请联系作者。
评论