首页 > 其他分享 >Nacos-集群搭建Demo

Nacos-集群搭建Demo

时间:2023-08-01 17:28:58浏览次数:29  
标签:COMMENT varchar Demo Nacos nacos 集群 NULL id tenant

# 1.集群结构图

3个nacos节点,然后一个负载均衡器代理3个Nacos。这里负载均衡器可以使用nginx。



三个nacos节点的地址: | 节点 | ip | port | | ------ | ------------- | ---- | | nacos1 | 192.168.150.1 | 8845 | | nacos2 | 192.168.150.1 | 8846 | | nacos3 | 192.168.150.1 | 8847 |


# 2.搭建集群

搭建集群的基本步骤:
  • - 搭建数据库,初始化数据库表结构
  • - 下载nacos安装包
  • - 配置nacos
  • - 启动nacos集群
  • - nginx反向代理


## 2.1.初始化数据库

 

Nacos默认数据存储在内嵌数据库Derby中,不属于生产可用的数据库。 官方推荐的最佳实践是使用带有主从的高可用数据库集群,主从模式的高可用数据库可以参考**传智教育**的后续高手课程。 这里我们以单点的数据库为例来讲解。 首先新建一个数据库,命名为nacos,而后导入下面的SQL:  
查看代码
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) DEFAULTNULL,
`content` longtext NOT NULL COMMENT 'content',
`md5`varchar(32) DEFAULTNULL COMMENT 'md5',
`gmt_create`datetimeNOT NULLDEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified`datetimeNOT NULLDEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user`text COMMENT 'source user',
`src_ip`varchar(50) DEFAULTNULL COMMENT 'source ip',
`app_name`varchar(128) DEFAULTNULL,
`tenant_id`varchar(128) DEFAULT'' COMMENT '租户字段',
`c_desc`varchar(256) DEFAULTNULL,
`c_use`varchar(64) DEFAULTNULL,
`effect`varchar(64) DEFAULTNULL,
`type`varchar(64) DEFAULTNULL,
`c_schema`text,
PRIMARY KEY (`id`),
UNIQUEKEY`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`datetimeNOT NULL COMMENT '修改时间',
`app_name`varchar(128) DEFAULTNULL,
`tenant_id`varchar(128) DEFAULT'' COMMENT '租户字段',
PRIMARY KEY (`id`),
UNIQUEKEY`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) DEFAULTNULL COMMENT 'app_name',
`content` longtext NOT NULL COMMENT 'content',
`beta_ips`varchar(1024) DEFAULTNULL COMMENT 'betaIps',
`md5`varchar(32) DEFAULTNULL COMMENT 'md5',
`gmt_create`datetimeNOT NULLDEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified`datetimeNOT NULLDEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user`text COMMENT 'source user',
`src_ip`varchar(50) DEFAULTNULL COMMENT 'source ip',
`tenant_id`varchar(128) DEFAULT'' COMMENT '租户字段',
PRIMARY KEY (`id`),
UNIQUEKEY`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) DEFAULTNULL COMMENT 'app_name',
`content` longtext NOT NULL COMMENT 'content',
`md5`varchar(32) DEFAULTNULL COMMENT 'md5',
`gmt_create`datetimeNOT NULLDEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified`datetimeNOT NULLDEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user`text COMMENT 'source user',
`src_ip`varchar(50) DEFAULTNULL COMMENT 'source ip',
PRIMARY KEY (`id`),
UNIQUEKEY`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) DEFAULTNULL 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`),
UNIQUEKEY`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 NULLDEFAULT'' COMMENT 'Group ID,空字符表示整个集群',
`quota`int(10) unsigned NOT NULLDEFAULT'0' COMMENT '配额,0表示使用默认值',
`usage`int(10) unsigned NOT NULLDEFAULT'0' COMMENT '使用量',
`max_size`int(10) unsigned NOT NULLDEFAULT'0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
`max_aggr_count`int(10) unsigned NOT NULLDEFAULT'0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
`max_aggr_size`int(10) unsigned NOT NULLDEFAULT'0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
`max_history_count`int(10) unsigned NOT NULLDEFAULT'0' COMMENT '最大变更历史数量',
`gmt_create`datetimeNOT NULLDEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified`datetimeNOT NULLDEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUEKEY`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) DEFAULTNULL COMMENT 'app_name',
`content` longtext NOT NULL,
`md5`varchar(32) DEFAULTNULL,
`gmt_create`datetimeNOT NULLDEFAULT CURRENT_TIMESTAMP,
`gmt_modified`datetimeNOT NULLDEFAULT CURRENT_TIMESTAMP,
`src_user`text,
`src_ip`varchar(50) DEFAULTNULL,
`op_type`char(10) DEFAULTNULL,
`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 NULLDEFAULT'' COMMENT 'Tenant ID',
`quota`int(10) unsigned NOT NULLDEFAULT'0' COMMENT '配额,0表示使用默认值',
`usage`int(10) unsigned NOT NULLDEFAULT'0' COMMENT '使用量',
`max_size`int(10) unsigned NOT NULLDEFAULT'0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
`max_aggr_count`int(10) unsigned NOT NULLDEFAULT'0' COMMENT '聚合子配置最大个数',
`max_aggr_size`int(10) unsigned NOT NULLDEFAULT'0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
`max_history_count`int(10) unsigned NOT NULLDEFAULT'0' COMMENT '最大变更历史数量',
`gmt_create`datetimeNOT NULLDEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified`datetimeNOT NULLDEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUEKEY`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) DEFAULTNULL COMMENT 'tenant_desc',
`create_source`varchar(32) DEFAULTNULL COMMENT 'create_source',
`gmt_create`bigint(20) NOT NULL COMMENT '创建时间',
`gmt_modified`bigint(20) NOT NULL COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUEKEY`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 NULLPRIMARY KEY,
`password`varchar(500) NOT NULL,
`enabled`booleanNOT NULL
);


CREATE TABLE `roles` (
`username`varchar(50) NOT NULL,
`role`varchar(50) NOT NULL,
UNIQUEINDEX`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,
UNIQUEINDEX`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');




## 2.2.下载nacos

nacos在GitHub上有下载地址:https://github.com/alibaba/nacos/tags,可以选择任意版本下载。 本例中才用1.4.1版本:

 

## 2.3.配置Nacos

解压到任意非中文目录下 目录说明: - bin:启动脚本 - conf:配置文件 进入nacos的conf目录,修改配置文件cluster.conf.example,重命名为cluster.conf: 然后添加内容: ``` 127.0.0.1:8845 127.0.0.1.8846 127.0.0.1.8847 ``` 然后修改application.properties文件,添加数据库配置 ```properties spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user.0=root db.password.0=123 ```

## 2.4.启动

 

将nacos文件夹复制三份,分别命名为:nacos1、nacos2、nacos3 然后分别修改三个文件夹中的application.properties,

nacos1:

```properties server.port=8845 ```

nacos2:

```properties server.port=8846 ```

nacos3:

```properties server.port=8847 ```




然后分别启动三个nacos节点:
startup.cmd


## 2.5.nginx反向代理

下载nginx安装包 解压到任意非中文目录下 修改conf/nginx.conf文件,配置如下: ```nginx upstream nacos-cluster { server 127.0.0.1:8845; server 127.0.0.1:8846; server 127.0.0.1:8847; } server { listen 80; server_name localhost; location /nacos { proxy_pass http://nacos-cluster; } } ``` 而后在浏览器访问:http://localhost/nacos即可。

 

代码中application.yml文件配置如下:
spring:
    cloud:
        nacos:
            server-addr: localhost:80# Nacos地址


## 2.6.优化

- 实际部署时,需要给做反向代理的nginx服务器设置一个域名,这样后续如果有服务器迁移nacos的客户端也无需更改配置. - Nacos的各个节点应该部署到多个不同服务器,做好容灾和隔离



标签:COMMENT,varchar,Demo,Nacos,nacos,集群,NULL,id,tenant
From: https://www.cnblogs.com/bcboke/p/17597962.html

相关文章

  • Nacos-配置管理
    统一配置管理在Nacos中添加配置信息:在弹出表单中填写配置信息配置获取的步骤如下: 引入Nacos的配置管理客户端依赖:<!--nacos的配置管理依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-a......
  • Linux安装部署seata集群模式
    第一步:下载seata安装包下载地址:https://seata.io/zh-cn/blog/download.html解压如下进入conf文件夹编辑registry.conf文件:点击查看代码 registry{#file、nacos、eureka、redis、zk、consul、etcd3、sofatype="nacos"nacos{application="seata-ser......
  • Nacos-服务发现
    简介  Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。  服务注册到Nacos 在父工程中添加spring-cloud-alilbaba的管理依赖:<dependency><groupId>org.springframework.cloud</groupId>......
  • 阿里云率先荣获容器集群稳定性先进级认证
    7月25日,由中国信通院发起的“2023稳保体系”评估结果在可信云大会现场公布,阿里云容器服务ACK成为首批通过“云服务稳定运行能力-容器集群稳定性”评估的产品,并荣获“先进级”认证。云原生技术正在激活应用构建新范式,构筑企业业务运行新基石。在推动各行各业拥抱云原生、用......
  • 闲置资源优化,轻松检查集群中的空闲成本
    作者:梁成昊(景祁)前言Kubernetes提供了对计算、网络、存储资源的抽象,提升了集群资源管理的效率。然而,由于用户不需要直接管理底层资源,可能导致部分闲置资源未及时发现,造成成本浪费。在企业IT成本治理过程中,如何发现并处理这部分资源,是成本优化的重要环节。为解决上述问题,阿里......
  • karmada多策略的多集群调度
    不同调度策略下的集群分发能力:ClusterAffinity:基于ClusterName、Label、Field的定向调度。Toleration:基于Taint和Toleration的调度。SpreadConstraint:基于集群拓扑的调度。ReplicasScheduling:针对有实例的工作负载的复制模式与拆分模式。差异化配置(Overri......
  • karmada跨集群服务治理
    多集群服务发现:使用ServiceExport和ServiceImport,实现跨集群的服务发现。多集群网络支持:使用Submariner打通集群间容器网络。使用ErieCanal实现跨集群的服务治理与ErieCanal集成支持跨集群的服务治理。 ......
  • 大数据管理框架CDP集群搭建
    1搭建准备HostNameIP内存CPU磁盘cdp01172.29.0.11016G4核100Gcdp02172.29.0.11116G4核100Gcdp03172.29.0.11216G4核100G组件版本ClouderaManager7.1.4CDH7.1.7OpenJDK1.8.0_372CentOS7.6MySQL8.0.342基础......
  • Java面试题 P24:Redis篇:redis集群有哪些方案?
    在Redis中提供的集群方案总共有三种:(1)主从模式(2)哨兵模式(3)分片集群redis主从数据同步的流程时什么?      ......
  • Hadoop集群相关理解
    Hadoop集群简介Hadoop集群模式安装安装包获得Hadoop安装包、源码包下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/进入到这样一个界面:源码包找这个:官方编译安装包找这个:一般情况下,下载官方编译安装包即可!安装完成后,就需要进行下面的几个步骤:......