nacos安装搭建 + springcloud 整合 nacos

本文详细介绍了如何在CentOS7.2环境下安装配置Nacos 1.4.0,包括JDK的安装、Nacos的下载与启动、数据库的创建以及集群配置。接着,展示了如何将Nacos整合进SpringCloud应用,包括创建Maven工程、配置pom.xml、编写启动类、配置Nacos注册中心和配置中心。最后,提到了配置文件的命名规则、动态配置测试以及整合注意事项。
摘要由CSDN通过智能技术生成

介绍

nacos

Nacos 支持基于 DNS 和基于 RPC 的服务发现(可以作为springcloud的注册中心)、动态配置服务(可以做配置中心)、动态 DNS 服务。它 = 注册中心 + 配置中心

环境安装

nacos

nacos是java开发的,,所以运行依赖java环境,所以我们先安装配置java环境。系统环境是linux

名称版本
linux系统Centos7.2
java环境jdk1.8.0
nacos1.4.0

jdk下载地址

https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html

进入下载页面往下滑,找到如下图,进行下载。
在这里插入图片描述

nacos下载

https://github.com/alibaba/nacos/releases

在这里插入图片描述
点击链接进入下一级页面,往下滑,找到如下图,点击下载。
在这里插入图片描述

java jdk 安装及环境配置

新建jdk安装的目录

进入目录
cd /usr/local/
创建目录
mkdir java
用上传工具,将下载好的jdk安装包,上传到新建的这个目录中。

进行安装

进入目录
cd java
查看目录中的文件名
ls
解压 tar 包
tar -xvf jdk-8u211-linux-x64.tar.gz
删除安装包
rm -rf jdk-8u211-linux-x64.tar.gz
查看目录中的文件名
ls
效果如下
在这里插入图片描述
进入解压后的jdk目录
cd jdk1.8.0_211
查看当前目录,要把当前目录复制一下,因为一会要配置环境变量
pwd
出现的目录

/usr/local/java/jdk1.8.0_211

效果如下
在这里插入图片描述

配置环境变量

编辑环境变量配置
vi /etc/profile
在最后面写入以下内容,JAVA_HOME 的值就是刚刚用 pwd 命令显示的当前目录的路径

JAVA_HOME=/usr/local/java/jdk1.8.0_211
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

效果如下:
在这里插入图片描述
保存退出编辑
:wq
使更改的配置立即生效
source /etc/profile
java -version 命令或javac -version命令来查看 jdk 是否安装成功
效果如下
在这里插入图片描述

nacos 安装

解压安装

进入目录
cd /usr/local
创建一个nacos目录用来安装
mkdir nacos
查看目录
ls
效果如下
在这里插入图片描述
用工具把安装包上传到新建的nacos目录中,全路径是/usr/local/nacos
上传之后效果如下
在这里插入图片描述
解压安装包
tar -zxvf nacos-server-1.4.0.tar.gz
查看目录
ls
效果如下
在这里插入图片描述
进入配置目录
cd nacos/conf
查看目录列表
ls
效果如下
在这里插入图片描述
注意目录中的两个sql文件,用远程工具下载到本地,方便等下执行到数据库中。(也可以提前解压拿出来,再上传安装。)
如下图
在这里插入图片描述
等下配置需要数据库,所以我们先创建数据库,再进行配置、启动步骤。

创建mysql数据库

在这里插入图片描述

运行sql
在这里插入图片描述
在这里插入图片描述
效果如下
在这里插入图片描述
前面已经进入到conf目录中了(全路径是/usr/local/nacos/nacos/conf),下面接着配置nacos。
vi application.properties
修改下面部分内容

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?serverTimezone=GMT%2B8&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root
#启用认证
nacos.core.auth.enabled=true

效果如下
在这里插入图片描述
保存退出编辑
:wq

集群配置(可选)

复制文件并重命名
cp cluster.conf.example cluster.conf
效果如下
在这里插入图片描述
编辑文件
vi cluster.conf
删除原有的3个节点
在这里插入图片描述
添加自己准备配置的集群节点
效果如下
在这里插入图片描述
保存退出编辑
:wq
复制并重命名nacos,模拟集群搭建
cp -r nacos nacos-8846
cp -r nacos nacos-8847
cp -r nacos nacos-8848
效果如下
在这里插入图片描述
分别修改nacos-8846nacos-8847nacos-8848的启动端口。下面拿nacos-8846举例
cd nacos-8846/conf
vi application.properties
修改下面的值

server.port=8846

效果如下
在这里插入图片描述

启动

进入启动目录
cd /usr/local/nacos/nacos/bin
如下图
在这里插入图片描述
执行启动命令
./startup.sh start

操作命令如下
显示命令帮助./startup.sh
启动服务./startup.sh start
停止服务./startup.sh stop
查看服务运行状态./startup.sh status
重启服务./startup.sh restart

集群启动如上, 分别进入到/bin目录下,执行启动命令即可

测试访问
浏览器输入地址http://192.168.0.209:8848/nacos

在这里插入图片描述
表示成功
使用默认得登录用户和密码
用户名:nacos
密码:nacos

如果是集群,登录后点击集群管理 - 节点列表,效果如下
在这里插入图片描述

框架整合

第一步,创建maven pom工程

在这里插入图片描述
下面这一步要注意,先要取消use default Workspace location,在后面输入上名字后,再选中。
如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建之后效果如下
在这里插入图片描述
删除掉src目录(这里不需要这个)

第二步,创建模块工程

选中springcloud-nacos-demo工程,快捷键 Ctrl + N
效果如下
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

第三步,编辑springcloud-nacos-demopom.xml

如下所示
在这里插入图片描述
pom.xml加入内容如下

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.cloud.nacos.demo</groupId>
  <artifactId>springcloud-nacos-demo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>springcloud-nacos-demo</name>
  <description>springcloud-nacos-demo</description>
  <modules>
  	<module>springcloud-nacos</module>
  </modules>
  
  <properties>
		<!--Package skip unit test -->
		<skipTests>true</skipTests>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
		<boot.verson>2.2.8.RELEASE</boot.verson>
		<cloud.verson>Hoxton.SR4</cloud.verson>
		<alibaba.cloud.version>2.2.3.RELEASE</alibaba.cloud.version>
		<alibaba.fastjson.version>1.2.68</alibaba.fastjson.version>
	</properties>


	<dependencyManagement>
		<dependencies>
			<!-- alibaba cloud -->
			<dependency>
				<groupId>com.alibaba.cloud</groupId>
				<artifactId>spring-cloud-alibaba-dependencies</artifactId>
				<version>${alibaba.cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			
			<!-- spring boot -->
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-dependencies</artifactId>
				<version>${boot.verson}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			
			<!-- spring cloud -->
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${cloud.verson}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			
			<!-- alibaba json tool -->
			<dependency>
				<groupId>com.alibaba</groupId>
				<artifactId>fastjson</artifactId>
				<version>${alibaba.fastjson.version}</version>
			</dependency>
			
		</dependencies>
	</dependencyManagement>


	<build>
        <finalName>${project.name}</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <delimiters>
                        <delimit>$</delimit>
                    </delimiters>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

第四步,创建springcloud-nacos工程启动类

先创建启动类
效果如下
在这里插入图片描述

第五步,整合nacos注册中心

编辑springcloud-nacos工程pom.xml文件
如下所示
在这里插入图片描述
内容如下

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>com.cloud.nacos.demo</groupId>
		<artifactId>springcloud-nacos-demo</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<artifactId>springcloud-nacos</artifactId>
	<name>springcloud-nacos</name>
	<description>springcloud-nacos</description>
	<packaging>jar</packaging>


	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<start-class>com.nacos.demo.NacosDemoApp</start-class>
		<parentdir>D:\EclipseWorkSpace\csdn-springcloud-nacos-dubbo-demo\springcloud-nacos-demo\springcloud-nacos</parentdir>
	</properties>

	<dependencies>
		<!-- web -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<!-- actuator -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>

		<!-- cloud Registry -->
		<dependency>
			<groupId>com.alibaba.cloud</groupId>
			<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
		</dependency>
	</dependencies>

	<build>
		<!-- 指定package生成的文件名为myApplication.jar -->
		<finalName>${project.name}</finalName>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<!-- 指定该Main Class为全局的唯一入口 -->
					<mainClass>${start-class}</mainClass>
					<layout>ZIP</layout>
					<encoding>UTF-8</encoding>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>

parentdir路径来源
在这里插入图片描述
选中springcloud-nacos按组合快捷键Alt + Enter,效果如下
在这里插入图片描述
start-class包路径来源
在这里插入图片描述
双击NacosDemoApp.java文件,右键点击类名,如下图
在这里插入图片描述

编辑springcloud-nacos工程启动类代码

内容如下

package com.nacos.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class NacosDemoApp {
	public static void main(String[] args) {
		try {
			SpringApplication sa = new SpringApplication(NacosDemoApp.class);
			sa.run(args);
			// 必须try catch 不然启动失败不知道原因
		} catch (Exception e) {
			if (!(e.getStackTrace() != null && e.getStackTrace().length <= 16
					&& "org.springframework.boot.devtools.restart.SilentExitExceptionHandler"
							.equals(e.getStackTrace()[0].getClassName()))) {
				e.printStackTrace();
			}
		}
	}
}

效果如下
在这里插入图片描述

编辑yml配置文件

因为注册中心的问题,建议使用bootstrap.yml配置
新建一个bootstrap.yml文件,加入以下内容

spring:
  profiles:
    active: dev

效果如下
在这里插入图片描述
再创建一个bootstrap-dev.yml文件,加入以下内容

server:
  port: 8001



spring:
  application:
    name: springcloud-nacos
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.0.209:8846,192.168.0.209:8847,192.168.0.209:8848

效果如下
在这里插入图片描述

server-addr如果是单节点,写一个即可,多节点则如上以逗号分隔

启动服务

在这里插入图片描述
出现如下内容,则启动成功。
在这里插入图片描述
下面去nacos看看服务列表有没有启动的这个服务
在这里插入图片描述
springcloud-nacos这个服务, 说明一切流程正常走完.
nacos集群的话,更改访问端口,查看其他节点的nacos中是否同步,同步则为正常,如下图。
在这里插入图片描述
服务名称来自于springcloud-nacos工程中yml配置的spring.application.name
如下图
在这里插入图片描述

第六步,整合nacos配置中心

编辑springcloud-nacos模块下的pom.xml文件

加入以下内容

<!-- cloud Configuration center -->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

效果如下
在这里插入图片描述

编辑配置中心配置,修改bootstrap-dev.yml文件

加入以下内容

spring:
  cloud:
    nacos:
      config: 
        server-addr: 192.168.0.209:8846,192.168.0.209:8847,192.168.0.209:8848
        file-extension: yaml #Specify the configuration in yaml format

效果如下
在这里插入图片描述

新建一个controller

用来测试配置中心效果
TestNacosConfigController.java
代码如下

package com.nacos.demo.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@RefreshScope
@Controller
public class TestNacosConfigController {
	
	@Value("${test-nacos-config:null}")
	private String testNacosConfig;
	
	@GetMapping("/nacos/config")
	@ResponseBody
	public String getNacosConfig() {
		return testNacosConfig;
	}
}

效果如下
在这里插入图片描述

启动或重启springcloud-nacos服务

启动前,先增加一个启动参数,这里演示eclipse配置
参数如下
-Dfile.encoding=utf-8
加在虚拟机启动参数里,步骤如下
在这里插入图片描述
在这里插入图片描述
我这里是停止状态,演示启动
在这里插入图片描述

如下表示启动成功
在这里插入图片描述

nacos配置文件命名规则

检查nacos注册中心,服务是否注册成功,参考上面整合nacos注册中心。
先了解nacos配置中心配置文件命名规则。
我们来到工程的yml配置文件中,其中注册中心配置下有一个prefix属性,看一下描述。
如下
在这里插入图片描述
这里我们可以看到数据标识 = prefix + ${spring.active.profile} + ${spring.cloud.nacos.config.file-extension}
如下
在这里插入图片描述
在这里插入图片描述
如果在prefix没有配置的情况下,默认使用的是spring.application.name
如下
在这里插入图片描述
我们在配置整合示例中,并没有配置prefix这个属性。使用的默认值,也就是上图红框中的spring.application.name
这里我们可以得到配置中心配置文件的名称格式为
${spring.application.name} + ${spring.active.profile} +-+ ${spring.cloud.nacos.config.file-extension}
等于: springcloud-nacos-dev.yaml

nacos配置中心创建配置文件

下面开始编辑配置中心配置文件。
在这里插入图片描述

在这里插入图片描述
Data ID:
命名规则如上所述
Group:
在这里插入图片描述
我们整合示例中,没有配置这个,则使用的Default值,则是DEFAULT_GROUP
如果有需要,请自行配置。
配置格式:
springcloud-nacos工程中yml配置项spring.cloud.nacos.config.file-extension一致,否则无法获取配置中心值
如下图
在这里插入图片描述
配置内容:
上面橙色框与下图属性一致,配置方式与springboot自动配置相似。
在这里插入图片描述

nacos配置项填写完成后,点击发布按钮
如下图
在这里插入图片描述
在这里插入图片描述

动态配置测试

浏览器访问controller接口地址
效果如下
在这里插入图片描述
我们改变一下nacos配置中心的值,再看看效果
在这里插入图片描述
示例中,只修改配置内容的值就行了。
如下图
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
我们刷新一下刚才浏览器访问的接口
效果如下
在这里插入图片描述

总结注意事项:

1、nacos安装配置过程中,数据库sql记得要执行
2、nacos安装配置时,数据库要配置正确
3、nacos如果要搭建集群,cluster.conf里面的ip端口一定要配置正确
4、框架整合时,注意版本。
5、配置文件建议使用bootstrap级别
6、注意spring.cloud.nacos.config.file-extension名称与nacos中创建时的名称要一致
7、注意spring.application.namespring.cloud.nacos.config.prefix的默认值
8、启动时注意一定要加-Dfile.encoding=utf-8,否则配置文件中出现中文时,配置信息会同步失败。
9、注意工程的编码格式,示例中统一使用utf-8

其他

1、spring.cloud.nacos.discovery.namespacespring.cloud.nacos.config.namespace对应nacos中的
在这里插入图片描述
2、spring.cloud.nacos.discovery.groupspring.cloud.nacos.config.group对应nacos中的
在这里插入图片描述

至此,springcloud nacos整合完成。
欢迎评论交流。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

接口不规范

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值