SpringCloudAlibaba-微服务-注册中心之Nacos安装与配置
Nacos 官方手册:https://nacos.io/zh-cn/docs/quick-start.html
一、Nacos 安装与启动
1. 下载安装
下载地址:https://github.com/alibaba/nacos/releases
下载压缩包解压即可
2. 端口配置
Nacos 服务默认端口为 8848
如要更改,在 nacos\conf\application.properties 中找到 server.port 更改即可
3. 启动 nacos 单体服务
在 nacos\bin 下有 startup.cmd 脚本,双击打开会默认以集群模式启动
集群需要额外的配置,我们暂时以单体启动
在 nacos\bin 打开命令行,使用命令 startup.cmd -m standalone
启动
浏览器访问 http://localhost:8848/nacos 进入控制台
最初登录账户与密码均为 nacos,进入之后可以修改密码
二、注册服务
1. 依赖
父工程添加 spring-cloud-alibaba-dependencies:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
服务模块中添加 spring-cloud-starter-alibaba-nacos-discovery:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2. 配置
在 application.yaml 中添加如下配置:
spring:
application:
name: order-service # 服务名称
cloud:
nacos:
server-addr: localhost:8848 # nacos 地址
3. 启动服务
由于 nacos 的服务在外部启动,只需启动服务模块即可
启动之后在 nacos 服务列表即可看到服务信息:
三、Nacos 集群搭建
官方文档:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
1. 建立数据库结构
集群多节点的数据统一由数据库实现
在 nacos\conf 目录中提供了有 nacos-mysql.sql 脚本
我们在自己的 MySQL 中,新建 nacos 数据库,执行脚本即可
2. 集群配置
在 nacos\conf 目录中提供了 cluster.conf.example 文件
可以复制一份并删除 .example 后缀,再做修改
配置集群内的节点地址即可 (如果写127.0.0.1可能无法被识别,请写真实地址)
上面以本机的三个不同端口为例
接下来配置节点,修改 application.properties 文件
(数据库密码不要用引号包裹)
如要单机模拟集群效果,可以将 nacos 解压文件复制三份,并分别配置端口号即可
由于 nacos 默认以集群模式启动,双击 nacos\bin 目录下的 startup.cmd 即可启动
按 ctrl + c 或关闭窗口,或者双击 shutdown.cmd 即可关闭
3. 反向代理
Nginx 服务器实现反向代理,通过负载均衡来选择要访问的节点
Nginx 配置如下(添加到 http 标签中):
# nacos 集群
upstream nacos-cluster {
server 127.0.0.1:8847;
server 127.0.0.1:8848;
server 127.0.0.1:8849;
}
server {
# 监听端口
listen 80;
server_name localhost;
# 反向代理
location /nacos {
proxy_pass http://nacos-cluster;
}
}
启动 nginx 后访问 localhost/nacos 即可
4. 服务注册
将服务的 nacos 地址改为 nginx 的地址即可
spring:
application:
name: order-service
cloud:
nacos:
server-addr: localhost:80 # 80 为 nginx 服务端口
踩过的坑
数据库密码不能用引号
通常在 yaml 中配置数据库密码时,密码是纯数字习惯用双引号包裹
但在这里有引号会报错,无法连接数据库
应该是引号直接被转义了
集群 ip 地址不能用 127.0.0.1
在 cluster.conf 中如果用 127.0.0.1 做 ip 地址
服务启动后,cluster.conf 会被添加一个真实 ip 地址,端口号与当前节点配置的相同
应该是 127.0.0.1 不能被使用,localhost 情况相同
另外由于 nacos 等集群内所有节点都正常启动,才能进行服务注册
而我们自己设置的几个 127.0.0.1 不能正常使用,故而导致服务无法注册
服务启动时会报下面的错误:
failed to req API:/nacos/v1/ns/instance after all servers([localhost:80]) tried: ErrCode:400
MySQL 连接失败去掉 useSSL=false
MySQL 总是连接失败,偶尔能成功
去掉 url 里的 useSSL=false 参数就好了,或者改成 true
可能是我用的 mysql 8 的原因,如果是 5 应该没有问题