Spring Cloud Alibaba(02)——Nacos服务注册和配置中心

Spring Cloud Alibaba(02)——Nacos服务注册和配置中心

前言:Spring Cloud Alibaba系列所有的微服务模块都是建在springcloud-guigu父工程下面,该父工程在Spring Cloud(02)——搭建订单-支付微服务模块的父工程中搭建。

1、Nacos简介

Nacos致力于发现、配置和管理微服务。它提供了一组简单而有用的特性,能够实现动态服务发现、服务配置管理以及服务和流量管理。

Nacos可以更容易、更快地构建、交付和管理微服务平台。它是支持以服务为中心的现代应用程序架构的基础设施,它采用微服务或云本地方法。

Nacos就是注册中心 + 配置中心的组合,等价于 Spring Cloud Netflix 的 Eureka + Config + Bus

各版本注册中心的比较:Nacos可以在CP和CA模式之间切换。

在这里插入图片描述

Nacos官方网站: http://www.google.com/sea….tin round+rock+texas)

Nacos GitHub地址:https://github.com/alibaba/Nacos

Nacos 中文文档:https://nacos.io/zh-cn/docs/what-is-nacos.html

2、安装并运行Nacos

Nacos下载地址:https://github.com/alibaba/nacos/tags,下载后解压

从bin目录打开cmd,输入startup.cmd命令,运行nacos:

在这里插入图片描述

访问请求: localhost:8848/nacos

在这里插入图片描述

账号密码都是nacos,点击提交:

在这里插入图片描述

nacos安装运行成功!

3、Nacos作为服务注册中心

3.1、基于Nacos的服务提供者

1、创建 cloudalibaba-provider-payment9001 模块

2、导入pom依赖

<dependencies>

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



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

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>

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

</dependencies>

3、编写yml配置文件

server:
  port: 9001

spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # 配置Nacos的地址
#暴露端点        
management:
  endpoints:
    web:
      exposure:
        include: '*'

4、创建主启动类

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

5、编写业务代码

@RestController
public class PaymentController {
    
    @Value("$server.port")
    private String serverPort;
    
    @GetMapping(value = "/payment/nacos/{id}")
    public String getPayment(@PathVariable("id") Integer id){
        return " Hello Nacos  serverPort: "+serverPort + "id: "+id; 
    }

6、测试

  1. 启动nacos
  2. 启动cloudalibaba-provider-payment9001模块
  3. 访问请求:localhost:8848/nacos

在这里插入图片描述

服务已注册进nacos注册中心

  1. 访问请求:http://localhost:9001/payment/nacos/2

在这里插入图片描述

测试成功!

为了搭建下面负载均衡的演示环境:根据9001创建9002模块。端口不同,其他都一样。

在这里插入图片描述

服务提供者集群环境搭建成功。

3.2、基于Nacos的服务消费者

1、创建 cloudalibaba-nacos-consumer-order83 模块

2、导入pom依赖

<dependencies>

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


    <dependency>
        <groupId>com.cheng.springcloud</groupId>
        <artifactId>cloud-api-commons</artifactId>
        <version>${project.version}</version>
    </dependency>

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

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>

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


</dependencies>

3、编写yml配置文件

server:
  port: 83

spring:
  application:
    name: nacos-order-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848

#消费者8.要去访问的微服务名称
service-url:
  nacos-user-service: http://nacos-payment-provider

4.创建主启动类

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

5、编写配置类,因为nacos集成了ribbon,所以可以结合RestTemplate实现负载均衡和远程调用

@Configuration
public class ConfigBean {
    
    @Bean
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

6、业务类

@RestController
@Slf4j
public class OrderController {

    @Resource
    private RestTemplate restTemplate;

    @Value("${server-url.nacos-user-service}") //把服务地址写在配置文件里,实现配置和代码分离
    private String Server_Url;

    @GetMapping(value = "/consumer/payment/nacos/{id}")
    public String OrderInfo(@PathVariable("id") Integer id){
        return restTemplate.getForObject(Server_Url+"/payment/nacos"+id,String.class);

    }
    
}

7、测试

  1. 启动nacos启动
  2. 启动 cloudalibaba-provider-payment9001 和 cloudalibaba-provider-payment9002模块
  3. 启动 cloudalibaba-nacos-consumer-order83模块
  4. 访问请求:http://localhost:8848/nacos,注册成功。

在这里插入图片描述

  1. 访问请求:访问请求:http://localhost:9001/payment/nacos/22,自测通过!
    在这里插入图片描述

  2. 访问请求http://localhost:83/consumer/payment/nacos/22

第一次访问:

在这里插入图片描述

再一次访问:

在这里插入图片描述

继续访问,在9001和9002中轮流切换。

成功实现了负载均衡的默认算法轮询。

4、Nacos作为服务配置中心

4.1、基础配置

1、创建 cloudalibaba-config-nacos-client3377 模块

2、导入pom依赖

<dependencies>

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

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

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

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>

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

</dependencies>

3、编写yml配置文件

bootstrap.yml

server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848  # nacos作为注册中心的地址
      config:
        server-addr: localhost:8848  # nacos作为配置中心的地址
        file-extension: yaml  # 指定yaml格式的配置

application.yml

spring:
  profiles:
    active: dev  #开发环境

4、创建主启动类

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

5、业务类

@RestController
@RefreshScope  //支持nacos的动态刷新功能
public class ConfigClientController {
    
    @Value("${config.info}")
    private String configInfo;
    
    @GetMapping(value = "/config/info")
    public String getConfigInfo(){
        return configInfo;
    }
    
}

6、在Nacos中添加配置信息

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

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

结合上面的yml配置文件和data id的格式,在nacos中新建配置文件,并点击发布:

在这里插入图片描述

发布成功!

在这里插入图片描述

7、测试

  1. 启动nacos

  2. 启动cloudalibaba-config-nacos-client3377 模块

  3. 访问请求:http://localhost:3377/config/info

在这里插入图片描述

  1. 动态刷新,修改nacos中配置文件的版本号为 version=2.0,再次访问请求:http://localhost:3377/config/info,会发现配置也刷新了:

在这里插入图片描述

4.2、分类配置

SpringCloud Alibaba Nacos 配置中心有三种配置方法,分别为:

1、Data ID配置方案

2、Group配置方案

3、NameSpace配置方案

在这里插入图片描述

最外层的namespace是可以用于区分部署环境,Group和Data ID逻辑上区分两个目标对象。

1、Data ID配置方案

1、在application.yml中切换环境为测试环境

spring:
  profiles:
    active: test    #测试环境

2、在nacos配置中心再新建一个test测试配置文件,用于测试环境

在这里插入图片描述

现在我们的nacos的配置中心中有了两个Data ID:

在这里插入图片描述

3、测试

访问请求:http://localhost:3377/config/info

在这里插入图片描述

成功切换到测试环境。

2、Group配置方案

通过Group实现环境分区

1、在nacos中建两个相同的DataID,但group不同

在这里插入图片描述

2、在application.yml中切换环境

spring:
  profiles:
    active: info

3、在bootstrap.yml中的config下设置group属性

设置为开发组DEV_GROUP

config:
  server-addr: localhost:8848  # nacos作为配置中心的地址
  file-extension: yaml  # 指定yaml格式的配置
  group: DEV_GROUP  # 设置为开发组

访问请求:http://localhost:3377/config/info

在这里插入图片描述

设置为开发组TEST_GROUP

config:
  server-addr: localhost:8848  # nacos作为配置中心的地址
  file-extension: yaml  # 指定yaml格式的配置
  group: TEST_GROUP

访问请求:http://localhost:3377/config/info

在这里插入图片描述

3、NameSpace配置方案

1、在nacos中新建两个命名空间,一个test命名空间,一个dev命名空间,每个空间都有命名空间ID

在这里插入图片描述

2、在dev命名空间下建三个相同的 DataID,但group不同,如下:

在这里插入图片描述

3、实现在dev命名空间中切换group

使用TEST_GROUP

config:
  server-addr: localhost:8848  # nacos作为配置中心的地址
  file-extension: yaml  # 指定yaml格式的配置
  group: TEST_GROUP
  namespace: b90af516-51e1-4b5c-8741-f6f51cb55595  #要使用哪个命名空间,就绑定命名空间ID

同理,要使用其他组,向上面一样配置即可,但前提要在同一个命名空间中

5、Nacos集群和持久化配置

1、Linux系统安装Nacos

  1. 压缩包下载地址:https://github.com/alibaba/nacos/releases/tag/

  2. 上传到Linux服务器

  3. 解压

    tar -zxvf nacos-server-1.3.1.tar.gz
    
  4. 解压后会出现一个名为nacos的文件夹,查看这个文件夹的内容:

在这里插入图片描述

2、Linux服务器上mysql数据库配置

1.找到要执行的sql脚本,在conf目录下面,就是上面的conf目录:

在这里插入图片描述

  1. 复制sql脚本文件,下面是sql脚本中内容:
/*
 * Copyright 1999-2018 Alibaba Group Holding Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info   */
/******************************************/
CREATE TABLE `config_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(255) DEFAULT NULL,
  `content` longtext NOT NULL COMMENT 'content',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',
  `app_name` varchar(128) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  `c_desc` varchar(256) DEFAULT NULL,
  `c_use` varchar(64) DEFAULT NULL,
  `effect` varchar(64) DEFAULT NULL,
  `type` varchar(64) DEFAULT NULL,
  `c_schema` text,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_aggr   */
/******************************************/
CREATE TABLE `config_info_aggr` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(255) NOT NULL COMMENT 'group_id',
  `datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
  `content` longtext NOT NULL COMMENT '内容',
  `gmt_modified` datetime NOT NULL COMMENT '修改时间',
  `app_name` varchar(128) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';


/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_beta   */
/******************************************/
CREATE TABLE `config_info_beta` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL COMMENT 'content',
  `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_tag   */
/******************************************/
CREATE TABLE `config_info_tag` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  `tag_id` varchar(128) NOT NULL COMMENT 'tag_id',
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL COMMENT 'content',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_tags_relation   */
/******************************************/
CREATE TABLE `config_tags_relation` (
  `id` bigint(20) NOT NULL COMMENT 'id',
  `tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
  `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  `nid` bigint(20) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`nid`),
  UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = group_capacity   */
/******************************************/
CREATE TABLE `group_capacity` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = his_config_info   */
/******************************************/
CREATE TABLE `his_config_info` (
  `id` bigint(64) unsigned NOT NULL,
  `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `data_id` varchar(255) NOT NULL,
  `group_id` varchar(128) NOT NULL,
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL,
  `md5` varchar(32) DEFAULT NULL,
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `src_user` text,
  `src_ip` varchar(20) DEFAULT NULL,
  `op_type` char(10) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`nid`),
  KEY `idx_gmt_create` (`gmt_create`),
  KEY `idx_gmt_modified` (`gmt_modified`),
  KEY `idx_did` (`data_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';


/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = tenant_capacity   */
/******************************************/
CREATE TABLE `tenant_capacity` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';


CREATE TABLE `tenant_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `kp` varchar(128) NOT NULL COMMENT 'kp',
  `tenant_id` varchar(128) default '' COMMENT 'tenant_id',
  `tenant_name` varchar(128) default '' COMMENT 'tenant_name',
  `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
  `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
  `gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
  `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';

CREATE TABLE `users` (
	`username` varchar(50) NOT NULL PRIMARY KEY,
	`password` varchar(500) NOT NULL,
	`enabled` boolean NOT NULL
);

CREATE TABLE `roles` (
	`username` varchar(50) NOT NULL,
	`role` varchar(50) NOT NULL,
	UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
);

CREATE TABLE `permissions` (
    `role` varchar(50) NOT NULL,
    `resource` varchar(255) NOT NULL,
    `action` varchar(8) NOT NULL,
    UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
);

INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);

INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

3.把sql脚本复制粘贴到根目录的tmp文件下

把脚本文件复制粘贴到根目录的tmp文件下(可以用xftp进行传输),因为tmp目录所有用户都可以读取,后面才能被执行:

在这里插入图片描述

  1. 执行sql脚本

    登录mysql

    mysql  -uroot -p
    

在这里插入图片描述

然后查看是否有config_info数据库,若没有,则创建一个

在这里插入图片描述

切换到config_info数据库 ,并执行脚本

source /tmp/nacos-mysql.sql

在这里插入图片描述

查看config_info数据库里的内容:

在这里插入图片描述

sql脚本执行成功!

3、切换成Linux服务器上的数据库

1、找到application.properties配置文件

也是在conf目录下:在修改某配置文件时,可以使用cp命令备份一份

在这里插入图片描述

2、添加内容:

使用vim编辑器打开application.properties

在这里插入图片描述

内容如下:

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:myql://39.105.112.131:3306/config_info?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=

如果Linux是在本地,端口号就用127.0.0.1,如果是在远程服务器上,就是自己服务器的IP。

4、Linux服务器上nacos集群的配置

1、找到conf目录下的cluster.conf.example文件,进行备份,备份名为clu.conf

2、查看Linux可以识别的IP

执行命令:

hostname -i

3、用vim编辑器打开clu.conf文件,进行修改:

把文件原有的内容注释,并添加下面内容,然后保存退出vim:

在这里插入图片描述

注:其中IP为 hostname -i 查出来的Linux可以识别的IP

这样,我们就梳理出来3台nacos集群的不同服务端口号。

5、编辑Nacos的启动脚本startup.sh,使它能够接收不同的启动端口

/mynacos/nacos/bin目录下有startup.sh

平时单机版的启动,都是./startup.sh即可。

但是集群启动,我们希望可以类似其它软件的shell命令,传递不同的端口号启动不同的nacos实例。

比如:命令:``./startup.sh -p 3333`表示启动端口号为3333的nacos服务器实例,和上一步的clu.conf配置的端口号一致。

1、用vim编辑器打开startup.sh进行修改

2、添加如下两个配置

在这里插入图片描述

nohup $JAVA -Dserver.port=${PORT} ${JAVA_OPT} nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1 &

在这里插入图片描述

最后保存退出!

6、配置Nginx,由它作为负载均衡器

1、找到nginx配置文件nginx.conf,先备份一下

在这里插入图片描述

2、用vim编辑器打开nginx.conf,进行修改

修改前:

在这里插入图片描述

修改后:

在这里插入图片描述

上面的ip按照自己的情况来填,然后保存退出。

7、测试

切换到nacos的bin目录下,开启nacos集群测试:
在这里插入图片描述

在这里插入图片描述

nacos集群开启成功!

通过nginx访问nacos:

  1. nginx自测:

在这里插入图片描述

自测成功!

  1. 访问nacos:访问请求:http://39.105.112.131:1111/nacos/#/login ,nacos集群配置成功!

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

万里顾—程

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

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

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

打赏作者

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

抵扣说明:

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

余额充值