Docker以及常用中间件的安装

Docker以及常用中间件的安装

一:安装Docker

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基本命令

1.拉取启动镜像

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

2.基础命令

#删除所有的容器
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

3.使用docker-compose运行.yaml文件批量创建启动容器具体设置参照官方文档

#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-net

mysql-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-net

mysql-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-net

redis:
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-net

elasticsearch:
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-net

kibana:
image: kibana:7.13.4
ports:
- “5601:5601”
volumes:
- /etc/localtime:/etc/localtime:ro
environment:
- “ELASTICSEARCH_HOSTS=http://elasticsearch:9200”
restart: always
networks:
- mall-net

filebeat:
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-net

rabbitmq:
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-net

zipkin:
image: openzipkin/zipkin:2
ports:
- “9411:9411”
volumes:
- /etc/localtime:/etc/localtime:ro
restart: always
networks:
- mall-net

sentinel:
image: leifengyang/sentinel:1.8.2
ports:
- “8858:8080”
volumes:
- /etc/localtime:/etc/localtime:ro
restart: always
networks:
- mall-net

nacos:
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-net

minio:
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-net

nginx:
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)](

三:安装中间件

0、Jenkins

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、MySQL

##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.配置 主机忽略每个库自己特有的四个基本库
从机

  1. 执行sql 配置主机 开通从机连接主机的账号
    show master status 查看主机状态
  2. 执行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

2、Redis

## 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

3、ELK

# 1、设置Linux进程限制内存
vim /etc/sysctl.conf
vm.max_map_count=655360
# 2、设置生效
sysctl -p
# 或者 sysctl --system 
1、ElasticSearch
# 提前授权
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
2、Kibana
docker run --name kib01 -d --restart=always  \
--link 02b39a5a3874:es01 -p 5601:5601 -e "ELASTICSEARCH_HOSTS=http://es01:9200" \
kibana:7.13.4
#小知识: --link <name or id>:alias

ELK:ElasticSearch+Logstash+Kibana

EFK:ElasticSearch+Filebeats+Kibana

3、Filebeats
# 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

Beats design

4、Logstash
  • 因为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

4、RabbitMQ

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

5、Zipkin

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/

6、Sentinel

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

7、Nacos

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

8、Minio

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

9、Nginx

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

  • 参数说明

    • -p 80:80 映射端口
    • -v /usr/local/nginx/html:/usr/share/nginx/html 前端映射文件
    • -v /usr/local/nginx/nginx.conf:/etc/nginx/nginx.conf 配置文件(注意:配置的路径是docker路径)
    • v /usr/local/nginx/logs:/var/log/nginx 日志挂载
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
常用中间件种类及其对应的系统环境如下: 1. Web服务器中间件:用于处理HTTP请求和响应,常见的Web服务器中间件有Apache、Nginx和IIS等,可以在Windows、Linux等操作系统上运行。 2. 数据库中间件:用于连接和管理多个数据库,常见的数据库中间件有MySQL Proxy、MyCAT、Trafodion等,可以运行在Windows、Linux等操作系统上。 3. 消息队列中间件:用于解耦消息的发送和接收,常见的消息队列中间件有RabbitMQ、ActiveMQ、Kafka等,可以运行在Windows、Linux等操作系统上。 4. 缓存中间件:用于加速数据访问,常见的缓存中间件有Redis、Memcached等,可以运行在Windows、Linux等操作系统上。 5. 容器中间件:用于快速部署和管理应用程序,常见的容器中间件Docker、Kubernetes等,可以运行在Windows、Linux等操作系统上。 6. RPC中间件:用于实现远程过程调用,常见的RPC中间件有Dubbo、gRPC等,可以运行在Windows、Linux等操作系统上。 7. 搜索引擎中间件:用于全文检索和分析,常见的搜索引擎中间件有Elasticsearch、Solr等,可以运行在Windows、Linux等操作系统上。 8. 日志中间件:用于收集和管理日志,常见的日志中间件有Fluentd、Logstash等,可以运行在Windows、Linux等操作系统上。 需要注意的是,以上中间件并不是全部,还有许多其他的中间件,不同的中间件有不同的使用场景和优缺点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值