Linux安装软件的几种方式
- yum自动化: 之类工具进行安装。
yum install redis
; 【yum必须有这个软件的源】- 二进制: 下载来软件包,按照操作手册,编译,安装 Make && Make Install
- docker: 剩下的所有东西用docker装。docker hub;下载来镜像启动即可
docker内的每个容器都相当于一个小型的系统
docker 安装完成后会在当前linux下自行安装一个网卡和当前ens33同级别
每启动一个容器都会新建一个虚拟网卡 分配ip 受当前docker网关管理
docker内部容器互相访问可以调用各自的ip然后调用当前容器的端口不去调用外界的虚拟映射的端口
为了防止容器被删除重建后ip发生变化因此建立稳定的访问地址(域名) 稳定的访问标识域名动态指向
安装docker 根据官网设置
#移除老版本的docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
#设置docker的yum源 yum源设置为阿里云镜像
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装最新版docker; docker-compose 批量管理docker容器
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
#开启启动&立即启动
sudo systemctl enable docker --now
#下载镜像默认去dockerhub下载。镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://z8e72yub.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
docker run 设置项 镜像名 启动命令 启动参数
-d:后台运行
-it:前台运行
-p:指定端口(80:80 前面是暴露的访问端口后面是容器自己的端口)
-v( (-v jenkins-data:/var/jenkins_home 前面是宿主机的文件目录后面是容器内部的目录(如果宿主机的路径不写完整只写一个那么会自动在/var/lib/docker/volumes/下生成一个文件夹挂载容器内部的文件)) 目录挂载将内部的文件及文件夹挂载的宿主机(你的服务器))
–name mysql (指定当前镜像的名字)
–restart=always (重启服务器之后重新启动容器)
–net=bridge(指定容器的网络设置)
–rm=false(容器停止后自动删除容器)
最后为镜像的具体名字和版本
示例:docker run -u root --restart=always -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean:1.25.5
#删除所有的容器
docker rm -f $(docker ps -aq)
#查询当前文件位置
whereis xx
#展示所有的卷映射
docker volume ls
#示例:启动某个容器 设置自启动 后台启动 端口外部映射为8888 将目录卷映射到宿主机(/app/conf:etc/nginx 此为将etc/nginx目录挂载到宿主机下的/app/conf目录)
docker run --restart=always -d -p 8888:80 -v appconf:/etc/nginx nginx
#进入容器
docker exec -it 容器名字/id(id可以只写前几位独一无二的可以分辨出是哪个) bash#退出容器
ctrl + p +q#查看某个卷映射文件的详情
docker volume inspect 文件名
#可以 测试docker内个容器的链接内部的网络端口
curl 容器的ip和端口
#查看当前容器的详情 网关,ip
docker inspect 容器名字(id)
#查询当前所有创建过的容器
docker ps -a
#查看当前网络
docker network ls
#创建自定义网络
docker network creat --subnet=110.110.0.1/16 mall-net#以后在任意容器内 只需要用对方的容器的名字作为域名 就能访问
docker run -d -p 虚拟映射端口;容器端口 --network=自定义的网络(网关) --name 定义名字(也就是域名) 指定容器#基于一个compose.yaml文件,批量启动服务器 启动/上架容器
docker compose -f 文件名字 up
#下架容器
docker compose -f 文件名字 down
#查看日志
docker logs 容器id
#https://docs.docker.com/compose/compose-file/
version (DEPRECATED), services (REQUIRED), networks, volumes, configs and secrets.
services: #要启动多少服务(容器)docker run --name=xxx
mysql-master:
image: mysql:5.7
ports:
- “3306:3306”
volumes:
- mysqlmaster-log:/var/log/mysql
- mysqlmaster-data:/var/lib/mysql
- mysqlmaster-conf:/etc/mysql/conf.d
- /etc/localtime:/etc/localtime:ro
environment:
- MYSQL_ROOT_PASSWORD=123456
restart: always
networks:
- mall-netmysql-slave-01:
image: mysql:5.7
ports:
- “3307:3306”
volumes:
- mysqls1-log:/var/log/mysql
- mysqls1-data:/var/lib/mysql
- mysqls1-conf:/etc/mysql/conf.d
- /etc/localtime:/etc/localtime:ro
environment:
- MYSQL_ROOT_PASSWORD=123456
restart: always
networks:
- mall-netmysql-slave-02:
image: mysql:5.7
ports:
- “3308:3306”
volumes:
- mysqls2-log:/var/log/mysql
- mysqls2-data:/var/lib/mysql
- mysqls2-conf:/etc/mysql/conf.d
- /etc/localtime:/etc/localtime:ro
environment:
- MYSQL_ROOT_PASSWORD=123456
restart: always
networks:
- mall-netredis:
image: redis:6.2.5
ports:
- “6379:6379”
volumes:
- redis-conf:/etc/redis
- redis-data:/data
- /etc/localtime:/etc/localtime:ro
#自定义容器的启动命令,自己制作出这个redis.conf文件放到卷目录下
command: redis-server /etc/redis/redis.conf
restart: always
networks:
- mall-netelasticsearch:
image: elasticsearch:7.13.4
ports:
- “9200:9200”
- “9300:9300”
volumes:
- es-config:/usr/share/elasticsearch/config
- es-data:/usr/share/elasticsearch/data
- /etc/localtime:/etc/localtime:ro
restart: always
environment:
- “discovery.type=single-node”
- “ES_JAVA_OPTS=-Xms512m -Xmx512m”
- “bootstrap.memory_lock=true”
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65535
hard: 65535
networks:
- mall-netkibana:
image: kibana:7.13.4
ports:
- “5601:5601”
volumes:
- /etc/localtime:/etc/localtime:ro
environment:
- “ELASTICSEARCH_HOSTS=http://elasticsearch:9200”
restart: always
networks:
- mall-netfilebeat:
image: elastic/filebeat:7.13.4
volumes:
- /var/log:/hosts/logs
- /var/lib/docker/containers:/containers/logs
- filebeat-conf:/usr/share/filebeat
- /etc/localtime:/etc/localtime:ro
restart: always
networks:
- mall-netrabbitmq:
image: rabbitmq:3.8-management
ports:
- “15672:15672”
- “5672:5672”
environment:
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=admin
hostname: gmall-rabbit
volumes:
- rabbit-data:/var/lib/rabbitmq
- rabbit-conf:/etc/rabbitmq
- /etc/localtime:/etc/localtime:ro
restart: always
networks:
- mall-netzipkin:
image: openzipkin/zipkin:2
ports:
- “9411:9411”
volumes:
- /etc/localtime:/etc/localtime:ro
restart: always
networks:
- mall-netsentinel:
image: leifengyang/sentinel:1.8.2
ports:
- “8858:8080”
volumes:
- /etc/localtime:/etc/localtime:ro
restart: always
networks:
- mall-netnacos:
image: nacos/nacos-server:2.0.2
ports:
- “8848:8848”
volumes:
- /etc/localtime:/etc/localtime:ro
environment:
- MODE=standalone
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=mysql-master
- MYSQL_SERVICE_PORT=3306
- MYSQL_SERVICE_DB_NAME=nacos_config
- MYSQL_SERVICE_USER=root
- MYSQL_SERVICE_PASSWORD=123456
- JVM_XMS=200m
- JVM_XMX=256m
- JVM_XMN=100m
restart: always
networks:
- mall-netminio:
image: minio/minio
ports:
- “9000:9000”
- “9001:9001”
environment:
- MINIO_ACCESS_KEY=admin
- MINIO_SECRET_KEY=admin123456
volumes:
- minio-data:/data
- minio-conf:/root/.minio
- /etc/localtime:/etc/localtime:ro
command: server --console-address “:9001” /data
restart: always
networks:
- mall-netnginx:
image: nginx:1.23.2-alpine
ports:
- “80:80”
volumes:
- nginx-conf:/etc/nginx
- nginx-html:/usr/share/nginx/html
- /etc/localtime:/etc/localtime:ro
restart: always
networks:
- mall-net#上面services用到的所有卷必须在volumes节点里面声明
volumes:
mysqlmaster-log: {}
mysqlmaster-data: {}
mysqlmaster-conf: {}
mysqls1-log: {}
mysqls1-data: {}
mysqls1-conf: {}
mysqls2-log: {}
mysqls2-data: {}
mysqls2-conf: {}
redis-conf: {}
redis-data: {}
es-config: {}
es-data: {}
filebeat-conf: {}
rabbit-data: {}
rabbit-conf: {}
minio-data: {}
minio-conf: {}
nginx-conf: {}
nginx-html: {}#上面用到的所有网络也在这里声明
networks:
mall-net:
ipam:
config:
- subnet: 110.110.0.0/16修复redis
在redis配置文件卷目录,创建一个
redis.conf
文件。内容如下appendonly yes requirepass 123456
修复nacos
创建库
nacos_config
创建表: [nacos/nacos-mysql.sql at 2.0.2 · alibaba/nacos (github.com)](
docker run
-u root
–restart=always
-d
-p 8080:8080
-p 50000:50000
-v jenkins-data:/var/jenkins_home
-v /var/run/docker.sock:/var/run/docker.sock
jenkinsci/blueocean:1.25.5
##1、部署
docker run -p 3306:3306 --name mysql-01 \
-v /mydata/mysql-01/log:/var/log/mysql \
-v /mydata/mysql-01/data:/var/lib/mysql \
-v /mydata/mysql-01/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root \
--restart=always \
-d mysql:5.7
##2、配置初始化
mkdir -p /mydata/mysql-01/conf && vim /mydata/mysql-01/conf/default.cnf
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
init_connect='SET collation_connection = utf8mb4_unicode_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
##3、设置root远程连接
#1、进入master容器
docker exec -it mysql /bin/bash
#2、进入mysql内部
mysql –uroot -p
#1)、授权root可以远程访问( 主从无关,为了方便我们远程连接mysql)
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;
##或者,-h
docker run -it --rm mysql:5.7 mysql -uroot -h172.17.0.2 -p
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;
MySQL搭建主从架构集群
1主 2从
1.主机开启binlog功能,记录数据库变化
2.mysql的主机分配账号密码 让从机使用此账号密码链接主机 从机读取主机
3.从机开启relaylog
4.sql线程让从机开始同步主机
5.配置 主机忽略每个库自己特有的四个基本库
从机
- 执行sql 配置主机 开通从机连接主机的账号
show master status 查看主机状态- 执行sql配置从机 连接主机的相关信息
start slave 开启同步
show slave status 查看从机状态主机配置
[mysqld] server-id=1 log-bin=mysql-bin binlog-ignore-db=mysql binlog-ignore-db=infomation_schema binlog-ignore-db=performance_schema binlog-ignore-db=sys binlog-ignore-db=nacos_config binlog_format=STATEMENT
## 1、准备redis配置文件内容
mkdir -p /mydata/redis-01/conf && vim /mydata/redis-01/conf/redis.conf
#开启持久化
appendonly yes
port 6379
requirepass Lfy123!@!
bind 0.0.0.0
docker run -d -p 6379:6379 --restart=always \
-v /mydata/redis-01/conf/redis.conf:/etc/redis/redis.conf \
-v /mydata/redis-01/data:/data \
--name redis-01 redis:6.2.5 \
redis-server /etc/redis/redis.conf
#redis启动的使用 redis-server 自定义加载一个配置文件
# docker run xxxx imageName redis-server xx
# 1、设置Linux进程限制内存
vim /etc/sysctl.conf
vm.max_map_count=655360
# 2、设置生效
sysctl -p
# 或者 sysctl --system
# 提前授权
mkdir -p /mydata/es-01 && chmod 777 -R /mydata/es-01
docker run --restart=always -d -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-e "bootstrap.memory_lock=true" \
-v es-config:/usr/share/elasticsearch/config \
-v /mydata/es-01/data:/usr/share/elasticsearch/data \
--ulimit nofile=65535:65535 \
--ulimit memlock=-1:-1 \
--name es-01 \
elasticsearch:7.13.4
#放大容器的进程树
#1、下载ik分词插件
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.13.4/elasticsearch-analysis-ik-7.13.4.zip
#2、解压
unzip -d ik elasticsearch-analysis-ik-7.13.4.zip
#3、复制到容器内部plugins目录
docker cp ik 容器id:/usr/share/elasticsearch/plugins
#了解下反向操作
docker cp 容器id:/usr/share/elasticsearch/xxx abc
#4、重启es
docker restart 容器id
docker run --name kib01 -d --restart=always \
--link 02b39a5a3874:es01 -p 5601:5601 -e "ELASTICSEARCH_HOSTS=http://es01:9200" \
kibana:7.13.4
#小知识: --link :alias
ELK:ElasticSearch+Logstash+Kibana
EFK:ElasticSearch+Filebeats+Kibana
# 1、启动日志收集器
docker run -d \
--name=filebeat \
--restart=always \
-v filebeat-conf:/usr/share/filebeat \
-v /var/log/messages:/var/log/messages \
--link 02b39a5a3874:es01 \
elastic/filebeat:7.13.4
# 注意:
# /var/log/messages 就是记录了当前主机的日志。yum mysql,redis,主机上服务的日志都在这儿
# 1、 --link 7863831f1b58:es01 要用自己es容器的id
# 2、-v filebeat-conf:/usr/share/filebeat; /usr/share/filebeat下有很多东西,包含配置文件。要整个挂载出来
#1、修改配置文件:
cd /var/lib/docker/volumes/filebeat-conf/_data
vim filebeat.yml
#内容如下
filebeat启动的时候多挂一个 /var/lib/docker/containers/; 自己配置收集
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/messages
#如何收集docker其他容器的日志
filebeat.config:
modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
processors:
- add_cloud_metadata: ~
- add_docker_metadata: ~
output.elasticsearch:
hosts: 'elasticsearch:9200'
indices:
- index: "filebeat-%{+yyyy.MM.dd}"
问题解决:
如果此时
docker logs xx
,查看filebeat日志,会打印没有var/log/messages
的权限
chmod 777 -R /var/log/messages
因为logstash是jvm跑的,资源消耗比较大,所以后来作者又用golang写了一个功能较少但是资源消耗也小的轻量级的logstash-forwarder。不过作者只是一个人,加入http://elastic.co公司以后,因为es公司本身还收购了另一个开源项目packetbeat,而这个项目专门就是用golang的,有整个团队,所以es公司干脆把logstash-forwarder的开发工作也合并到同一个golang团队来搞,于是新的项目就叫
filebeat
了。logstash 和filebeat都具有日志收集功能,filebeat更轻量,占用资源更少,但logstash 具有filter功能,能过滤分析日志。一般结构都是filebeat采集日志,然后发送到消息队列,redis,kafaka。然后logstash去获取,利用filter功能过滤分析,然后存储到elasticsearch中
就像垃圾车和环卫工人的关系。
垃圾车也能直接让你把垃圾扔车上带走,但他动静大,环卫工人动静小,不吵到你。
#1、logstash配置
mkdir -p /mydata/logstash && vim /mydata/logstash/logstash.conf
input {
tcp {
mode => "server"
host => "0.0.0.0"
port => 5044
codec => json_lines
}
}
filter{
}
output {
elasticsearch {
hosts => "es01:9200"
index => "gmall-%{+YYYY.MM.dd}"
}
}
docker run --name logstash -p 5044:5044 \
--restart=always \
--link 02b39a5a3874:es01 \
-v /mydata/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
-d logstash:7.13.4
https://hub.docker.com/_/rabbitmq?tab=description&page=1&ordering=last_updated
#docker pull rabbitmq:3.8-management
docker run -d --name rabbit01 -e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \
-p 15672:15672 -p 5672:5672 \
--hostname gmall-rabbit --restart=always \
-v rabbit-data:/var/lib/rabbitmq \
-v rabbit-conf:/etc/rabbitmq \
rabbitmq:3.8-management
Sleuth
#docker pull openzipkin/zipkin:2
docker run -d --restart=always -p 9411:9411 \
--name zipkin \
openzipkin/zipkin:2
SkyWalking;也是同类很不错的中间件
https://skywalking.apache.org/docs/
https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D
需要自制镜像:
https://github.com/alibaba/Sentinel/wiki/%E6%8E%A7%E5%88%B6%E5%8F%B0#2-%E5%90%AF%E5%8A%A8%E6%8E%A7%E5%88%B6%E5%8F%B0
# 1、下载sentinel对应版本控制台
wget https://github.com/alibaba/Sentinel/releases/download/1.8.2/sentinel-dashboard-1.8.2.jar
#官网默认的启动命令
java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar
#在下载的jar包位置编写如下
vim Dockerfile
FROM openjdk:8
COPY sentinel-dashboard-1.8.2.jar /app.jar
EXPOSE 8080
ENTRYPOINT ["java","-Dserver.port=8080","-Dcsp.sentinel.dashboard.server=localhost:8080","-Dproject.name=sentinel-dashboard","-jar","/app.jar"]
#构建自己镜像. 别忘了命令后面的小数点
docker build -t sentinel:1.8.2 -f Dockerfile .
#推送镜像【可选】
docker login
# 1、改变镜像名,加上自己的前缀地址
docker tag sentinel:1.8.2 leifengyang/sentinel:1.8.2
docker push leifengyang/sentinel:1.8.2
#启动sentinel容器
docker run -d -p 8858:8080 \
--name sentinel-dashboard --restart=always \
leifengyang/sentinel:1.8.2
https://nacos.io/zh-cn/docs/what-is-nacos.html
参照文档使用数据库版部署方式
#1、下载nacos数据库文件
#https://github.com/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql
#2、要执行以下文件,按照要求先创库
CREATE DATABASE `nacos_config`;
USE DATABASE `nacos_config`;
####################################################
/*
* 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、准备nacos配置文件信息 conf/application.properties
mkdir -p /mydata/nacos/conf/ && vim /mydata/nacos/conf/application.properties
##内容如下,注意改成自己数据库域名和账号密码
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://mysql-01:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root
#docker pull nacos/nacos-server:2.0.2
docker run -d -p 8848:8848 --name=nacos \
--link b9c669ab9c17:mysql-01 \
-v /mydata/nacos/conf/:/home/nacos/init.d/ \
-e MODE=standalone \
--restart=always \
nacos/nacos-server:2.0.2
#访问8848,默认账号密码为 nacos:nacos 进去以后一定修改为自己的;如: lfy123456
docker run -d -p 8848:8848 --name=nacos \
-e MODE=standalone \
--restart=always \
nacos/nacos-server:2.0.2
OSS(Object Storage Service):对象存储服务
http://docs.minio.org.cn/docs/
docker run -p 9000:9000 -p 9001:9001 -d --restart=always \
-v /ossdata:/data \
-v /mydata/minio/config:/root/.minio \
-v /etc/localtime:/etc/localtime:ro \
-e "MINIO_ACCESS_KEY=admin" \
-e "MINIO_SECRET_KEY=admin123456" \
--name minio minio/minio \
server --console-address ":9001" /data
docker run -it -d --name nginx -p 9000:9000 -v /usr/local/nginx/html:/usr/share/nginx/html -v /usr/local/nginx/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx/logs:/var/log/nginx nginx:1.10
参数说明