Nacos 极简入门

48 篇文章 4 订阅
31 篇文章 3 订阅

1. 概述

Nacos 是什么?其官方文档自我介绍如下:

FROM https://nacos.io/zh-cn/docs/what-is-nacos.html

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

看起来介绍看起来有点高大上,嘿嘿。Nacos 是 Dynamic Naming and Configuration Service 的缩写,动态命名和配置服务。正如其名,Nacos 是阿里开源的注册中心 + 配置中心服务。

目前,Nacos 对 Spring、Spring Boot、Spring Cloud、Dubbo 提供了非常好的支持,已经有蛮多大型互联网公司正在使用

下面,我们先来一起对 Nacos 进行快速入门,美滋滋。

2. 单机部署(最简模式)

本小节,我们来最小化部署一个 Nacos 服务,适合演示学习之用。

① 下载 Nacos

在 https://github.com/alibaba/nacos/releases 中,我们可下载 Nacos 的安装包。

  • Windows 下载 .zip 包。
  • Linux / Unix / Mac 下载 .tar.gz 包。

后面,进行解压。

② 启动 Nacos

在命令行中,可以输入如下命令启动:

  • Windows 启动命令:cmd startup.cmd 。
  • Linux / Unix / Mac 启动命令:sh startup.sh -m standalone 。

如下,是艿艿使用 Mac 启动成功的日志:

2019-02-17 11:50:37,169 INFO Nacos started successfully in stand alone mode.

2019-02-17 11:50:40,993 INFO Initializing Servlet 'dispatcherServlet'

2019-02-17 11:50:41,003 INFO Completed initialization in 10 ms

③ 管理界面

浏览器中,打开 http://127.0.0.1:8848/nacos ,进行登录:

  • 账号:nacos
  • 密码:nacos

登录成功后,我们可以看到如下界面:管理界面

  • 😈 还是蛮好看的。

3. 单机部署(基于 MySQL 数据库)

操作系统:macOS 10.14

其它系统,基本一致的。

本小节,我们来单机部署一个 Nacos 服务,适合测试环境。如下图所示:Nacos 单机部署

3.1 MySQL 安装

相信大家都会,艿艿就不瞎哔哔了。嘿嘿~

3.2 Nacos 安装

① 下载 Nacos

打开 Nacos 下载页面,选择想要的 Nacos 版本。这里,我们选择 1.1.4 最新版本。

# 创建目录
$ mkdir -p /Users/yunai/Nacos
$ cd /Users/yunai/Nacos

# 下载
$ wget https://github.com/alibaba/nacos/releases/download/1.1.4/nacos-server-1.1.4.tar.gz

# 解压
$ tar -zxvf nacos-server-1.1.4.tar.gz
$ cd nacos

# 查看目录
$ ls -ls
40 -rw-r--r--@ 1 yunai  staff  17336 Oct 11 14:09  LICENSE
 8 -rw-r--r--@ 1 yunai  staff   1305 Oct 11 14:09 NOTICE
 0 drwxr-xr-x  6 yunai  staff    192 Jan 20 22:26 bin # 执行脚本
 0 drwxr-xr-x@ 8 yunai  staff    256 Nov  4 10:26 conf # 配置文件
 0 drwxr-xr-x  3 yunai  staff     96 Jan 20 22:26 target # jar 包(目前仅有 nacos-server.jar)

② 初始化数据库

在 conf 目录下,提供了 MySQL 数据库初始化脚本 nacos-mysql.sql

我们可以根据自己的需要,创建一个库。例如说,艿艿这里创建一个 nacos-example 库。然后,使用该脚本进行数据库的初始化。最终表结构,如下图所示:Nacos 表结构

③ 配置数据库连接

修改 conf/application.properties 配置文件,在尾部额外增加 MySQL 数据库配置如下:

# 数据源为 MySQL
spring.datasource.platform=mysql

# 数据源的数量。因为这里我们只配置一个数据源,所以设置为 1。
db.num=1
# 第 0 个数据源的配置
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos-example?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
# 数据库的账号密码
db.user=root
db.password=

④ MySQL8 的支持

如果胖友使用的 MySQL 是 8.X 版本,则需要看该步骤。否则,可以直接跳过。

默认情况下,Nacos 连接 MySQL 5.6.5+ 版本,所以使用的 MySQL JDBC 驱动。如果胖友和艿艿一样,准备使用 MySQL 8.X 版本,则需要下载对应的新版本的 JDBC 驱动。Nacos 提供插件机制,允许我们无需修改源码,直接可以支持,美滋滋,操作步骤如下:

# 创建插件目录
$ mkdir -p plugins/mysql

# 下载 MySQL 8.X JDBC 驱动
$ cd plugins/mysql
$ wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.19/mysql-connector-java-8.0.19.jar

⑤ 启动 Nacos 服务

执行 sh bin/startup.sh -m standalone 命令,启动 Nacos 服务。其中,-m standalone 表示单机模式。

启动完成后,可以在 logs/start.out 日志文件中,查看启动日志。如果看到如下内容,说明启动是成功的。

2020-01-20 23:34:08,358 INFO Nacos started successfully in stand alone mode.

2020-01-20 23:34:09,695 INFO Initializing Servlet 'dispatcherServlet'

2020-01-20 23:34:09,706 INFO Completed initialization in 11 ms

默认配置下,Nacos 服务使用 8848 端口。😈 嘿嘿,8848 的含义,胖友是否知道。

⑥ 访问 UI 界面

Nacos 服务,内置了 UI 界面。使用浏览器中,打开 http://127.0.0.1:8848/nacos 地址,使用默认的用户「nacos/nacos」进行登陆。

友情提示:生产环境下,一定要记得修改默认的用户的密码噢。

登录成功后,我们可以看到如下界面:管理界面

界面还是蛮好看的,采用的是 @alifd/next 前端 UI 框架。

4. 集群部署

友情提示:本小节的内容,在「3. 单机部署(基于 MySQL 数据库)」小节之上,不要跳过过来看噢。

在生产环境下,我们需要搭建 Nacos 集群,确保高可用。所以本小节,我们来搭建单机部署一个 Nacos 服务。如下图所示:Nacos 集群部署

  • 一共是 Nginx、Nacos、MySQL 三层,每一层都需要做高可用。

4.1 MySQL 安装

搭建 MySQL 集群,保证 MySQL 高可用。具体的方案,可见《MySQL 高可用方案选型参考》。如果使用阿里云的话,可以考虑直接使用 RDS 服务,减少运维成本。

考虑到让示例更简单一些,艿艿这里暂时只使用 MySQL 单节点。

4.2 Nacos 安装

我们在本地搭建 3 个 Nacos 服务,实现 Nacos 高可用。因为 Nacos 服务之间通过 Raft 算法 保证一致性,所以我们建议 Nacos 部署的节点数为大于 3 的奇数。

① 复制 nacos 文件

「2. 单机部署」 的 nacos 文件,复制 nacos-01nacos-02nacos-03 三个文件夹,用于搭建三个 Nacos 节点。操作命令如下:

# 复制
$ cp -r nacos nacos-01
$ cp -r nacos nacos-02
$ cp -r nacos nacos-03

# 查看目录
$ ls -ls
     0 drwxr-xr-x  11 yunai  staff       352 Jan 20 23:33 nacos
     0 drwxr-xr-x  11 yunai  staff       352 Jan 21 09:22 nacos-01
     0 drwxr-xr-x  11 yunai  staff       352 Jan 21 09:22 nacos-02
     0 drwxr-xr-x  11 yunai  staff       352 Jan 21 09:22 nacos-03
102408 -rw-r--r--@  1 yunai  staff  52115827 Jan 20 21:58 nacos-server-1.1.4.tar.gz

② 初始化数据库

继续使用「2.2 单机部署」初始化好的数据库 nacos-example

③ 配置数据库连接

对 nacos-01nacos-02nacos-03 三个文件夹,修改 conf/application.properties 配置文件,在尾部额外增加 MySQL 数据库配置如下:

# 数据源为 MySQL
spring.datasource.platform=mysql

# 数据源的数量。因为这里我们只配置一个数据源,所以设置为 1。
db.num=1
# 第 0 个数据源的配置
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos-example?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
# 数据库的账号密码
db.user=root
db.password=
  • 如果使用 MySQL 集群,可以修改 db.num 为 MySQL 节点数量,然后在 db.url.1db.url.2 不断往下配置。

④ 配置服务器地址

因为我们是在本机启动三个 Nacos 服务,所以需要修改其端口,保证能够启动。在 conf/application.properties 配置文件,修改 server.port 配置项,可以修改 Nacos 服务器端口。这里我们分别修改如下:

  • nacos-01 对应 18848 端口。
  • nacos-02 对应 28848 端口。
  • nacos-03 对应 38848 端口。

⑤ 配置 Nacos 集群

在 nacos-01nacos-02nacos-03 三个文件夹中,创建 conf/cluster.conf 配置文件,配置一个 Nacos 集群的所有节点。具体内容如下:

# ip:port
192.168.3.44:18848
192.168.3.44:28848
192.168.3.44:38848
  • 每一行为 Nacos 节点的服务器地址,格式为 ip:port
  • 注意,不要使用 127.0.0.1 这个 IP 地址,因为 Nacos 获取的是外部 IP。因此,艿艿这里使用的是 192.168.3.44

通过该配置文件,每个 Nacos 服务可以知道集群中的其它 Nacos 节点。

⑥ 启动 Nacos 服务

现在,让我们来启动三个 Nacos 服务。

  • 执行 sh nacos-01/bin/startup.sh 命令,启动 Nacos 节点 01。
  • 执行 sh nacos-02/bin/startup.sh 命令,启动 Nacos 节点 02。
  • 执行 sh nacos-03/bin/startup.sh 命令,启动 Nacos 节点 03。

每个 Nacos 节点是否启动成功,胖友自己去看看 logs/start.out 日志文件。

⑦ 访问 UI 界面

三个节点启动成功后,我们访问 Nacos 节点 01 的 UI 界面。使用浏览器中,打开 http://127.0.0.1:18848/nacos 地址,使用默认的用户「nacos/nacos」进行登陆。

登录成功后,点击「节点列表」菜单,我们就可以看到搭建的 Nacos 集群信息。界面如下:节点列表

4.3 Nginx 安装

搭建 Nginx 集群,保证 Nginx 高可用。具体的方案,可见《Configuring Active-Active High Availability and Additional Passive Nodes with keepalived》。如果使用阿里云的话,可以考虑直接使用 SLB 服务,减少运维成本。

考虑到让示例更简单一些,艿艿这里暂时只使用 Nginx 单节点。😈 因为艿艿主要使用 Tengine 为主,所以接下来,我们使用 Tengine,哈哈哈~

① 安装 Tengine

参考《芋道 Tengine 极简入门》文章,先搭建一个 Tengine 服务。

② 配置转发

搭建完成后,我们配置 Tengine 配置文件 conf/nginx.conf 如下,增加对 Nacos 服务的负载均衡。主要配置如下:

# // 省略其它配置内容...

http {
    # // 省略其它配置内容...

    upstream nacosCluster {
        server 192.168.3.44:18848;
        server 192.168.3.44:28848;
        server 192.168.3.44:38848;
    }
    
    location /nacos/ {
        proxy_pass http://nacosCluster/nacos/;
        #allow SOME.IP.ADD.RESS;
        #deny all;
    }
}

配置完成后,记得使用 sbin/nginx -s reload 命令,重新让 Tengine 加载下最新配置噢。

③ 简单测试

友情提示:艿艿的 Tengine 是安装在 IP 为 172.16.48.180 服务器上。

使用浏览器,访问 http://172.16.48.180/nacos 地址,就可以访问 Nacos 集群服务的 UI 界面。

后续,应用中可以直接使用该 Nginx 负载均衡的地址。当然,推荐给 Nginx 绑定一个域名,这样未来 Nginx 服务及时迁移服务器,对于应用也是可以透明的,无需做任何改动。例如说,将 http://nacos.iocoder.cn 转发到 Nginx 服务上。

4.4 补充说明

至此,我们已经完成了 Nacos 集群部署的搭建。生产环境下,请将 Nacos 多个节点部署到多个服务器,保证 Nacos 的高可用。

更多内容,胖友也可以阅读《Nacos 文档 —— 集群部署说明》文章。

5. 集成到 Spring Boot

Nacos 集成到 Spring Boot 项目中,通过 nacos-spring-boot-project 项目。

6. 集成到 Spring Cloud

Nacos 集成到 Spring Cloud 项目中,通过 spring-cloud-alibaba 项目。

7. 集成到 Dubbo

Nacos 集成到 Dubbo 项目中:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值