Nacos,全称为阿里巴巴开源的“Dynamic Naming and Configuration Service”,即动态命名和配置服务。
它是一个集成了服务发现、配置管理和服务管理功能的平台,为微服务架构中的服务治理提供了全方位的支持。
一、环境准备
Nacos 依赖 Java 环境来运行,需要准备的环境如下:
1、操作系统:64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
2、JDK版本:64 bit JDK 1.8+;
3、Maven版本:Maven 3.2.x+;
二、下载与配置
2.1 安装包下载
在Github中下载Nacos安装包:https://github.com/alibaba/nacos/releases
本文所使用Nacos版本为2.3.0。
2.2 数据库切换
Nacos默认是使用嵌入式数据库derby,为了更方便观察和维护数据,改为使用MySQL作为Nacos的数据源。
首先新建nacos数据库。
执行sql脚本,脚本位置在conf文件夹下的mysql-schema.sql文件。
修改nacos在conf文件夹下的application.properties配置文件,将数据库连接改为自己的数据库配置。
三、部署方式
Nacos支持三种部署模式:
单机模式 - 用于测试和单机使用。
集群模式 - 用于生产环境,确保高可用。
多集群模式 - 用于多数据中心场景。
在部署过程中,需要注意的是无论将Nacos用作配置中心或者服务注册中心,Nacos都属于内网应用,不要将Nacos地址暴露到外网。
3.1 单节点部署
以单节点方式启动Nacos
sh startup.sh -m standalone
访问Nacos控制台:启动成功后,通过浏览器访问 http://localhost:8848/nacos/index.html。
关闭服务命令
sh shutdown.sh
3.2 集群部署方案
为了避免单点故障,保证Nacos的高可用性,推荐对Nacos做集群部署,下面内容均以三台Nacos节点组成的集群为例。
方案1: 直接通过访问具体某一台Nacos对应IP地址进行连接,如果这一台Nacos挂了,就要对连接的IP地址进行切换,显然不符合高可用的要求。
方案2: 将三台Nacos都绑定到同一个SLB上,SLB是阿里的一个负载均衡产品效果和vip+nginx类似,用于负载均衡和请求转发,SLB有独立的IP地址,在连接Nacos时,直接使用SLB的地址,但是IP地址的可读性并不好,也很难记忆。
方案3: 首先申请一个nacos相关的域名,如nacos.baidu.com这个二级域名,将二级域名绑定在SLB的IP地址上。
再将三个Nacos节点的IP和端口号绑定到SLB负载均衡上,当访问nacos.baidu.com时,可以均匀地将请求转发到Nacos的三个节点。
部署方案可以参考下图:
在实际生产部署中推荐,使用方案3进行部署。
3.3 集群部署流程
为了配置方便,接下来将在同一台机器上,通过不同端口号来启动三个Nacos节点,并通过一台Nginx来转发到三台Nacos节点来做负载均衡。
首先复制出三个Nacos文件夹。
三个节点连接到同一个MySQL数据库,修改application.properties配置文件。
修改Nacos1端口号为8811
修改Nacos2端口号为8822
修改Nacos3端口号为8833
在三个节点的在conf文件夹下,复制出一个cluster.conf文件。
cp cluster.conf.example cluster.conf
修改三个Nacos节点的cluster.conf文件,配置为刚刚三个节点设置的IP和端口号。
192.168.1.101:8811
192.168.1.101:8822
192.168.1.101:8833
执行命令启动集群的三个节点,并且该命令表示使用外部数据源启动集群。
sh startup.sh
3.4 Nacos集群验证
分别打开三个节点Nacos管理页面进行验证:
Nacos1
Nacos2
Nacos3
并且在集群管理-节点列表中可以看到三个Nacos节点。
下面在Nacos1的管理页面的public命名空间中,新建一个test.properties配置。
在nacos2和nacos3节点都可以看到响应配置。
至此Nacos集群就搭建完毕了。
3.5 Nginx负载均衡
为了使集群各个节点均匀分布请求,在Nginx的http配置下添加如下配置后,重新加载Nginx配置。
upstream nacos_service {
server 192.168.1.101:8811;
server 192.168.1.101:8822;
server 192.168.1.101:8833;
}
server {
listen 8848;
location / {
proxy_pass http://nacos_service;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 300s;
}
}
即可以通过http://192.168.1.101:8848/nacos/index.html对Nacos集群进行访问。
四、总结
本文介绍了Nacos的下载、配置、部署,并且着重介绍了在生产中最常用的集群部署方式,并且介绍了集群部署的几种方案。
以上部署方式无论是单机部署还是集群部署,在一台机器上均可以操作,为了能更好掌握本文内容,大家可以自己试着部署一个集群,并使用一下这个Nacos集群。
已有 0 条评论