docker搭建nacos集群

2023-05-16

目录

      • 前言
      • 1. 启动mysql5.7容器
      • 2. 配置nacos_config数据库
        • (1)创建nacos_config数据库
        • (2)创建nacos的配置表
      • 3. 拉取nacos镜像
      • 4. 启动nacos容器
      • 5. 查看集群容器启动状态
      • 6. 登录nacos用户界面
      • 7. 启动Nginx容器
      • 8. 修改Nginx配置文件
      • 9. 负载均衡访问nacos

前言

这里说明一下,我在根据原作者的教程步骤搭建naocs集群时,连的数据库是mysql8版本,启动容器的时候一直报错No DataSource Set,这个情况是因为这个版本的镜像是不支持连mysql8数据库的,后来我改连mysql5.7,马上启动容器就正常了,这里确实是一个坑,还请大家注意,解决的方法有两种:
一是拉取最新版本的nacos镜像,它是支持mysql8.0的,但是需要进入容器修改/home/nacos/conf目录下application.properties文件的这个参数db.url.0,在末尾加上serverTimezone=UTC即可,然后重启容器docker restart 容器id && docker logs -f 容器id就能查看容器启动情况了

二是去更改nacos项目包里面target目录下lib里面的jar包,把mysql-connector-java-5.+的版本换成mysql-connector-java-8.+的版本,也是可以的

1. 启动mysql5.7容器

执行以下命令拉取mysql5.7的镜像,并启动mysql5.7容器

docker pull mysql:5.7     //拉取镜像
docker run -d --name mysql5.7 -p 3310:3306  -e MYSQL_ROOT_PASSWORD=root mysql:5.7      //启动容器

2. 配置nacos_config数据库

(1)创建nacos_config数据库

create database nacos_config default charset utf8mb4;

(2)创建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 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');

3. 拉取nacos镜像

docker pull nacos-server:1.3.0

在这里插入图片描述

4. 启动nacos容器

我这里启动了3台nacos,分别对应的端口号是884688478848,执行以下命令:
docker run -d \
-e PREFER_HOST_MODE=hostname \
-e MODE=cluster \
-e NACOS_APPLICATION_PORT=8846 \
-e NACOS_SERVERS="192.168.227.45:8846 192.168.227.45:8847 192.168.227.45:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.227.45 \
-e MYSQL_SERVICE_PORT=3310 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e NACOS_SERVER_IP=192.168.227.45 \
-p 8846:8846 \
--name my-nacos1 \
nacos/nacos-server:1.3.0


docker run -d \
-e PREFER_HOST_MODE=hostname \
-e MODE=cluster \
-e NACOS_APPLICATION_PORT=8847 \
-e NACOS_SERVERS="192.168.227.45:8846 192.168.227.45:8847 192.168.227.45:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.227.45 \
-e MYSQL_SERVICE_PORT=3310 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e NACOS_SERVER_IP=192.168.227.45 \
-p 8847:8847 \
--name my-nacos2 \
nacos/nacos-server:1.3.0


docker run -d \
-e PREFER_HOST_MODE=hostname \
-e MODE=cluster \
-e NACOS_APPLICATION_PORT=8848 \
-e NACOS_SERVERS="192.168.227.45:8846 192.168.227.45:8847 192.168.227.45:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.227.45 \
-e MYSQL_SERVICE_PORT=3310 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e NACOS_SERVER_IP=192.168.227.45 \
-p 8848:8848 \
--name my-nacos3 \
nacos/nacos-server:1.3.0

5. 查看集群容器启动状态

查看容器的启动日志,执行docker logs -f 容器的id
如图所示,说明集群容器启动成功
在这里插入图片描述

6. 登录nacos用户界面

访问192.168.227.45:8846/nacos、192.168.227.45:8847/nacos、192.168.227.45:8848/nacos这三个其中的一个都可以
在这里插入图片描述
输入用户名:nacos,密码:nacos 即可进入使用界面了
在这里插入图片描述
依次选择: 集群管理 > 节点列表就可以监控查看naocs整个集群各节点的状态了
在这里插入图片描述

7. 启动Nginx容器

docker run --name my-nginx -p 8080:8080 -d nginx

8. 修改Nginx配置文件

docker cp  d3cf08d68e5f:/etc/nginx/nginx.conf  /
vim /nginx.conf
在nginx.conf文件的http块加上下面这段配置
upstream cluster{
        server 192.168.227.45:8846;
        server 192.168.227.45:8847;
        server 192.168.227.45:8848;
    }

    server {
         listen 8080;
        server_name localhost;
        location / {
                 proxy_pass http://cluster;
        }
    }
 修改完nginx.conf文件后,把它放回容器中
 docker cp /nginx.conf  d3cf08d68e5f:/etc/nginx/
 重启nginx容器
 docker restart d3cf08d68e5f && docker logs -f d3cf08d68e5f

在这里插入图片描述

9. 负载均衡访问nacos

浏览器中输入以下访问地址即可
192.168.227.45:8080/nacos

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker搭建nacos集群 的相关文章

随机推荐

  • SpringAop

    目录 1 创建maven项目 pom xml添加依赖2 启动类3 代理类4 服务类5 请求类6 Spring4的Aop7 Spring5的Aop 1 创建maven项目 pom xml添加依赖 span class token generi
  • 最常用的linux命令大全

    个人感觉这篇最常用的linux命令大全写的比较好 xff0c 所以做了转载 xff0c 原文连接 一 基础知识 1 1 liunx系统的文件结构 dev 设备文件 etc 大多数配置文件 home 普通用户的家目录 lib span cla
  • Spring注解(包含SpringBoot)

    目录 1 64 SpringBootApplication 作用在启动类上 2 64 EnableAutoConfiguration 作用在启动类上 3 64 ComponentScan 作用在启动类上 4 64 Configuration
  • SUSE12系统安装

    SUSE12系统安装 本教程为转载 xff0c 原文连接 1 启动安装模式 在启动页面上选择Installation xff0c 然后按Enter键 xff0c 开始载入SUSE Linux服务安装程序并以普通模式安装 开始初始化 更新安装
  • SUSE15系统安装

    本教程为转载内容 xff0c 原文链接 SUSE15系统安装 安装开始 1 启动安装模式 在启动页面上选择Installation xff0c 然后按Enter键 xff0c 这将载入SUSE Linux服务器安装程序并以普通模式安装 2
  • Rocky Linux 8.4系统安装

    本教程为转载内容 xff0c 原文链接 Rocky Linux 8 4系统安装 安装目的地 xff0c 选择自定义 xff0c 点击完成 点击自动创建 修改 分区的大小为34 GiB xff0c 将空闲出来的1 06GiB分给 temp分区
  • Ubuntu21.04系统安装

    目录 1 启动Ubuntu21 04镜像2 安装界面3 键盘布局4 安装模式5 安装类型6 磁盘分区7 确认磁盘手动分区8 创建EFI System Partition9 创建boot引导分区10 创建swap虚拟分区11 创建根分区12
  • Java8使用stream将Map转成List的方法

    import java util HashMap import java util List import java util Map import java util stream Collectors 64 Author liangju
  • Debian11系统安装

    目录 1 启动镜像2 选择语言3 选择所在位置4 键盘布局5 设置主机名6 设置域名7 设置root账户密码8 设置用户和密码9 设置时区10 磁盘分区11 安装其他软件包11 安装系统镜像12 参与软件包使用情况调查13 安装环境14 系
  • Deepin20.2.3系统安装

    目录 1 启动镜像2 选择语言3 硬盘分区4 新建boot分区5 创建虚拟分区6 创建根分区7 执行分区方案8 安装系统9 系统设置10 重启进入系统11 ssh连接 1 启动镜像 启动镜像进入Boot menu xff0c 默认选择第一行
  • Linux之基础命令篇

    目录 综述1 cd2 pwd3 ls4 查看文件内容4 1 less4 2 more4 3 cat4 4 tac4 5 head4 6 tail 5 压缩命令5 1 tar tar 5 2 tar tar gz 5 3 tar tar xz
  • Redhat8.4系统安装

    目录 1 启动镜像2 选择语言3 选则键盘布局4 磁盘分区4 1 创建引导分区 xff08 boot xff09 4 2 创建根分区 xff08 xff09 4 3 创建swap分区 5 KDUMP6 设置时区7 软件选择8 网络和主机名9
  • Linux之用户权限篇

    目录 前言1 查看用户信息1 创建用户2 修改用户信息3 删除用户4 文件权限4 1 chmod4 2 chown 5 用户密码 前言 用户权限非常重要 非常重要 xff01 非常重要 xff01 所以单独拿出来做笔记 xff0c 平时在l
  • Linux之镜像源篇

    目录 1 概述2 本地镜像源2 1 第一种方式2 2 第二种方式 3 在线镜像源 xff08 阿里云源 xff09 1 概述 1 yum需要一个yum库 xff0c 也就是yum源 默认情况下 xff0c CentOS就有一个yum源 在
  • mysql使用指南

    目录 一 SQL简述1 SQL的概述2 SQL的优点3 SQL的分类 二 数据库的三大范式三 数据库的数据类型1 整数类型2 浮点数类型和定点数类型3 字符串类型4 字符串类型5 日期与时间类型 四 数据库 数据表的基本操作1 数据库的基本
  • linux下安装mysql8及使用

    目录 1 下载mysql软件包2 解压缩包3 移动MySQL文件4 添加用户和用户组5 创建 data mysql目录6 创建 etc my cnf文件7 安装libaio8 初始化mysql9 查看数据库密码10 重命名mysql ser
  • Linux安装nacos

    目录 前言1 安装jdk jdk1 8 43 2 安装maven maven3 2 43 3 环境生效4 启动nacos5 关闭nacos 前言 Nacos 致力于帮助您发现 配置和管理微服务 Nacos 提供了一组简单易用的特性集 xff
  • docker搭建redis主从复制

    目录 1 docker拉取镜像2 启动两台redis容器3 查看容器状态4 查看两台容器的ip地址5 进入容器 xff08 从机 xff09 6 测试主从复制效果 1 docker拉取镜像 docker pull redis 6 0 8 2
  • java代码实现部门树以及任意树结构的获取

    表结构如下 SET NAMES utf8mb4 SET FOREIGN KEY CHECKS 61 0 Table structure for my dept DROP TABLE IF EXISTS 96 my dept 96 CREAT
  • docker搭建nacos集群

    目录 前言1 启动mysql5 7容器2 配置nacos config数据库 xff08 1 xff09 创建nacos config数据库 xff08 2 xff09 创建nacos的配置表 3 拉取nacos镜像4 启动nacos容器5