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 应该没有问题

猜你喜欢

转载自blog.csdn.net/Cey_Tao/article/details/127611559