Nacos集群使用Docker部署

一、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 
      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
      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
      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 
      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 
      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 
      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
  • 启动后查看三台机器的日志

在这里插入图片描述

  • 登录任意一台节点的页面查看节点状态

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值