文章目录
- 一、Nacos集群部署
- - 单机三节点集群
- - 三台机器部署集群
一、Nacos集群部署
- 此次部署使用Docker,使用版本为Nacos1.4.0
- mysql为5.7,nacos的表结构sql文件:
/*
* 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 '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,
constraint uk_username_role UNIQUE (username,role)
);
CREATE TABLE permissions (
role varchar(50) NOT NULL,
resource varchar(512) NOT NULL,
action varchar(8) NOT NULL,
constraint uk_role_permission UNIQUE (role,resource,action)
);
INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');
- 单机三节点集群
- 使用docker-compose部署,单机三集群示例:
注意:yaml文件中的集群设置,要写成容器内的服务端口,也就是 NACOS_SERVER_PORT 这个端口,因为是一个compose文件,直接使用默认网络的话,三个容器直接就是互通的
- 先创建目录
mkdir -p /home/fosafer/nacos_1/init.d
touch /home/fosafer/nacos_1/init.d/custom.properties
mkdir -p /home/fosafer/nacos_1/logs
mkdir -p /home/fosafer/nacos_2/init.d
touch /home/fosafer/nacos_2/init.d/custom.properties
mkdir -p /home/fosafer/nacos_2/logs
mkdir -p /home/fosafer/nacos_3/init.d
touch /home/fosafer/nacos_3/init.d/custom.properties
mkdir -p /home/fosafer/nacos_3/logs
chmod 777 -R /home/fosafer/nacos_*
- compose内容
version: '2.2'
services:
nacos1:
image: "nacos/nacos-server:1.4.0"
container_name: nacos1
ports:
- '8848:8848'
#network_mode: host
privileged: true
volumes:
- /home/fosafer/nacos_1/init.d/custom.properties:/home/nacos/init.d/custom.properties
- /home/fosafer/nacos_1/logs:/home/nacos/logs
environment:
JVM_XMS: 256m
JVM_XMX: 256m
MODE: cluster # 使用集群模式
PREFER_HOST_MODE: hostname # 使用hostname进行通信
NACOS_SERVERS: nacos1:8848 nacos2:8848 nacos3:8848 # 单机三集群
NACOS_SERVER_IP: 127.0.0.1
NACOS_SERVER_PORT: 8848 # 指定ip
SPRING_DATASOURCE_PLATFORM: mysql
MYSQL_DATABASE_NUM: 1
MYSQL_SERVICE_HOST: 10.10.11.185
MYSQL_SERVICE_PORT: 3306
MYSQL_SERVICE_DB_NAME: nacos
MYSQL_SERVICE_USER: root
MYSQL_SERVICE_PASSWORD: Fosafer.com
restart: always
nacos2:
image: "nacos/nacos-server:1.4.0"
container_name: nacos2
ports:
- '8849:8848'
#network_mode: host
privileged: true
volumes:
- /home/fosafer/nacos_2/init.d/custom.properties:/home/nacos/init.d/custom.properties
- /home/fosafer/nacos_2/logs:/home/nacos/logs
environment:
JVM_XMS: 256m
JVM_XMX: 256m
MODE: cluster
PREFER_HOST_MODE: hostname
NACOS_SERVERS: nacos1:8848 nacos2:8848 nacos3:8848 # 单机三集群
NACOS_SERVER_IP: 127.0.0.1
NACOS_SERVER_PORT: 8848 # 指定ip
SPRING_DATASOURCE_PLATFORM: mysql
MYSQL_DATABASE_NUM: 1
MYSQL_SERVICE_HOST: 10.10.11.185
MYSQL_SERVICE_PORT: 3306
MYSQL_SERVICE_DB_NAME: nacos
MYSQL_SERVICE_USER: root
MYSQL_SERVICE_PASSWORD: Fosafer.com
restart: always
nacos3:
image: "nacos/nacos-server:1.4.0"
container_name: nacos3
ports:
- '8850:8848'
#network_mode: host
privileged: true
volumes:
- /home/fosafer/nacos_3/init.d/custom.properties:/home/nacos/init.d/custom.properties
- /home/fosafer/nacos_3/logs:/home/nacos/logs
environment:
JVM_XMS: 256m
JVM_XMX: 256m
MODE: cluster
PREFER_HOST_MODE: hostname
NACOS_SERVERS: nacos1:8848 nacos2:8848 nacos3:8848 # 单机三集群
NACOS_SERVER_IP: 127.0.0.1
NACOS_SERVER_PORT: 8848 # 指定ip
SPRING_DATASOURCE_PLATFORM: mysql
MYSQL_DATABASE_NUM: 1
MYSQL_SERVICE_HOST: 10.10.11.185
MYSQL_SERVICE_PORT: 3306
MYSQL_SERVICE_DB_NAME: nacos
MYSQL_SERVICE_USER: root
MYSQL_SERVICE_PASSWORD: Fosafer.com
restart: always
docker-compose up -d
启动即可,日志没有报错,提示successfully即可
- 登录任意节点页面
IP:8848/nacos
- 查看集群管理-节点列表,节点状态全为UP即可
- 三台机器部署集群
- 单节点机器无法使用host网络模式,个人实验后发现如果使用主机网络模式,进程会冲突,三个节点可能只能启动成功一个,但是如果分开部署,为了避免因为网络出现的问题,可以使用host主机模式
- 这里的通信方式变为ip,如果通信方式要使用 hostname 的话,那就需要使用host主机网络,并且将对应的dns解析写入hosts文件
- 和单机部署一样,先在不同机器上创建相关目录,并且赋予777权限
mkdir -p /home/fosafer/nacos_1/init.d
touch /home/fosafer/nacos_1/init.d/custom.properties
mkdir -p /home/fosafer/nacos_1/logs
mkdir -p /home/fosafer/nacos_2/init.d
touch /home/fosafer/nacos_2/init.d/custom.properties
mkdir -p /home/fosafer/nacos_2/logs
mkdir -p /home/fosafer/nacos_3/init.d
touch /home/fosafer/nacos_3/init.d/custom.properties
mkdir -p /home/fosafer/nacos_3/logs
chmod 777 -R /home/fosafer/nacos_*
- compose内容
nacos1:
version: '2.2'
services:
nacos1:
image: "nacos/nacos-server:1.4.0"
container_name: nacos1
ports:
- '8851:8848'
#network_mode: host
privileged: true
volumes:
- /home/fosafer/nacos_1/init.d/custom.properties:/home/nacos/init.d/custom.properties
- /home/fosafer/nacos_1/logs:/home/nacos/logs
environment:
JVM_XMS: 256m
JVM_XMX: 256m
MODE: cluster
PREFER_HOST_MODE: ip # 使用ip进行通信
NACOS_SERVERS: 10.10.11.185:8851 10.10.11.213:8852 10.10.11.218:8853 # 这里就要用映射端口了
NACOS_SERVER_IP: 10.10.11.185 # 替换为宿主机IP
NACOS_SERVER_PORT: 8848 # 指定ip
SPRING_DATASOURCE_PLATFORM: mysql
MYSQL_DATABASE_NUM: 1
MYSQL_SERVICE_HOST: 10.10.11.185
MYSQL_SERVICE_PORT: 3306
MYSQL_SERVICE_DB_NAME: nacos
MYSQL_SERVICE_USER: root
MYSQL_SERVICE_PASSWORD: Fosafer.com
restart: always
nacos2:
version: '2.2'
services:
nacos2:
image: "nacos/nacos-server:1.4.0"
container_name: nacos2
ports:
- '8852:8848'
#network_mode: host
privileged: true
volumes:
- /home/fosafer/nacos_2/init.d/custom.properties:/home/nacos/init.d/custom.properties
- /home/fosafer/nacos_2/logs:/home/nacos/logs
environment:
JVM_XMS: 256m
JVM_XMX: 256m
MODE: cluster
PREFER_HOST_MODE: ip
NACOS_SERVERS: 10.10.11.185:8851 10.10.11.213:8852 10.10.11.218:8853
NACOS_SERVER_IP: 10.10.11.213 # 替换为宿主机IP
NACOS_SERVER_PORT: 8848 # 指定ip
SPRING_DATASOURCE_PLATFORM: mysql
MYSQL_DATABASE_NUM: 1
MYSQL_SERVICE_HOST: 10.10.11.185
MYSQL_SERVICE_PORT: 3306
MYSQL_SERVICE_DB_NAME: nacos
MYSQL_SERVICE_USER: root
MYSQL_SERVICE_PASSWORD: Fosafer.com
restart: always
nacos3:
version: '2.2'
services:
nacos3:
image: "nacos/nacos-server:1.4.0"
container_name: nacos3
ports:
- '8853:8848'
#network_mode: host
privileged: true
volumes:
- /home/fosafer/nacos_3/init.d/custom.properties:/home/nacos/init.d/custom.properties
- /home/fosafer/nacos_3/logs:/home/nacos/logs
environment:
JVM_XMS: 256m
JVM_XMX: 256m
MODE: cluster
PREFER_HOST_MODE: ip
NACOS_SERVERS: 10.10.11.185:8851 10.10.11.213:8852 10.10.11.218:8853
NACOS_SERVER_IP: 10.10.11.218 # 替换为宿主机IP
NACOS_SERVER_PORT: 8848 # 指定ip
SPRING_DATASOURCE_PLATFORM: mysql
MYSQL_DATABASE_NUM: 1
MYSQL_SERVICE_HOST: 10.10.11.185
MYSQL_SERVICE_PORT: 3306
MYSQL_SERVICE_DB_NAME: nacos
MYSQL_SERVICE_USER: root
MYSQL_SERVICE_PASSWORD: Fosafer.com
restart: always
- 启动后查看三台机器的日志
- 登录任意一台节点的页面查看节点状态