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集群。