20、SpringCloud实战:Nacos集群和Nginx代理(二十)

SpringCloud无介绍快使用,Nacos集群和Nginx代理(二十)

  • 问题背景
  • nacos命名空间
  • nacos集群和持久化
  • nginx配置
  • Lyric: 几个高级和弦 几个切分音

问题背景

从零开始学springcloud微服务项目
注意事项:

  • 约定 > 配置 > 编码
  • IDEA版本2021.1
  • 这个项目,我分了很多篇章,每篇文章一个操作步骤,目的是显得更简单明了
  • controller调service,service调dao
  • 默认安装nginx
  • 项目源码以及sentinel安装包

nacos命名空间

1默认命名空间为:public
*
2创建新分组
*

*
3更改bootstrap和application

spring:
  profiles:
    #active: dev # 表示开发环境
    active: info

# nacos配置
server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址 #Nacos服务注册中心地址
      config:
        server-addr: localhost:8848 #配置Nacos地址 #Nacos作为配置中心地址
        file-extension: yml #指定yml格式的配置
        group: DEV_GROUP  #设置分组
# ${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
# nacos-config-client-dev.yml

*

4新建命名空间
*

*
5 bootstap添加命名空间:namespace: da7f89ef-5fb2-49c5-96bb-6fabcf44d1d5 #选择dev

# nacos配置
server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址 #Nacos服务注册中心地址
      config:
        server-addr: localhost:8848 #配置Nacos地址 #Nacos作为配置中心地址
        file-extension: yml #指定yml格式的配置
        namespace: da7f89ef-5fb2-49c5-96bb-6fabcf44d1d5 #选择dev
        group: DEV_GROUP  #设置分组
# ${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
# nacos-config-client-dev.yml

nacos集群和持久化

1Nacos默认自带的是嵌入式数据库derby,集群搭建会产生数据一致性问题,所以需要mysql解决问题
*
*

2在nacos-server-2.0.3\nacos\conf目录下找到sql脚本

 
CREATE DATABASE nacos_config;
USE nacos_config;
 
/******************************************/
/*   数据库全名 = 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 '2010-05-05 00:00:00' COMMENT '创建时间',
  gmt_modified DATETIME NOT NULL DEFAULT '2010-05-05 00:00:00' 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 '2010-05-05 00:00:00' COMMENT '创建时间',
  gmt_modified DATETIME NOT NULL DEFAULT '2010-05-05 00:00:00' 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 '2010-05-05 00:00:00' COMMENT '创建时间',
  gmt_modified DATETIME NOT NULL DEFAULT '2010-05-05 00:00:00' 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 '2010-05-05 00:00:00' COMMENT '创建时间',
  gmt_modified DATETIME NOT NULL DEFAULT '2010-05-05 00:00:00' 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 '2010-05-05 00:00:00',
  gmt_modified DATETIME NOT NULL DEFAULT '2010-05-05 00:00:00',
  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 '2010-05-05 00:00:00' COMMENT '创建时间',
  gmt_modified DATETIME NOT NULL DEFAULT '2010-05-05 00:00:00' 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
);
 
INSERT INTO users (username, PASSWORD, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
 
INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

3在nacos-server-2.0.3\nacos\conf目录下找到application.properties

spring.datasource.platform=mysql
 
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456

4添加集群nacos的ip端口

*
*
*

192.168.207.128:8848
192.168.207.128:8849
192.168.207.128:8850

5启动nacos/bin/startup.sh

nginx配置

1打开配置,更改

vim /usr/local/nginx/conf/nginx.conf

upstream nacos-cluster {
   
      
    server 192.168.207.128:8848; 
    server 192.168.207.128:8849; 
    server 192.168.207.128:8850; 
} 

server {
   
      
    listen       80;   #端口可以改
    server_name  www.nacos-test.com; 

    location / {
   
      
        #root   html; 
        #index  index.html index.htm; 
        proxy_pass http://nacos-cluster; 
    } 

    error_page   500 502 503 504  /50x.html; 
    location = /50x.html {
   
      
        root   html; 
    } 
} 

2测试通过nginx访问nacos:http://192.168.207.128:80/nacos
3yml更改为:

server-addr: 192.168.207.128:80

SpringCloud无介绍快使用,Seata处理分布式事务(二十五)
SpringCloud无介绍快使用,sentinel服务熔断功能(二十四)
SpringCloud无介绍快使用,sentinel注解@SentinelResource的基本使用(二十三)
SpringCloud无介绍快使用,sentinel热点key限流与系统规则的基本使用(二十二)
SpringCloud无介绍快使用,sentinel熔断降级和限流的基本使用(二十一)
SpringCloud无介绍快使用,Nacos集群和Nginx代理(二十)
SpringCloud无介绍快使用,nacos配置中心的基本使用(十九)
SpringCloud无介绍快使用,nacos注册中心的基本使用(十八)
SpringCloud无介绍快使用,gateway通过微服务名实现动态路由(十七)
SpringCloud无介绍快使用,gateway的基本使用(十六)
SpringCloud无介绍快使用,Ribbon负载均衡工具与OpenFeign的使用(十五)
SpringCloud无介绍快使用,使用Zookeeper替换Eureka服务注册与发现(十四)
SpringCloud无介绍快使用,服务发现Discovery和Eureka自我保护(十三)
SpringCloud无介绍快使用,集群cloud-provider-payment8002搭建(十二)
SpringCloud无介绍快使用,集群Eureka服务注册中心cloud-eureka-server7002搭建(十一)
SpringCloud无介绍快使用,单机Eureka服务注册中心cloud-eureka-server7001搭建(十)
SpringCloud无介绍快使用,新建cloud-api-commons公共模块module(九)
SpringCloud无介绍快使用,新建子module消费者订单模块(八)
SpringCloud无介绍快使用,热部署devtools配置(七)
SpringCloud无介绍快使用,子module提供者支付微服务业务开发(六)
SpringCloud无介绍快使用,新建子module提供者支付微服务yml整合和新建启动类(五)
SpringCloud无介绍快使用,新建子module提供者支付微服务pom整合(四)
SpringCloud无介绍快使用,springcloud父工程pom文件整理(三)
SpringCloud无介绍快使用,IDEA新建springcloud父工程(二)
SpringCloud无介绍快使用,与Spingboot之间的兼容版本选择(一)

作为程序员第 187 篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha …
***

Lyric: 几个高级和弦 几个切分音