阅读 84

Nacos基础集群搭建——Nacos学习

准备工作

  1. 能启动并查看到单机模式下的启动页

  2. jdk

  3. mysql

mysql中需要执行相关sql,在nacos文件夹中/conf/nacos-mysql.sql,需要注意创建数据库等操作,也可直接执行以下sql

create database nacos; use nacos; /******************************************/ /*   数据库全名 = 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 ('admin', '$2a$10$HxtJtd59imujvbux.i55zOGewhnJiLVXX8D9AETDMV.XtBLDGOXtW', TRUE);   INSERT INTO roles (username, role) VALUES ('admin', 'ROLE_ADMIN'); 复制代码

配置文件修改

application.properties

其中需要修改关于mysql的配置信息及需要的端口信息

### Default web context path: server.servlet.contextPath=/nacos ### Default web server port: server.port=8881  ### If use MySQL as datasource: spring.datasource.platform=mysql  ### Count of DB: db.num=1  ### Connect URL of DB: db.url.0=jdbc:mysql://39.106.167.82:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user.0=root db.password.0=123456 复制代码

需要注意的是,一般来说我们生产环境使用的mysql都是主从模式搭建的,这样的话就需要配置多条sql的链接信息,并将db.num进行相应的修改

cluster.conf.example

第一步,修改文件名,这里example表示是事例,启动时候并不会找到这个文件,cp cluster.conf.example cluster.conf

第二步,配置集群信息,在cluster.conf文件中输入需要配置的集群信息,官方要求三个或三个以上.

39.106.xxx.xx1:8881 39.106.xxx.xx2:8881 39.106.xxx.xx3:8881 复制代码

上述相应信息配置到集群的各个主机上

启动

在各个主机上直接执行bin目录下的sh startup.sh命令即可,默认使用集群模式启动,集群模式不指定数据库信息,默认使用外部配置的数据库进行 链接(内嵌本地数据库derby)。默认不修改启动参数使用的jvm配置参数如下

-server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m 复制代码

其实看起来是很消耗内存信息的,当然还是按照具体的业务场景进行配置,这里测试的时候如果测试机出现启动之后自动宕机的情况,还是推荐修改下启动参数(我是在一台linux机器上启动了三台,导致各种启动卡顿且宕机,所以修改成如下信息)

-server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m 复制代码

翻看startup.sh文件可以很好理解,其中有一段的代码含义是判断是否启动是按照单机或者集群启动,如果集群启动就会很消耗内存的启动参数。

if [[ "${MODE}" == "standalone" ]]; then     JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"     JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true" else     if [[ "${EMBEDDED_STORAGE}" == "embedded" ]]; then         JAVA_OPT="${JAVA_OPT} -DembeddedStorage=true"     fi     JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m"     JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof"     JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages" 复制代码

启动完成之后,可以登陆任意一台ip+端口查看集群管理->节点列表

其他

1、可以使用 nginx代理,进行负载均衡跳转使用其中的任何一台nacos-server上

2、详细信息和架构逻辑可以查看官网,sql源文件信息可以查看官网sql源文件

3、sh startup.sh -p embedded使用内置数据源启动


作者:coderymy
链接:https://juejin.cn/post/7026534929374642189

文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐