Nacos搭建

什麼是 Nacos

Nacos 致力於幫助您發現、配置和管理微服務。Nacos 提供了一組簡單易用的特性集,幫助您快速實現動態服務發現、服務配置、服務元資料及流量管理。

Nacos 幫助您更敏捷和容易地構建、交付和管理微服務平臺。 Nacos 是構建以“服務”為中心的現代應用架構 (例如微服務正規化、雲原生正規化) 的服務基礎設施。

Nacos搭建

特性大圖:要從功能特性,非功能特性,全面介紹我們要解的問題域的特性訴求

架構大圖:透過清晰架構,讓您快速進入 Nacos 世界

業務大圖:利用當前特性可以支援的業務場景,及其最佳實踐

生態大圖:系統梳理 Nacos 和主流技術生態的關係

優勢大圖:展示 Nacos 核心競爭力

戰略大圖:要從戰略到戰術層面講 Nacos 的宏觀優勢

前置條件

已安裝docker環境且已安裝docker swarm環境,並建立docker私有網路dev-overlay

下載nacos映象

docker pull nacos/nacos-server

編寫yml啟動檔案

version: ‘3’services: nacos: image: nacos/nacos-server:版本號 container_name: nacos hostname: nacos restart: always environment: SPRING_DATASOURCE_PLATFORM: mysql #資料來源平臺 僅支援mysql或不儲存empty MODE: standalone MYSQL_SERVICE_HOST: 192。168。1。127 MYSQL_SERVICE_DB_NAME: nacos MYSQL_SERVICE_PORT: 3306 MYSQL_SERVICE_USER: root MYSQL_SERVICE_PASSWORD: 123456 JVM_XMS: 512m JVM_MMS: 320m volumes: - /data/nacos/data:/home/nacos/data - /data/nacos/logs:/home/nacos/logs - /data/nacos/custom。properties:/home/nacos/init。d/custom。properties ports: - “8848:8848” - “9555:9555” networks: - dev-overlaynetworks: dev-overlay: external: true

編寫custom。properties配置檔案

#spring。security。enabled=false#management。security=false#security。basic。enabled=false#nacos。security。ignore。urls=/**#management。metrics。export。elastic。host=http://localhost:9200# metrics for prometheusmanagement。endpoints。web。exposure。include=*# metrics for elastic search#management。metrics。export。elastic。enabled=false#management。metrics。export。elastic。host=http://localhost:9200# metrics for influx#management。metrics。export。influx。enabled=false#management。metrics。export。influx。db=springboot#management。metrics。export。influx。uri=http://localhost:8086#management。metrics。export。influx。auto-create-db=true#management。metrics。export。influx。consistency=one#management。metrics。export。influx。compressed=true

建立nacos資料庫,並初始化資料庫

/* * 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, 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’);

啟動nacos

docker stack deploy -c xxx。yml nacos

Nacos搭建

預設賬號密碼:nacos/nacos