600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Linux启动nacos成功日志_微服务系列之Nacos配置中心

Linux启动nacos成功日志_微服务系列之Nacos配置中心

时间:2019-11-24 15:24:33

相关推荐

Linux启动nacos成功日志_微服务系列之Nacos配置中心

Nacos 介绍

Nacos 是 Alibaba 公司推出的开源工具,用于实现分布式系统的服务发现与配置管理。英文全称 Dynamic Naming and Configuration Service,Na 为 Naming/NameServer 即注册中心,co 为 Configuration 即配置中心,Service 是指该注册/配置中心都是以服务为核心。服务(Service)是 Nacos 世界的一等公民。

官网是这样说的:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Nacos 致力于发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,可以快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 可以更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构的服务基础设施。

使用 Nacos 简化服务发现、配置管理、服务治理及管理的解决方案,让微服务的发现、管理、共享、组合更加容易。

Nacos 官网:https://nacos.io/zh-cn/

Github:/alibaba/nacos

Nacos 安装

环境准备

Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行 Nacos,还需要为此配置 Maven 环境,请确保是在以下版本环境中安装使用:

JDK 1.8+;Maven 3.2.x+。

下载源码或者安装包

可以通过源码和发行包两种方式来获取 Nacos。

源码方式

从 Github 上下载源码方式。

git clone /alibaba/nacos.git

cd nacos/

mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U

ls -al distribution/target/

// change the $version to your actual path

cd distribution/target/nacos-server-$version/nacos/bin

发行包方式

您可以从 /alibaba/nacos/releases 下载最新稳定版本的nacos-server包。

启动服务器

Linux/Unix/Mac

在 Nacos 的解压目录nacos/bin目录下启动。

启动命令(standalone 代表着单机模式运行,非集群模式):

sh startup.sh -m standalone

如果您使用的是 ubuntu 系统,或者运行脚本报错提示符号找不到,可尝试如下运行:

bash startup.sh -m standalone

Windows

启动命令:

cmd startup.cmd

或者双击startup.cmd运行文件。

访问

访问:http://localhost:8848/nacos/ ,默认用户名/密码是 nacos/nacos。

关闭服务器

Linux/Unix/Mac

sh shutdown.sh

Windows

cmd shutdown.cmd

或者双击shutdown.cmd运行文件。

配置 MySQL 数据库

Nacos 在0.7版本之前,默认使用的是嵌入式数据库Apache Derby来存储数据(内嵌的数据库会随着 Nacos 一起启动,无需额外安装);0.7版本及以后,增加了对MySQL数据源的支持。

MySQL数据源

环境要求:MySQL 5.6.5+(生产使用建议至少主备模式,或者采用高可用数据库);

初始化 MySQL 数据库

创建数据库nacos_config

SQL源文件地址:/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql ,或者在nacos-server解压目录conf下,找到nacos-mysql.sql文件,运行该文件,结果如下:

application.properties 配置

修改nacos/conf/application.properties文件的以下内容。

最终修改结果如下:

#*************** Config Module Related Configurations ***************#

### If user MySQL as datasource:

# 指定数据源为 MySQL

spring.datasource.platform=mysql

### Count of DB:

# 数据库实例数量

db.num=1

# 数据库连接信息,如果是 MySQL 8.0+ 版本需要添加 serverTimezone=Asia/Shanghai

### Connect URL of DB:

db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=Asia/Shanghai

db.user=root

db.password=1234

如果你和我一样使用的是 MySQL 8.0+ 版本,那么启动 Nacos 时肯定会报错。莫慌,在 Nacos 安装目录下新建plugins/mysql文件夹,并放入 8.0+ 版本的 mysql-connector-java-8.0.xx.jar,重启 Nacos 即可,启动时会提示更换了 MySQL 的 driver-class 类。

Nacos 配置入门

nacos-config-demo聚合工程。SpringBoot 2.3.0.RELEASESpring Cloud Hoxton.SR5

发布配置

选择配置管理配置列表页面,点击最右侧+按钮新建配置。

Nacos Config 使用Data IDGroup来确定配置。

下图显示Data Idproduct-service.yaml,组使用默认组,并添加yaml格式的配置信息。

project:

name: SpringCloudAlibaba

org: Aliababa

获取配置

创建项目

我们创建聚合项目来讲解 Nacos,首先创建一个 pom 父工程。

添加依赖

pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0modelVersion>

<groupId>org.examplegroupId>

<artifactId>nacos-config-demoartifactId>

<version>1.0-SNAPSHOTversion>

<parent>

<groupId>org.springframework.bootgroupId>

<artifactId>spring-boot-starter-parentartifactId>

<version>2.3.0.RELEASEversion>

parent>

<properties>

<spring-cloud.version>Hoxton.SR5spring-cloud.version>

<spring-cloud-alibaba.version>2.1.0.RELEASEspring-cloud-alibaba.version>

properties>

<dependencyManagement>

<dependencies>

<dependency>

<groupId>org.springframework.cloudgroupId>

<artifactId>spring-cloud-dependenciesartifactId>

<version>${spring-cloud.version}version>

<type>pomtype>

<scope>importscope>

dependency>

<dependency>

<groupId>com.alibaba.cloudgroupId>

<artifactId>spring-cloud-alibaba-dependenciesartifactId>

<version>${spring-cloud-alibaba.version}version>

<type>pomtype>

<scope>importscope>

dependency>

dependencies>

dependencyManagement>

project>

商品服务 product-service

创建项目

在刚才的父工程下创建一个product-service项目。

添加依赖

主要添加spring-cloud-starter-alibaba-nacos-config依赖。

<dependency>

<groupId>com.alibaba.cloudgroupId>

<artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>

dependency>

完整依赖如下:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd">

<parent>

<artifactId>nacos-config-demoartifactId>

<groupId>org.examplegroupId>

<version>1.0-SNAPSHOTversion>

parent>

<modelVersion>4.0.0modelVersion>

<artifactId>product-serviceartifactId>

<dependencies>

<dependency>

<groupId>com.alibaba.cloudgroupId>

<artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>

dependency>

<dependency>

<groupId>org.springframework.bootgroupId>

<artifactId>spring-boot-starter-webartifactId>

dependency>

<dependency>

<groupId>org.projectlombokgroupId>

<artifactId>lombokartifactId>

<scope>providedscope>

dependency>

<dependency>

<groupId>org.springframework.bootgroupId>

<artifactId>spring-boot-starter-testartifactId>

<scope>testscope>

<exclusions>

<exclusion>

<groupId>org.junit.vintagegroupId>

<artifactId>junit-vintage-engineartifactId>

exclusion>

exclusions>

dependency>

dependencies>

project>

配置文件

bootstrap.yml中配置 Nacos Server 的地址和应用名。

server:

port: 7070 # 端口

spring:

application:

name: product-service # 应用名称

cloud:

nacos:

config:

enabled: true # 如果不想使用 Nacos 进行配置管理,设置为 false 即可

server-addr: 127.0.0.1:8848 # Nacos Server 地址

group: DEFAULT_GROUP # 组,默认为 DEFAULT_GROUP

file-extension: yaml # 配置内容的数据格式,默认为 properties

说明:之所以需要配置spring.application.name,是因为它是构成 Nacos 配置管理dataId字段的一部分。

在 Nacos Spring Cloud 中,dataId的完整格式如下:

${prefix}-${spring.profile.active}.${file-extension}

prefix默认为spring.application.name的值,也可以通过配置项spring.cloud.nacos.config.prefix来配置。spring.profile.active即为当前环境对应的 profile。「注意:当spring.profile.active为空时,对应的连接符-也将不存在,dataId 的拼接格式将变成${prefix}.${file-extension}file-exetension为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension来配置。目前只支持propertiesyaml类型,默认为properties

控制层

使用 Spring 的@Value注解来获取配置信息,${}中对应 Nacos 配置中心配置内容的 key,:后跟默认值。

并且通过 Spring Cloud 原生注解@RefreshScope实现配置自动更新。

package org.example.controller;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.cloud.context.config.annotation.RefreshScope;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;

import java.util.Map;

@RefreshScope

@RestController

public class ConfigController {

@Value("${project.name:}")

private String projectName;

@Value("${:}")

private String projectOrg;

@GetMapping("/config")

public MapgetConfig() {

Map configMap = new HashMap();

configMap.put("projectName", projectName);

configMap.put("projectOrg", projectOrg);return configMap;

}

}

启动类

package org.example;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class ProductServiceApplication {

public static void main(String[] args) {

SpringApplication.run(ProductServiceApplication.class, args);

}

}

测试

访问:http://localhost:7070/config 结果如下:

修改配置为以下内容,重新发布:

project:

name: SpringCloudAlibaba-Nacos

org: Aliababa

控制台打印信息如下:

c.a.c.n.c.NacosPropertySourceBuilder: Loading nacos data, dataId: 'product-service.yaml', group: 'DEFAULT_GROUP'

b.c.PropertySourceBootstrapConfiguration : Located property source: [BootstrapPropertySource {name='bootstrapProperties-product-service.yaml'}]

o.s.boot.SpringApplication: No active profile set, falling back to default profiles: default

o.s.boot.SpringApplication: Started application in 3.356 seconds (JVM running for 50.676)

o.s.c.e.event.RefreshEventListener : Refresh keys changed: [project.name]

访问:http://localhost:7070/config 结果如下:

Nacos 配置核心概念

配置

为什么需要配置?概念。

在系统开发过程中,开发者通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物理运行环境进行适配。配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成。配置变更是调整系统运行时的行为的有效手段。

配置管理

对配置的多维度管理。

系统配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动。

配置项

一个键值对 Key = Value。

一个具体的可配置的参数与其值域(一个键值对),通常以 param-key=param-value 的形式存在。例如我们常配置系统的日志输出级别(logLevel=INFO|WARN|ERROR) 就是一个配置项。

配置集

多个键值对,一般指一个配置文件。

一组相关或者不相关的配置项的集合称为配置集(多个键值对/一个配置文件)。在系统中,一个配置文件通常就是一个配置集,包含了系统各个方面的配置。例如,一个配置集可能包含了数据源、线程池、日志级别等配置项。

配置集 ID

给这个配置文件起一个全局唯一的 ID。

Nacos 中的某个配置集的 ID。配置集 ID 是组织划分配置的维度之一。Data ID 通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。Data ID 通常采用类 Java 包(如 com.taobao.tc.refund.log.level)的命名规则保证全局唯一性。此命名规则非强制。

配置分组

多个配置文件放在一起,形成组,一般用于区分项目。例如,某学校多应用之间的区分,教师应用 TEACHER_GROUP,学生应用 STUDENT_GROUP。

Nacos 中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如 Buy 或 Trade )对配置集进行分组,从而区分 Data ID 相同的配置集。当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。配置分组的常见场景:不同的应用或组件使用了相同的配置类型,如 database_url 配置和 MQ_topic 配置。

配置快照

缓存配置信息。

Nacos 的客户端 SDK 会在本地生成配置的快照。当客户端无法连接到 Nacos Server 时,可以使用配置快照显示系统的整体容灾能力。配置快照类似于 Git 中的本地 commit,也类似于缓存,会在适当的时机更新,但是并没有缓存过期(expiration)的概念。

命名空间

区分环境,比如:dev、test、prod 等等。

用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。

最佳实践

通常我们可以这样定义 Namespace,Group,DataId:

Namespace:代表不同的「环境」,如:开发、测试, 生产等;Group:代表某个「项目」,如:XX物流项目,XX教育项目;DataId:每个项目下往往有若干个「应用」,每个配置集(DataId)是一个应用的「主配置文件」

Namespace 命名空间

前面已经介绍过命名空间的概念,用于隔离多个环境,而每个应用在不同环境的同一个配置(如数据库数据源)的值是不一样的。因此,我们针对企业项目实际研发流程和环境进行规划。

如某软件公司拥有开发、测试、生产三套环境,那么我们应该建立三个 Namespace 进行区分。

创建命名空间

点击左侧菜单命名空间,看到默认有一个public(保留空间),点击右侧新建命名空间进行创建。

按下图的方式分别创建dev(开发环境)test(测试环境)prod(生产环境)三个命名空间。

最终结果如下:

指定命名空间

如果spring.cloud.nacos.config.namespace中没有指定名称空间,则使用 Nacos 的 public(保留空间)。还可以按以下方式指定自定义名称空间:

spring.cloud.nacos.config.namespace=b3404bc0-d7dc-4855-b519-570ed34b62d7

此配置必须在 bootstrap.yml 文件中。 spring.cloud.nacos.config.namespace 的值是命名空间的 ID,可以从 Nacos 控制台中检索 ID 的值。 添加配置时,请勿选择其他名称空间。 否则,将无法正确检索配置。

发布配置

选择配置管理配置列表页面,选择dev环境,点击最右侧+按钮新建配置。

Nacos Config 使用Data IDGroup来确定配置。

下图显示Data Idproduct-service.yaml,组使用默认组,并添加yaml格式的配置信息。

project:

name: SpringCloudAlibaba-DEV

org: Aliababa

获取配置

配置文件

bootstrap.yml

server:

port: 7070 # 端口

spring:

application:

name: product-service # 应用名称

cloud:

nacos:

config:

enabled: true # 如果不想使用 Nacos 进行配置管理,设置为 false 即可

server-addr: 127.0.0.1:8848 # Nacos Server 地址

group: DEFAULT_GROUP # 组,默认为 DEFAULT_GROUP

file-extension: yaml # 配置内容的数据格式,默认为 properties

namespace: 450a3f07-08ee-49f6-8213-9b04b06cd3cc # 对应 dev 环境

控制层

使用 Spring 的@Value注解来获取配置信息,${}中对应 Nacos 配置中心配置内容的 key,:后跟默认值。

并且通过 Spring Cloud 原生注解@RefreshScope实现配置自动更新。

package org.example.controller;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.cloud.context.config.annotation.RefreshScope;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;

import java.util.Map;

@RefreshScope

@RestController

public class ConfigController {

@Value("${project.name:}")

private String projectName;

@Value("${:}")

private String projectOrg;

@GetMapping("/config")

public MapgetConfig() {

Map configMap = new HashMap();

configMap.put("projectName", projectName);

configMap.put("projectOrg", projectOrg);return configMap;

}

}

测试

访问:http://localhost:7070/config 结果如下:

Group 组

Group 组信息可以在新建配置时进行指定,如下图:

配置管理

这一小节我们通过大量配图演示控制台的相关操作。

新建/编辑/删除/查询

右侧+新建配置。单条编辑或删除选择操作栏中的编辑或删除。批量删除勾选以后选择左下角红色删除。

可以通过Data IdGroup查询配置,还可以将查询结果导出。

导入/导出/克隆

前文提到命名空间用于隔离多个环境,每个应用在不同环境的同一个配置(如数据库数据源)的值是不一样的。也就是说可能大量的配置项都是相同的,个别差异的配置项需要额外修改,在这种情况下,如果一条条重新添加肯定非常不友好,我们可以通过导入导出功能实现。

比如,我们将dev环境下的配置先全选导出。

然后在test环境中导入,文件上传后将直接导入配置,请务必谨慎操作!

通过克隆也可以达到相同的效果,不同的是克隆可以额外修改Data IdGroup信息。

历史/回滚

选择配置管理历史版本页面,通过Data IdGroup查询历史,可以查看每个历史版本的详情,或选择回滚至该版本。

监听查询

Nacos 提供配置订阅者,也就是监听者查询能力,同时提供客户端当前配置的 MD5 校验值,以便帮助用户更好的检查配置变更以后是否推送到 Client 端。

选择配置管理监听查询页面,通过配置或IPData IdGroup查询。

权限控制

Nacos 提供了基于 RBAC 的权限控制,通过左侧权限控制菜单的用户列表角色管理权限管理实现,可以算是傻瓜式操作了,鼠标多点几下就会了。

公共配置

每个配置集对应一个应用,但是开发时我们可能会有一些公共配置被多个应用使用,这时候就需要扩展配置集或共享配置集来实现了。

扩展配置集

我们先创建三个配置集,如下:

Data ID: ext-config-common01.yaml

Group: DEFAULT_GROUP

Configuration format: YAML

Configuration content: common.name: common-service

Data ID: ext-config-common02.yaml

Group: GLOBAL_GROUP

Configuration format: YAML

Configuration content: global.name: global-service

Data ID: ext-config-common03.yaml

Group: REFRESH_GROUP

Configuration format: YAML

Configuration content: refresh.name: refresh-service

获取配置

配置文件

bootstrap.yml

server:

port: 7070 # 端口

spring:

application:

name: product-service # 应用名称

cloud:

nacos:

config:

enabled: true # 如果不想使用 Nacos 进行配置管理,设置为 false 即可

server-addr: 127.0.0.1:8848 # Nacos Server 地址

group: MALL_GROUP # 组,默认为 DEFAULT_GROUP

file-extension: yaml # 配置内容的数据格式,默认为 properties

namespace: 450a3f07-08ee-49f6-8213-9b04b06cd3cc # 对应 dev 环境

# 扩展配置集

ext-config[0]:

data-id: ext-config-common01.yaml # 配置集 id

ext-config[1]:

data-id: ext-config-common02.yaml # 配置集 id

group: GLOBAL_GROUP # 组,默认为 DEFAULT_GROUP

ext-config[2]:

data-id: ext-config-common03.yaml # 配置集 id

group: REFRESH_GROUP # 组,默认为 DEFAULT_GROUP

refresh: true # 是否支持动态刷新

总结:

通过配置spring.cloud.nacos.config.ext-config[n].data-id来支持多个配置集。通过配置spring.cloud.nacos.config.ext-config[n].group来定制配置组。如果未指定,则使用默认组。通过配置spring.cloud.nacos.config. config[n].refresh来控制该配置集是否支持配置的动态刷新。默认情况下不支持。

控制层

使用 Spring 的@Value注解来获取配置信息,${}中对应 Nacos 配置中心配置内容的 key,:后跟默认值。

并且通过 Spring Cloud 原生注解@RefreshScope实现配置自动更新。

package org.example.controller;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.cloud.context.config.annotation.RefreshScope;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;

import java.util.Map;

@RefreshScope

@RestController

public class ConfigController {

@Value("${common.name:}")

private String commonName;

@Value("${global.name:}")

private String globalName;

@Value("${refresh.name:}")

private String refreshName;

@GetMapping("/extConfig")

public MapgetExtConfig() {

Map configMap = new HashMap();

configMap.put("commonName", commonName);

configMap.put("globalName", globalName);

configMap.put("refreshName", refreshName);return configMap;

}

}

测试

访问:http://localhost:7070/extConfig 结果如下:

共享配置集

通过共享配置集的方式也可以实现公共配置的功能,唯一的区别就是共享配置集无法设置组信息,只获取 DEFAULT_GROUP。具体实现方式如下:

server:

port: 7070 # 端口

spring:

application:

name: product-service # 应用名称

cloud:

nacos:

config:

enabled: true # 如果不想使用 Nacos 进行配置管理,设置为 false 即可

server-addr: 127.0.0.1:8848 # Nacos Server 地址

group: MALL_GROUP # 组,默认为 DEFAULT_GROUP

file-extension: yaml # 配置内容的数据格式,默认为 properties

namespace: 450a3f07-08ee-49f6-8213-9b04b06cd3cc # 对应 dev 环境

# 共享配置集

shared-dataids: ext-config-common01.yaml,ext-config-common02.yaml,ext-config-common03.yaml # 多个配置集逗号隔开

refreshable-dataids: ext-config-common01.yaml # 哪个配置集支持动态刷新

访问:http://localhost:7070/extConfig 结果如下:

配置优先级

Spring Cloud Alibaba Nacos Config 提供了三种从 Nacos 拉取配置的功能:

A:通过内部相关规则(应用名、配置内容的数据格式等)自动生成相关的 Data Id 配置;B:通过配置spring.cloud.nacos.config.ext-config[n].data-id来支持多个配置集。同时配置多个配置集时,优先级关系根据n的值决定,值越大,优先级越高;C:通过配置spring.cloud.nacos.config.shared-dataids配置多个共享配置集;

当三种方式同时使用时,优先级关系为:A > B > C。

Nacos 集群环境搭建

集群模式跟我们平时进行扩容是一样的,可以通过 Nginx 转发到多个节点,如下图:

如果为了方便省事,可以使用直连 ip 模式,配置中按如下编写即可:

spring:

# 配置 Nacos 配置中心

cloud:

nacos:

config:

enabled: true # 如果不想使用 Nacos 进行配置管理,设置为 false 即可

server-addr: 192.168.10.101:8848,192.168.10.102:8848,192.168.10.103:8848 # Nacos 服务器地址

PS:如果只是为了学习的话直接在本地启动 3 个实例,通过修改端口的方式即可。本文使用三台服务器的方式带大家搭建环境,其实这种方式反而更简单。

环境准备

Nacos 单节点,也就是我们刚才使用的standalone模式,默认使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况,0.7 版本以后增加了支持 MySQL 数据源能力。集群搭建的时候我们需要将 Nacos 对接 Mysql 进行数据存储。如果要搭建高可用的集群环境,至少要满足以下条件:

JDK 1.8+;Maven 3.2.x+;MySQL 5.6.5+(生产使用建议至少主备模式,或者采用高可用数据库);3个或3个以上Nacos节点才能构成集群。

下载源码或者安装包

可以通过源码和发行包两种方式来获取 Nacos。

源码方式

从 Github 上下载源码方式。

git clone /alibaba/nacos.git

cd nacos/

mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U

ls -al distribution/target/

// change the $version to your actual path

cd distribution/target/nacos-server-$version/nacos/bin

发行包方式

您可以从 /alibaba/nacos/releases 下载最新稳定版本的nacos-server包。

配置集群配置文件

将安装包解压。

tar -zxvf nacos-server-1.3.0.tar.gz -C /usr/local/ # 解压文件至 local 目录

在 Nacos 的解压目录nacos/conf目录下,复制配置文件cluster.conf.example并重命名为cluster.conf,每行配置成ip:port。(请配置3个或3个以上节点)

192.168.10.101:8848

192.168.10.102:8848

192.168.10.103:8848

配置 MySQL 数据库

Nacos 在0.7版本之前,默认使用的是嵌入式数据库Apache Derby来存储数据(内嵌的数据库会随着 Nacos 一起启动,无需额外安装);0.7版本及以后,增加了对MySQL数据源的支持。

MySQL数据源

环境要求:MySQL 5.6.5+(生产使用建议至少主备模式,或者采用高可用数据库);

初始化 MySQL 数据库

创建数据库nacos_config

SQL源文件地址:/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql ,或者在nacos-server解压目录conf下,找到nacos-mysql.sql文件,运行该文件,结果如下:

application.properties 配置

修改nacos/conf/application.properties文件的以下内容。

最终修改结果如下:

#*************** Config Module Related Configurations ***************#

### If user MySQL as datasource:

# 指定数据源为 MySQL

spring.datasource.platform=mysql

### Count of DB:

# 数据库实例数量

db.num=1

# 数据库连接信息,如果是 MySQL 8.0+ 版本需要添加 serverTimezone=Asia/Shanghai

### Connect URL of DB:

db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=Asia/Shanghai

db.user=root

db.password=1234

如果你和我一样使用的是 MySQL 8.0+ 版本,那么启动 Nacos 时肯定会报错。莫慌,在 Nacos 安装目录下新建plugins/mysql文件夹,并放入 8.0+ 版本的 mysql-connector-java-8.0.xx.jar,重启 Nacos 即可,启动时会提示更换了 MySQL 的 driver-class 类。

启动服务器

Linux/Unix/Mac

在 Nacos 的解压目录nacos/bin目录下启动。

启动命令(在没有参数模式,是集群模式):

sh startup.sh

查看启动记录

可通过/nacos/logs/nacos.log(详细日志)或/nacos/conf/start.out(启动记录)的输出内容查看是否启动成功。

查看命令:

tail -f /usr/local/nacos/logs/start.out

启动成功输出结果:

-04-29 22:47:56,204 INFO Nacos is starting...

-04-29 22:47:56,556 INFO Nacos logs files: /usr/local/nacos/logs/

-04-29 22:47:56,556 INFO Nacos conf files: /usr/local/nacos/conf/

-04-29 22:47:56,556 INFO Nacos data files: /usr/local/nacos/data/

-04-29 22:47:56,556 INFO Nacos started successfully in cluster mode.

访问

访问以下链接,默认用户名/密码是 nacos/nacos :

http://192.168.10.101:8848/nacos/http://192.168.10.102:8848/nacos/http://192.168.10.103:8848/nacos/

从下图可以看到集群节点共有三个,其中192.168.10.101:8848leader

关闭服务器

Linux/Unix/Mac

sh shutdown.sh

测试

直连 ip 模式

发布配置

选择配置管理配置列表页面,点击最右侧+按钮新建配置。

Data ID: product-service.yaml

Group: DEFAULT_GROUP

Configuration format: YAML

Configuration content: project.name: SpringCloudAlibaba

: Aliababa

获取配置

bootstrap.yml

server:

port: 7070 # 端口

spring:

application:

name: product-service # 应用名称

cloud:

nacos:

config:

enabled: true # 如果不想使用 Nacos 进行配置管理,设置为 false 即可

server-addr: 192.168.10.101:8848,192.168.10.102:8848,192.168.10.103:8848 # Nacos 服务器地址,集群版直连 ip 模式

group: DEFAULT_GROUP # 组,默认为 DEFAULT_GROUP

file-extension: yaml # 配置内容的数据格式,默认为 properties

使用之前的控制层代码,访问:http://localhost:7070/config 结果如下:

Nginx 转发

再启动一台服务器192.168.10.100,安装 Nginx,配置代理转发规则。

upstream nacos {

server 192.168.10.101:8848;

server 192.168.10.102:8848;

server 192.168.10.103:8848;

}

获取配置

bootstrap.yml

server:

port: 7070 # 端口

spring:

application:

name: product-service # 应用名称

cloud:

nacos:

config:

enabled: true # 如果不想使用 Nacos 进行配置管理,设置为 false 即可

server-addr: 192.168.10.100:80 # Nacos 服务器地址,集群版 Nginx 转发

group: DEFAULT_GROUP # 组,默认为 DEFAULT_GROUP

file-extension: yaml # 配置内容的数据格式,默认为 properties

使用之前的控制层代码,访问:http://localhost:7070/config 结果如下:

至此 Nacos 配置中心所有的知识点就讲解结束了。

微信扫描二维码(长按识别)关注我的公众号

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。