1.环境准备:
下载官方sql脚本
1 2 |
#官方脚本链接: https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
/* * 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'); |
1 |
创建工作目录:
1 2 3 4 5 6 7 8 9 |
#创建nacos工作目录 mkdir -p /opt/nacos/cluster-logs/ #nacos日志目录 mkdir -p /opt/nacos/init.d/ #custom配置文件 #创建mysql工目录 mkdir -p /data/mysql/data mkdir -p /data/mysql/logs mkdir -p /data/mysql/conf mkdir -p /data/mysql/sql #初始化脚本存放目录(可有可无) |
创建配置文件
1 |
vim /opt/nacos/init.d/custom.properties |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#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 prometheus management.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 |
预定义docker网络
1 |
docker network create shooter_cluster |
2. docker-compose 创建nacos集群
1 |
cluster-compose.yaml |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
version: "3" services: nacos1: hostname: nacos1 container_name: nacos1 image: nacos/nacos-server:2.0.1 networks: - "shooter_cluster" volumes: - /opt/nacos/cluster-logs/nacos1:/home/nacos/logs - /opt/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties deploy: restart_policy: condition: on-failure ports: - "8848:8848" - "9848:9848" - "9555:9555" environment: - "PREFER_HOST_MODE=hostname" - "NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848" - "MYSQL_SERVICE_HOST=nacos-mysql" - "MYSQL_SERVICE_DB_NAME=nacos_devtest" - "MYSQL_SERVICE_PORT=3306" - "MYSQL_SERVICE_USER=root" - "MYSQL_SERVICE_PASSWORD=123456" restart: always depends_on: - nacos-mysql nacos2: hostname: nacos2 image: nacos/nacos-server:2.0.1 networks: - "shooter_cluster" container_name: nacos2 volumes: - /opt/nacos/cluster-logs/nacos2:/home/nacos/logs - /opt/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties deploy: restart_policy: condition: on-failure ports: - "8849:8848" - "9849:9848" environment: - "PREFER_HOST_MODE=hostname" - "NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848" - "MYSQL_SERVICE_HOST=nacos-mysql" - "MYSQL_SERVICE_DB_NAME=nacos_devtest" - "MYSQL_SERVICE_PORT=3306" - "MYSQL_SERVICE_USER=root" - "MYSQL_SERVICE_PASSWORD=123456" restart: always depends_on: - nacos-mysql nacos3: hostname: nacos3 image: nacos/nacos-server:2.0.1 networks: - "shooter_cluster" container_name: nacos3 volumes: - /opt/nacos/cluster-logs/nacos3:/home/nacos/logs - /opt/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties deploy: restart_policy: condition: on-failure ports: - "8850:8848" - "9850:9848" environment: - "PREFER_HOST_MODE=hostname" - "NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848" - "MYSQL_SERVICE_HOST=nacos-mysql" - "MYSQL_SERVICE_DB_NAME=nacos_devtest" - "MYSQL_SERVICE_PORT=3306" - "MYSQL_SERVICE_USER=root" - "MYSQL_SERVICE_PASSWORD=123456" restart: always depends_on: - nacos-mysql nacos-mysql: container_name: nacos-mysql image: mysql:5.7 networks: - "shooter_cluster" volumes: - /data/mysql/data:/var/lib/mysql - /etc/localtime:/etc/localtime:ro - /data/mysql/logs:/logs - /data/mysql/sql:/etc/sql deploy: restart_policy: condition: on-failure ports: - "3306:3306" environment: - "TZ=Asia/Shanghai" - "MYSQL_ROOT_PASSWORD=123456" - "MYSQL_DATABASE=nacos_devtest" - "MYSQL_USER=nacos" - "MYSQL_PASSWORD=nacos" #command: #启动之后初始化一下nacos官方sql # - "ls /etc/sql" # - "/usr/bin/mysql -uroot -p123456 nacos_devtest < /etc/sql/nacos-mysql.sql" networks: shooter_cluster: external: true |
执行:
1 |
docker-compose -f xxxxxx.yaml up -d |
登入mysql容器,初始化nacos数据库
1 2 |
#因为command命令优先于volumes执行,这就导致了,执行脚本的时候脚本还未被挂载,只能手动了 mysql -uroot -p123456 nacos_devtest< /etc/mysql/sql/nacos-mysql.sql |
3.登录web界面
1 |
http://192.168.66.180:8848/nacos/#/login |
4. 配置nginx负载访问
由于Nacos采用集群方式运行的话,需要通过Nginx进行负载均衡。
1 2 3 |
mkdir -p /etc/nginx/conf.d/ mkdir -p /wwwroot docker run -d -p 80:80 --name nginx -v /wwwroot:/var/www -v /etc/nginx/conf.d/:/etc/nginx/conf.d/ --net=shooter_cluster --restart=always nginx |
设置配置文件
1 |
vim /etc/nginx/conf.d/default.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
upstream unacos { server nacos1:8848 weight=1 max_fails=2 fail_timeout=10s; server nacos2:8848 weight=1 max_fails=2 fail_timeout=10s; server nacos3:8848 weight=1 max_fails=2 fail_timeout=10s; } server{ listen 80; server_name www.test.com; location / { proxy_pass http://unacos/nacos/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; add_header X-Cache $upstream_cache_status; add_header Cache-Control no-cache; proxy_redirect default; } } |
1 2 |
proxy_redirect default; #重定向,如果使用"default"参数,将根据location和proxy_pass参数的设置来决定。 参考文档:https://www.cnblogs.com/kevingrace/p/8073646.html |
1 |
docker restart nginx |
访问
nacos日志解析
1 2 3 4 5 6 7 8 9 10 11 12 |
nacos-server.log:Nacos Server的主要日志文件,记录Nacos Server的启动过程和各种异常、警告、信息等日志信息。 nacos-access.log:Nacos Server的访问日志文件,记录所有访问Nacos Server的HTTP请求信息。 nacos-config.log:Nacos Config的日志文件,记录Nacos Config服务的启动过程、配置文件加载情况以及各种异常、警告、信息等日志信息。 naming-server.log 服务注册记录 nacos-naming.log:Nacos Naming的日志文件,记录Nacos Naming服务的启动过程、服务注册、注销、发现等过程以及各种异常、警告、信息等日志信息。 nacos-grafana.log:Nacos Grafana的日志文件,记录Nacos Grafana的启动过程、数据查询、面板操作等过程以及各种异常、警告、信息等日志信息。 nacos-cluster.log:Nacos集群部署时,各节点之间通信的日志文件,记录节点之间的消息发送、接收、处理等过程以及各种异常、警告、信息等日志信息。 |
- 本文固定链接: https://www.yoyoask.com/?p=5870
- 转载请注明: shooter 于 SHOOTER 发表