Nacos 是什么?其官方文档自我介绍如下:
FROM?什么是 Nacos
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
看起来介绍看起来有点高大上。Nacos 是 Dynamic Naming and Configuration Service 的缩写,动态命名和配置服务。正如其名,Nacos 是阿里开源的注册中心 + 配置中心服务。
目前,Nacos 对 Spring、Spring Boot、Spring Cloud、Dubbo 提供了非常好的支持,已经有蛮多大型互联网公司正在使用。
下面,我们先来一起对 Nacos 进行快速入门。
本小节,我们来最小化部署一个 Nacos 服务,适合演示或学习之用。
在?https://github.com/alibaba/nacos/releases?中,我们可下载 Nacos 的安装包。
.zip
?包。.tar.gz
?包。后面,进行解压。
在命令行中,可以输入如下命令启动:
cmd startup.cmd
?。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
登录成功后,我们可以看到如下界面:
?
操作系统:macOS 10.14
其它系统,基本一致的。
本小节,我们来单机部署一个 Nacos 服务,适合测试环境。如下图所示:
?
其中,MySQL 用于 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
?库。然后,使用该脚本进行数据库的初始化。最终表结构,如下图所示:
?
修改?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 是 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
执行?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?端口。
Nacos 服务,内置了 UI 界面。使用浏览器中,打开?http://127.0.0.1:8848/nacos?地址,使用默认的用户「nacos/nacos」进行登录。
友情提示:生产环境下,一定要记得修改默认的用户的密码噢。
登录成功后,我们可以看到如下界面:
?
在生产环境下,我们需要搭建 Nacos 集群,确保高可用。所以本小节,我们来搭建单机部署一个 Nacos 服务。如下图所示:
?
搭建 MySQL 集群,保证 MySQL 高可用。如果使用阿里云的话,可以考虑直接使用 RDS 服务,减少运维成本。
考虑到让示例更简单一些,艿艿这里暂时只使用 MySQL 单节点。
我们在本地搭建 3 个 Nacos 服务,实现 Nacos 高可用。因为 Nacos 服务之间通过?Raft 算法?保证一致性,所以我们建议 Nacos 部署的节点数为大于 3 的奇数。
将?的?nacos
?文件,复制?nacos-01
、nacos-02
、nacos-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
继续使用?nacos-example
。
对?nacos-01
、nacos-02
、nacos-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=
db.num
?为 MySQL 节点数量,然后在?db.url.1
、db.url.2
?不断往下配置。因为我们是在本机启动三个 Nacos 服务,所以需要修改其端口,保证能够启动。在?conf/application.properties
?配置文件,修改?server.port
?配置项,可以修改 Nacos 服务器端口。这里我们分别修改如下:
nacos-01
?对应 18848 端口。nacos-02
?对应 28848 端口。nacos-03
?对应 38848 端口。
在?nacos-01
、nacos-02
、nacos-03
?三个文件夹中,创建?conf/cluster.conf
?配置文件,配置一个 Nacos 集群的所有节点。具体内容如下:
# ip:port
192.168.3.44:18848
192.168.3.44:28848
192.168.3.44:38848
?
ip:port
。127.0.0.1
?这个 IP 地址,因为 Nacos 获取的是外部 IP。因此,艿艿这里使用的是?192.168.3.44
。通过该配置文件,每个 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
?日志文件。
三个节点启动成功后,我们访问 Nacos 节点 01 的 UI 界面。使用浏览器中,打开?http://127.0.0.1:18848/nacos?地址,使用默认的用户「nacos/nacos」进行登录。
登录成功后,点击「节点列表」菜单,我们就可以看到搭建的 Nacos 集群信息。界面如下:
?
至此,我们已经完成了 Nacos 搭建。生产环境下,请将 Nacos 多个节点部署到多个服务器,保证 Nacos 的高可用。后面文章我们将讲解Nacos整合Springboot。
?
?