当前位置: 首页 > news >正文

【云原生】Docker 部署 Nacos使用详解

目录

一、前言

二、使用Docker部署Nacos

2.1 环境准备

2.2 搭建Nacos操作过程

2.2.1 拉取Nacos镜像

2.2.2 创建配置数据库

2.2.3 启动容器

2.2.4 删除nacos容器

2.2.5 再次启动容器

2.2.6 访问nacos

三、基于Centos7搭建Nacos

3.1  搭建过程

3.1.1 服务器环境

3.1.2 mysql环境

3.1.3 提前下载安装包

3.1.4 初始化sql脚本

3.1.5 修改配置文件

3.1.6 单机模式启动

3.1.7 访问nacos

四、写在文末


一、前言

在微服务架构设计中,服务注册中心可以说占据着非常重要的地位,尤其是近些年nacos在众多微服务项目中的使用,让这款集微服务注册中心,微服务配置中心为一体的组件,得到很多开发者的青睐,本文将详细介绍,如何快速部署单机的nacos 2.X环境。

二、使用Docker部署Nacos

2.1 环境准备

开始部署之前,需要准备基本的环境,包括服务器环境和Docker环境 

编号名称最小配置
1虚拟机或云服务器2C4G
2docker环境26.1.4

2.2 搭建Nacos操作过程

2.2.1 拉取Nacos镜像

docker pull nacos/nacos-server:v2.1.2

2.2.2 创建配置数据库

nacos的运行过程中,数据需要持久化存储,所以需要创建数据库和表,登录数据库所在服务器,创建一个名为:nacos_config的数据库,然后拷贝下面的建表sql(建议根据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 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,`encrypted_data_key` text NOT NULL COMMENT '秘钥',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 '租户字段',`encrypted_data_key` text NOT NULL 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(20) 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 '租户字段',`encrypted_data_key` text NOT NULL 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');

2.2.3 启动容器

这一步是为了获取nacos服务运行时候需要的配置文件,使用下面的命令启动nacos服务

docker run -p 8848:8848 -p 9848:9848 -p 9849:9849 --name nacos -e MODE=standalone -d nacos/nacos-server:v2.1.2

使用下面的命令将nacos的配置文件从docker容易拷贝出来到宿主机目录,依次执行下面的命令

mkdir /home/nacos
docker cp nacos:/home/nacos/conf /home/nacos/conf
docker cp nacos:/home/nacos/data /home/nacos/data

2.2.4 删除nacos容器

依次执行下面的命令

docker stop nacos
docker rm nacos

2.2.5 再次启动容器

有了上面的配置文件和基础环境准备之后,第二次启动容器时就使用上面的配置信息作为容器的启动参数,使用下面的命令启动nacos容器

docker run \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--name nacos \
-v /home/nacos/conf:/home/nacos/conf \
-v /home/nacos/logs:/home/nacos/logs \
-v /home/docker/nacos/data:/home/nacos/data \
--env MODE=standalone \
--env SPRING_DATASOURCE_PLATFORM=mysql \
--env MYSQL_SERVICE_HOST=IP \
--env MYSQL_SERVICE_PORT=3306 \
--env MYSQL_SERVICE_DB_NAME=nacos_config \
--env MYSQL_SERVICE_USER=root \
--env MYSQL_SERVICE_PASSWORD=密码\
-d nacos/nacos-server:v2.1.2

参数说明:

  • -v /home/nacos/conf:/home/nacos/conf ,宿主机与nacos容器配置文件的映射;

  • -v /home/nacos/logs:/home/nacos/logs ,宿主机与nacos容器日志文件的映射;

  • -v /home/docker/nacos/data:/home/nacos/data,宿主机与nacos容器数据文件的映射;

  • — env MODE=standalone ,以单机模式运行(可以搭建nacos集群);

  • — env SPRING_DATASOURCE_PLATFORM=mysql,使用mysql进行持久化存储;

  • — env MYSQL_SERVICE_HOST=IP,数据库地址;

  • — env MYSQL_SERVICE_PORT=13308 ,连接端口;

  • — env MYSQL_SERVICE_DB_NAME=nacos_config ,数据库名字;

  • — env MYSQL_SERVICE_USER=root ,连接的账户;

  • — env MYSQL_SERVICE_PASSWORD=你的密码,连接密码;

成功启动之后,可以使用 docker ps命令确认下是否启动成功

2.2.6 访问nacos

启动成功后,云服务器需要开放上述命令中的相关的端口,包括:8848,9848,9849,然后浏览器访问:

访问地址:http://服务IP:8848/nacos/#/login
默认的用户/密码: nacos/nacos

界面效果如下:

三、基于Centos7搭建Nacos

下面介绍基于centos7如何搭建单机nacos环境

3.1  搭建过程

3.1.1 服务器环境

虚拟机,或云服务器一台

3.1.2 mysql环境

提前安装mysql服务,用于nacos的配置数据持久化

3.1.3 提前下载安装包

下载地址:Tags · alibaba/nacos · GitHub ,根据自身的需要选择相应的版本下载

这里使用wget命令下载,然后进行解压,如下:

wget https://github.com/alibaba/nacos/releases/download/2.1.2/nacos-server-2.1.2.tar.gz

3.1.4 初始化sql脚本

解压之后,进入到配置文件目录,找到初始化sql,像上文中那样进行nacos表的初始化

3.1.5 修改配置文件

找到文件目录下的application.properties,找到下面的位置,主要修改下面关于数据库的连接信息

3.1.6 单机模式启动

进入到nacos的bin目录中,并使用单机模式命令运行nacos ,可以使用jps命令查看一下是否启动成功

sh startup.sh -m standalone

3.1.7 访问nacos

在浏览器访问nacos

四、写在文末

本文通过案例操作演示了Nacos的两种搭建方式,希望对看到的同学有用哦,本篇到此结束感谢观看。


http://www.mrgr.cn/news/54381.html

相关文章:

  • TDengine 与北微传感达成合作,解决传统数据库性能瓶颈
  • Redis架构演进之单机版Redis和数据持久化
  • WebGoat SQL Injection (intro) 源码分析
  • 携程线下一面,面试内容:
  • U-Boot的移植流程
  • 学习eNSP对提升就业竞争力有多大帮助?
  • 天童教育:家长如何引导孩子表达自己
  • 高等数学 7.1 微分方程的基本概念
  • Java最全面试题->Java基础面试题->JavaWeb面试题->Git/SVN面试题
  • Spring容器详解:BeanFactory和ApplicationContext的不同
  • 在 Docker 中搭建 PostgreSQL16 主从同步环境
  • 大学生入学审核|基于springBoot的大学生入学审核系统设计与实现(附项目源码+论文+数据库)
  • # Go 语言中的 Interface 和 Struct
  • 在线图片翻译有哪些?快速识别并翻译图中文字就用它
  • 字节回应实习生破坏大模型训练:确有此事 但部分报道夸大失实
  • C# Linq常用方法
  • Django 测试指南
  • NVIDIA cuDNN
  • SpringCloud学习:Seata总结与回顾
  • Qt开发技巧(十七):新窗口控件用智能指针,将一些配置类变量封装起来,Qt窗体的Z序叠放,子窗体的释放,Qt中的事件发送,Qt的全局头文件
  • 二、见招拆招:ShardingJDBC分库分表实战指南
  • springboot物流网站-计算机毕业设计源码90281
  • AI 通俗理解强人工智能和弱人工智能
  • 数据结构8—树(链式存储二叉树)
  • 组流技术与流特征分析
  • 软考(网工)——网络规划设计