SpringCloud Alibaba —— Nacos 作为注册中心 —— Nacos 的安装与配置 以及安装后启动可能出现的问题

SpringCloud Alibaba Nacos 作为注册中心

Nacos的配置与启动模块注册

Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。他是使用 Java 编写。需要依赖 Java 环境

Nacos 文档地址: https://nacos.io/zh-cn/docs/quick-start.html

alibaba/spring-cloud-alibaba

SpringCloud Alibaba —— Nacos 作为注册中心 —— Nacos 的安装与配置 以及安装后启动可能出现的问题_第1张图片

步骤一:Add dependency spring-cloud-starter-alibaba-nacos-discovery in the pom.xml file in your Spring Cloud project.

  • 将依赖导入到聚合公共模块当中,因为我们后续的每个模块都需要将服务注册到注册中心。
 <dependency>
     <groupId>com.alibaba.cloudgroupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
 dependency>

步骤二:Install Nacos Server by downloading or build from source code.Recommended latest version Nacos Server

  • 因为服务是要注册到注册中心服务器当中的,所以我们需要进行下载并安装 Nacos Server 这个服务中心。

  • Download: Download Nacos Server download page

  • 下载windows 版本进行单机测试,之后续再下载tar.gz安装到Linux上

步骤三:解压缩之后进入 nacos/bin 目录下 双击startup.cmd 即可

  • 启动成功界面

SpringCloud Alibaba —— Nacos 作为注册中心 —— Nacos 的安装与配置 以及安装后启动可能出现的问题_第2张图片

总结:第一次在windows下安装启动 Nacos 出现的问题

问题一:双击startup.cmd 直接闪退并没有出现服务运行进程

  • 此时我们可以通过尝试命令行进行启动
# 启动命令行进入到nacos/bin目录下
cd R:\SpringCloud\nacos\bin
startup.cmd
> Please set the JAVA_HOME variable in your environment Nacos, We need java(x64):jdk8 or later is better !
  • 此时就会出现运行错误提示,我们根据提示可以很容易知道出现问题的是 Java的环境变量问题,但是检查环境变量时,的确在本地与系统变量中均设置好了 JAVA_HOME 的 jdk 环境变量。

综上,既然不是jdk的环境变量问题,为什么还是会报错呢?

我们通过编辑模式进入startup.cmd中查看代码,是什么原因导致的报错

if not exist "%JAVA_HOME%\bin\java.exe" echo Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better! & EXIT /B 1
set "JAVA=%JAVA_HOME%\bin\java.exe"
  • 很明显是这句话爆出的错误!

解决方案

# 在二者上面加上 JAVA_HOME 对应的 jdk的路径地址即可
set "JAVA_HOME=C:\Program Files\Java\jdk1.8.0_301"

问题二:当我们解决上述问题之后通过命令行再次启动 startup.cmd 时启动报错

SpringCloud Alibaba —— Nacos 作为注册中心 —— Nacos 的安装与配置 以及安装后启动可能出现的问题_第3张图片

这里会持续尝试 starting 你会发现 第一行有 server IP list of Nacos is []

  • 这里是一个IP List 而且启动之后的第一句话是 nacos is starting with cluster 说明是集群启动 !

这不就问题来了?作为第一次启动而且也没有集群配置启动不起来很正常。

在这里插入图片描述

所以可以肯定跟 Nacos 启动模式是有关的

解决方案1

  • 通过命令行启动的时候指定其启动模式

版本低的模式是单机启动,版本高的默认是all方式启动

startup.cmd -m standalone # 单机模式启动

解决方案2

  • 修改启动 startup.cmd 文件

set MODE=“all”
set MODE=“standalone”


步骤四:Add Nacos server address configurations to file /src/main/resources/application.properties.

  • 为每个微服务模块的yaml文件中进行配置对应的 Nacos 服务的服务地址
spring:
  cloud:
    nacos:
      server-addr: 192.168.56.1:8848

步骤五:Use the @EnableDiscoveryClient annotation to turn on service registration and discovery.

  • 可以通过在SpringBoot的主启动类上使用 @EnableDiscoveryClient 这个注解来向注册中心进行注册与服务发现

这里用 GrainmallCouponApplication 来进行举例

@SpringBootApplication
@EnableDiscoveryClient
public class GrainmallCouponApplication {
	public static void main(String[] args) {
		SpringApplication.run(GrainmallCouponApplication.class, args);
	}
}

步骤六:进行测试

  • 启动 GrainmallCouponApplication 之后发现启动期间会报错

错误信息: java.lang.IllegalArgumentException: Param ‘serviceName’ is illegal, serviceName is blank

解决方案:根据错误信息我们可以知道当前的注册服务的注册模块名不可为空,所以我们需要回到模块对应的applition.yaml中进行配置当前服务名.

spring:
  cloud:
    nacos:
      server-addr: 192.168.56.1:8848
  application:
    name: grainmall-coupon

运行结果

http://192.168.56.1:8848/nacos/#/login

SpringCloud Alibaba —— Nacos 作为注册中心 —— Nacos 的安装与配置 以及安装后启动可能出现的问题_第4张图片

默认用户名称:nacos

默认用户密码:nacos

SpringCloud Alibaba —— Nacos 作为注册中心 —— Nacos 的安装与配置 以及安装后启动可能出现的问题_第5张图片

  • 此时进入到服务管理中查看我们刚才启动的微服务模块是否已经注册到了注册中心中。

SpringCloud Alibaba —— Nacos 作为注册中心 —— Nacos 的安装与配置 以及安装后启动可能出现的问题_第6张图片

注册成功啦~

步骤七:依次将每个模块进行相应配置,使得每个模块注册到注册中心当中

  • 首先进入到模块中的 application.yaml 的配置文件中 设置对应的nacos 服务地址
  • 其次需要设置模块中的 application.yaml 的配置文件中 设置 当前application-name 因为模块注册名称不可为空
  • 在 每个模块的主启动类上设置好 @EnableDiscoveryClient

你可能感兴趣的:(SpringCloud微服务,spring,cloud,java,微服务)