Spring Cloud Alibaba:Nacos 安装及使用
Nacos 是什么?
Nacos 致力于帮助开发者发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助开发者更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
Nacos
主要包含两个部分,一个是配置中心,一个是服务注册与发现。本系列的文章将依次对其进行分享介绍。
本篇将着重介绍 Nacos
的单机与集群安装及一些基本的使用。
版本说明
- Windows: win 10 64位系统
- Linux: Centos 7 64位系统
- Nacos: 1.3.2 (当前最新稳定版本)
Windows 单机安装
下载软件包
前往 GitHub Nacos Release 下载 nacos-server-1.3.2.zip
软件包到本地。
本地解压,目录结构如下图所示。
1 | bin : 启动/关闭脚本 |
参数配置
打开文件 conf/application.properties
文件,对 nacos 进行配置。
1 | ### 配置网页端访问端口 |
注意:
- 如需启用数据库,需要导入 conf/nacos-mysql.sql 脚本!
- 如需开启认证授权,需要在项目代码中配置用户名密码,否则会访问失败!
- 数据库的版本要在 5.7 以上,否则会出现异常!
启动
启动脚本在 bin/
目录下,windows 下使用 shutdown.cmd
与 startup.cmd
两个脚本。
nacos 1.3.2
的脚本有个小改动,默认启动模式为 cluster
集群模式,所以要单机启动的话,有两种方案。
- 带参数运行
创建脚本文件 startup-standalone.cmd
,添加以下代码到文件中。
1 | startup.cmd -m standalone |
然后双击启动 startup-standalone.cmd
脚本即可。或者每次启动时使用 startup.cmd -m standalone
命令启动。
个人认为写个 startup-standalone.cmd
脚本更方便。
- 修改原有的脚本
使用编辑器打开脚本文件 bin/startup.cmd
,找到大概 27 行,按照下方代码编辑。
1 | # 原本的代码 |
修改后保存,然后直接运行 bin/startup.cmd
脚本即可。
验证
双击 bin/startup.cmd
或 bin/startup-standalone.cmd
脚本,单机运行,运行成功则如下图所示。
可以看到启动的端口号,以及启动模式为 stand alone mode
单机模式,使用了外部存储(mysql)。
浏览器中打开链接: http://localhost:8848/nacos 访问 Nacos。
输入用户名(默认为nacos)密码(默认为nacos),进入首页如下图所示。
具体的使用下章细说。注意登录成功后要修改密码,不要使用默认密码。
Linux 单机安装
下载软件包
前往 GitHub Nacos Release 下载 nacos-server-1.3.2.tar.gz
软件包到本地。
然后使用命令解压。
1 | 下载软件包 |
目录结构与 windows 中的一致,不再赘述。
参数配置
参数配置也与 windows 中的一致,不再赘述。
启动
启动模式也基本与 windows 一致,只是需要使用 shutdown.sh
与 startup.sh
脚本。命令如下:
1 | 启动命令 - Linux 自动后台运行 |
同样,可以创建一个 startup-standalone.sh
脚本来直接启动。具体参考 windows 对应章节,不再赘述。
Linux 下启动会自动后台运行,运行成功后,如下图所示。
如需查看启动日志,可以使用下面的命令,日志的结果与 windows 几乎一致。
1 | 日志所在路径,如上图最后一句打印日志所示 |
验证
Linux 系统需要注意防火墙是否开启,是否开启了 8848
端口或是自定义的端口。如果是阿里云或其他云服务器,同样需要记得开启端口,否则无法访问。
其他均与 windows 相同,不再赘述。
Docker 单机安装
阅读此章节,默认已了解
Docker
的基础知识,不了解请先学习一下Docker
的基本知识。
Docker 下的安装有两种,一种是官方的 nacos-docker 仓库示例。一种自己编写 docker-compose
进行自定义部署。
nacos-docker 官方示例
按照下面的命令进行部署。
1 | 克隆项目 |
此种方式,单机模式,将创建四个容器 nacos-server
、mysql
、prometheus
和grafana
。
对于我个人而言,我有自己的数据库,没必要再额外创建一个 mysql,另外 prometheus
和 grafana
的监控我也咱不需要。使用这种方式,比较占用服务器的资源。
对于仅需要 nacos 功能的用户来说,自定义部署可能更加方便。如果想要懒人部署,或者有监控需要,可以使用这种部署方式。另外,官方的部署文件及配置很有参考价值。
自定义部署
创建一个 docker-compose.yaml
文件,将下列配置添加到文件中。
1 | version: '3' |
Nacos Docker 环境变量:
名称 | 描述 | 选项 |
---|---|---|
MODE | cluster/standalone | cluster/standalone default cluster |
NACOS_SERVERS | nacos cluster address | eg. ip1:port1 ip2:port2 ip3:port3 |
PREFER_HOST_MODE | 是否支持 hostname | hostname/ip default ip |
NACOS_APPLICATION_PORT | nacos server port | default 8848 |
NACOS_SERVER_IP | 当有多网络的时候自定义nacos server ip | |
SPRING_DATASOURCE_PLATFORM | standalone support mysql | mysql / empty default empty |
MYSQL_SERVICE_HOST | mysql host | |
MYSQL_SERVICE_PORT | mysql database port | default : 3306 |
MYSQL_SERVICE_DB_NAME | mysql database name | |
MYSQL_SERVICE_USER | username of database | |
MYSQL_SERVICE_PASSWORD | password of database | |
MYSQL_SSL_ENABLE | use ssl | default : false |
MYSQL_DATABASE_NUM | 指定数据库的数量 | default :1 |
JVM_XMS | -Xms | default :2g |
JVM_XMX | -Xmx | default :2g |
JVM_XMN | -Xmn | default :1g |
JVM_MS | -XX:MetaspaceSize | default :128m |
JVM_MMS | -XX:MaxMetaspaceSize | default :320m |
NACOS_DEBUG | enable remote debug | y/n default :n |
TOMCAT_ACCESSLOG_ENABLED | server.tomcat.accesslog.enabled | default :false |
NACOS_AUTH_SYSTEM_TYPE | 认证系统类型,目前仅支持nacos | default :nacos |
NACOS_AUTH_ENABLE | 是否开启认证系统 | default :false |
NACOS_AUTH_TOKEN_EXPIRE_SECONDS | token 过期时间(以秒为单位) | default :18000 |
NACOS_AUTH_TOKEN | 默认 token | default :SecretKey012345678901234567890123456789012345678901234567890123456789 |
NACOS_AUTH_CACHE_ENABLE | 打开/关闭身份验证信息的缓存。通过打开此开关,认证信息的更新将有15秒的延迟。 | default : false |
MEMBER_LIST | 使用配置文件或命令行参数设置集群列表 | eg:192.168.16.101:8847?raft_port=8807,192.168.16.101?raft_port=8808,192.168.16.101:8849?raft_port=8809 |
EMBEDDED_STORAGE | 集群模式下没有mysql的时候使用 embedded 存储 | embedded default : none |
创建 ./conf/custom.properties
文件,并添加以下内容:
1 | #spring.security.enabled=false |
custom.properties
这个文件一般可能没用,如果你需要上述的参数,可以去到注释并进行设置。
完成之后,使用下面的命令启动/关闭 nacos-server
:
1 | 后台启动 |
验证
注意开启端口的访问权限。
浏览器中打开链接: http://localhost:8848/nacos 访问 Nacos 进行验证。
集群安装
集群的安装建立在单机安装的基础上,且 Windows 机器和 Linux 机器并没有什么不同,甚至一部分 Nacos 部署在 Windows 上,一部分部署在 Linux 都可以。
本节讨论的是如何部署一个生产可用的 Nacos 集群,并使用 MySQL 做数据持久化。
Nacos 集群部署架构图
数据库准备
如果是生产环境的话,建议搭建一个高可用的数据库,用来存储 Nacos 的持久化数据。具体搭建步骤不在本章的讨论范畴,不再赘述。
按照之前单机安装的步骤,创建一个名为 nacos
的数据库,并导入 conf/nacos-mysql.sql 脚本生成必要的数据表和数据。
集群部署规划
集群部署,其实就是在不同的机器上,每个机器都部署一份 nacos-server
,然后编辑 ./conf/cluster.conf
集群配置文件,把这些机器汇总进去。然后 nacos 会自动选举出 Leader 及 Follower,完成集群的搭建。
节点分配如下:
实例 | IP | 端口 |
---|---|---|
nacos-server-01 | 192.168.9.11 | 8848 |
nacos-server-02 | 192.168.9.12 | 8848 |
nacos-server-03 | 192.168.9.13 | 8848 |
需要注意的是,如果是多台机器部署的话,需要保证这几台机器可以相互通信,且端口需要开启。
参数配置
首先需要准备一份 nacos-server
安装包,解压,然后编辑 ./conf/application.properties
,配置内容与 Windows 单机安装 - 参数配置 小节中完全一样。其中数据库修改为上一步准备的数据库即可。
然后需要复制 ./conf/cluster.conf.example
文件并重命名为 cluster.conf
,这个文件就是集群的配置文件了,以后如果需要修改集群节点信息,也是编辑这个文件,比如增减节点等。
编辑完成后的 cluster.conf
内容对应上面的节点分配,如下所示:
1 | # 多台机器部署集群 |
注意,如果你只是想在一台机器上模拟集群环境的话,那么此文件的配置仅需要修改下 IP 和端口即可。如下所示:
1 | # 单台机器部署集群 |
启动
编辑好之后,将 nacos-server
安装包,复制三份,分别上传到三台机器上。然后各自执行命令启动。
1 | 启动命令,因为 1.3.2 版本默认集群启动,所以可以直接运行。 |
验证
三台机器全部启动完成之后,随便访问哪一台机器上的 nacos 均可。
浏览器打开链接 http://192.168.9.11:8848/nacos 访问 nacos。可以通过 集群管理 - 节点列表 来查看集群的情况。如下图所示:
同时可以点击右侧的 节点元数据 查看节点的详细信息。节点元数据如下:
1 | { |
naming.state
节点参数,指明了此节点为 Leader 节点,其他两个节点为 Follower。
Nginx 反向代理与负载均衡
Nginx 的安装不在本章节的讨论范畴内,请自行查阅学习相关的信息。
打开 Nginx 的配置文件 conf/nginx.conf
,并在 http{}
节点下添加以下内容:
1 | upstream nacos { |
配置完成后,重新加载 Nginx 配置即可。
验证 Nginx
浏览器打开链接 http://192.168.9.10/nacos 访问 nacos。如果正常访问即通过验证。