Nacos 2.3.1 安装使用初体验
前言
认识 Nacos 是从了解 Spring Cloud 微服务框架开始的,项目使用了若依的微服务版本,配置文件名称不是 application.yml
而变成了 bootstrap[-dev].yml
。dev 分支代码设置了 dev
配置文件,dev
配置文件中也只写了 nacos 的 config
与 discovery
配置,分别给出了 server-addr
服务地址,然后就什么都没有了。
当时觉得很神奇,竟然可以把配置项统一放到一个三方服务里管理。登录到 Nacos 提供的用户界面里,发现 Nacos 不止可以管理配置,还可以管理服务。系统中的应用都以注册服务的形式在这边显示。
Spring Cloud 微服务框架中官方推荐的是 netflix 的 Eureka 服务器,作为注册中心使用。Nacos 是阿里贡献出来的开源项目,对标的大概就是 Eureka 服务器。
Nacos Docker 安装
之前网上找了一个 Nacos Docker 的安装指令,但在关闭容器之后再启动就会报错。接着找到了 Nacos Docker 的官方安装教程,测试 单机模式 Derby
是 OK 的。教程先下载 docker-compose 安装脚本,然后按照多种选项安装。Derby 百度了一下是一个内置的数据库,与 mysql 版本对应,默认用 Derby 就够了。单机模式对应集群,单机模式也够用。
安装镜像并启动容器之后,就可以通过链接访问 Nacos 提供的默认的用户界面了:http://127.0.0.1:8848/nacos/。
Nacos 直接安装的版本可以看到,Nacos 需要 Java 环境来运行,默认的配置文件名为 application.properties
,所以 Nacos 就是一个 Java 应用服务,访问链接中的 nacos/
就是配置文件中设置的项目访问路径。
Nacos 开启鉴权
默认安装的 Nacos 是没有鉴权的,即访问直接进入到管理页面,没有登录的环节。Nacos 鉴权里提到了,只需要启动 docker 容器时配置一个参数即可开启鉴权。
NACOS_AUTH_ENABLE=true
文档里先创建运行 nacos/nacos-server
,再调用 docker-compose
构建命令。这里可以直接修改构建的脚本 example/standalone-derby.yaml
:
version: "2"
services:
nacos:
image: nacos/nacos-server:${NACOS_VERSION}
container_name: nacos-standalone
environment:
- PREFER_HOST_MODE=hostname
- MODE=standalone
- NACOS_AUTH_ENABLE=true
- NACOS_AUTH_IDENTITY_KEY=serverIdentity
- NACOS_AUTH_IDENTITY_VALUE=security
- NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789
...
在 enviroment 环境变量中添加一项 - NACOS_AUTH_ENABLE=true
。然后删除容器,重新启动。
开启之后,再次访问会跳转到登录页面,页面上有 内部系统,不可暴露到公网
红色字体提醒。因为这是 Nacos 简单鉴权,想要更安全的方式访问,需要开发 Nacos 鉴权插件。简单的鉴权登录账号密码为 nacos
。此时项目如果想要访问,需要添加 username
、password
参数,否则启动会报错:User not found
。
有的博主提到 NACOS_AUTH_IDENTITY_KEY
、NACOS_AUTH_IDENTITY_VALUE
是设置登录账号、密码,但测试发现账号密码还是 nacos
。
修改 nacos 账号密码
网上提到了几种修改账号密码的方式,最方便的就是通过用户界面右上角的修改密码进行修改,当然只能修改密码,无法修改用户名。
另一种是通过 Nacos 的数据库来修改。所以这时需要 mysql 类型的方便访问。用户名是直接存的,密码需要 System.out.println(new BCryptPasswordEncoder().encode("password"));
加密。
为什么安装的是 Nacos 2.3.1,而不是最新版本的 2.3.2
访问 Nacos Docker github 库 发现,docker compose 安装的 Nacos 最新的脚本为 2.3.2
(与 Nacos 版本一致),但本地安装的却是 2.3.1
。
上面的 Derby 安装脚本可以看到,Nacos 镜像版本为 nacos/nacos-server:${NACOS_VERSION}
。找了一圈其他的配置文件,没有找到 ${NACOS_VERSION}
变量。后面使用 IDE 打开整个脚本项目,全项目搜索,终于找到了 example/.env
:NACOS_VERSION=v2.3.1
。