暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Nacos集群配置

香草物语博客 2021-07-28
1167

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集群及配置

前置条件

1.MySql 5.X版本2.JDK 1.83.nginx

创建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 athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed 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 andlimitations 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


67093-ru0rcyiqfoa.png


修改cluster.conf

我们这里要三个进行集群,所以输入以下信息

localhost:3333
localhost:4444
localhost:5555

修改另外两个Nacos

我这里复制我刚才修改后的Nacos,然后打开application.properties
,将端口号分别修改为4444
5555

测试

分别进去三个Nacos的bin
文件夹,执行

 ./startup.sh -m cluster


64947-la952rivvfa.png

打开http://localhost:3333/nacos
,查看节点列表

47080-rx9lax5bl1.png


配置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;
#}
}


61638-uqdhfgsprtp.png


重启nginx

nginx -s reload

进入http://localhost:1111/nacos
,查看节点

42144-8oxbr3il79y.png

至此,Nacos集群配置完成。


文章转载自香草物语博客,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论