Nacos集群配置
Posted 香草物语博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nacos集群配置相关的知识,希望对你有一定的参考价值。
Netflix组件移除说明
Netflix公司是目前微服务落地中最成功的公司。它开源了诸如Eureka、Hystrix、Zuul、Feign、Ribbon等等广大开发者所知微服务套件,统称为Netflix OSS。在当时Netflix OSS成为微服务组件上事实的标准。但是微服务兴起不久,也就是在 2018 年前后Netflix公司宣布其核心组件Hystrix、Ribbon、Zuul、Eureka等进入维护状态,不再进行新特性开发,只修 BUG。这直接影响了Spring Cloud项目的发展路线,Spring 官方不得不采取了应对措施,在 2019 年的在 SpringOne 2019 大会中,Spring Cloud宣布 Spring Cloud Netflix 项目进入维护模式,并在 2020 年移除相关的Netflix OSS组件。
什么是 Nacos?
阿里巴巴在2018年7月份发布Nacos, Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 支持几乎所有主流类型的服务的发现、配置和管理。
Nacos集群及配置
前置条件
创建MySql数据库
创建一个名称为nacos_config
的数据库,然后执行以下数据库预置脚本。```java /*
•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(50) 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(50) 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(50) 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(50) 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');
此脚本sql位于Nacos的`conf`文件夹下:`nacos-mysql.sql`
## 修改application.properties文件
修改`conf/application.properties`文件,修改MySQL信息及端口。
由于我们演示三个集群,位于一个服务器,所以需要三个端口号,我这里分别设置为`3333`、`4444`、`5555`。
```java
server.port=3333
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root
修改cluster.conf
我们这里要三个进行集群,所以输入以下信息
localhost:3333
localhost:4444
localhost:5555
修改另外两个Nacos
我这里复制我刚才修改后的Nacos,然后打开application.properties
,将端口号分别修改为4444
、5555
。
测试
分别进去三个Nacos的bin
文件夹,执行
./startup.sh -m cluster
打开http://localhost:3333/nacos
,查看节点列表
配置nginx
启动三台Nacos后,我们需要配置Nginx进行端口转发,我这里Nginx使用1111
端口。
打开nginx配置文件
vi nginx.conf
增加以下内容
upstream cluster{
server localhost:3333 weight=1;
server localhost:4444 weight=1;
server localhost:5555 weight=1;
}
server {
listen 1111;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://cluster;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the php scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
重启nginx
nginx -s reload
进入http://localhost:1111/nacos
,查看节点
至此,Nacos集群配置完成。
以上是关于Nacos集群配置的主要内容,如果未能解决你的问题,请参考以下文章