# Docker部署
# 环境要求
# 硬件环境
- CPU:所有的x86-64架构
- 内存:与最大单图规模相关
# 系统环境
- OS: CentOS 7+、Ubuntu 16+
- docker: docker-ce 20+
- docker-compose: 1.20+(可选,用于管理整体项目的部署)
# 依赖项
- elasticsearch
- mysql
# eZooDB
以下示例内容所使用的构建包,是基于CentOS8、32G内存的环境
# 镜像源
获取到压缩包后加载镜像
docker load -i xxx.tar
# 仅启动图数据库
镜像包括eZooDB、eZoo-Studio,可以仅启动图数据库,不启动图平台
启动镜像时,需要指定端口映射和图数据数据卷映射以及可选的环境变量配置,启动命令如下
docker run -d \
-p 9090:9090 -p 9898:9898 \
-e EZOO_SERVER_TYPE=STANDALONE \
-e STUDIO_SERVER_HOST=xxx \ #指定图平台部署的nginx地址,例如 http://192.168.1.11
-v /data/ezoodb/data:/var/lib/ezoodb/data \
-v /data/ezoodb/log:/var/lib/ezoodb/log \
--user 0 \
--name ezoodb ezoodbmerge:1.0
# 启动图数据库和图平台
# 依赖项配置
完成依赖项的配置:mysql、es,主要需要配置mysql和es的连接信息,通过环境变量配置,需要指定的环境变量如下所示
推荐使用docker集群的方式启动服务,启动时为图平台配置单独的es和mysql
MYSQL_URL: MySQL连接地址,默认为jdbc:mysql://127.0.0.1:3306/ezoo_service?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
MYSQL_USER: MySQL用户,默认为root
MYSQL_PASS: MySQL密码,默认为root
ELASTICSEARCH_URL: es连接地址,格式为host:port
ELASTICSEARCH_SCHEMA: 访问es的schema,默认为http
# 注意,如果es未开启认证,下面的环境变量可以无需配置
ELASTICSEARCH_USER: es开启认证后访问es的用户名,默认为elastic
ELASTICSEARCH_PASS: es开启认证后访问es的密码,默认为ezoo123456
# 全部可选的环境变量
STUDIO_SERVER_HOST: 前端nginx服务绑定的ip
EZOO_SERVER_TYPE: ezoodb服务类型,单点(STANDALONE)或者集群(REPLICASET),默认为单点
EZOO_CONFIG_FILE_PATH: 可以手动映射图配置文件进入容器后指定配置文件路径,推荐不设置
MYSQL_URL: MySQL连接地址,默认为jdbc:mysql://127.0.0.1:3306/ezoo_service?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
MYSQL_USER: MySQL用户,默认为root
MYSQL_PASS: MySQL密码,默认为root
ELASTICSEARCH_URL: es连接地址,格式为host:port
ELASTICSEARCH_SCHEMA: 访问es的schema,默认为http
ELASTICSEARCH_USER: es开启认证后访问es的用户名
ELASTICSEARCH_PASS: es开启认证后访问es的密码
EZOODB_USER: 图数据库用户名,默认为root
EZOODB_PASS: 图数据库password,默认为 123456
CORN_ENABLED: 是否开启服务端定时任务,包括数据同步等定时任务
# 端口设置
docker启动时需要开放9090、9898、9000、80端口
- 9090:用于tcp连接图数据库
- 9898:用于http连接图数据库
- 9000:用于访问图后端服务的http api
- 80:用于访问图控制平台
# 启动docker集群
提供docker-compose.yml配置文件和各个服务的自定义配置文件,通过docker-compose命令对整体服务进行管理
主要包括用于监控服务器状态的elk集群以及用于图平台数据存储的mysql数据库,详细说明请查看下面的配置文件示例
# 配置文件示例
version: "3" #版本号
volumes: # 指定挂载图数据的挂载卷
ezoo-data:
name: ezoo-data
driver: local
driver_opts:
o: bind
type: none
device: /data/ezoodb
services: # 指定要启动的服务
# elasticsearch,用于图平台的点sug等,需要使用图平台必须添加
elasticsearch: #服务名称(不是容器名)
image: elasticsearch:7.17.2 #使用的镜像
restart: "always" #重启策略,能够使服务器始终运行,生产环境推荐使用
environment:
- discovery.type=single-node
- xpack.security.enabled=true
- ELASTIC_PASSWORD=ezoo123456
- "ES_JAVA_OPTS=-Xms512m -Xmx4096m"
ports:
- "9200:9200"
container_name: elasticsearch #容器名称
# 下方的其他elk相关服务都用在图平台的监控上,不需要使用主机监控时无需启动
kibana:
image: kibana:7.17.2
restart: "always"
ports:
- "5601:5601"
container_name: kibana
environment:
- elasticsearch_url=elasricsearch:9200
volumes:
- ./configs/kibana.yml:/usr/share/kibana/config/kibana.yml
links:
- elasticsearch:elasticsearch #容器关联elasticsearch是别名
depends_on:
- elasticsearch
logstash:
image: logstash:7.17.2
restart: "always"
container_name: logstash
ports:
- "5044:5044"
- "5045:5045"
volumes:
- ./configs/ezoo_pattern:/usr/share/logstash/patterns/ezoo_pattern
- ./configs/logstash-filebeat.conf:/usr/share/logstash/pipeline/logstash.conf
depends_on:
- elasticsearch
links:
- elasticsearch:elasticsearch
filebeat:
image: elastic/filebeat:7.17.2
restart: "always"
container_name: filebeat
volumes:
- ./configs/filebeat.yml:/usr/share/filebeat/filebeat.yml
- /var/run/docker.sock:/var/run/docker.sock:ro
- /var/logs:/var/logs:ro
user: "root"
depends_on:
- elasticsearch
- kibana
- logstash
links:
- logstash:logstash
- kibana:kibana
metricbeat:
image: elastic/metricbeat:7.17.2
restart: "always"
container_name: metricbeat
network_mode: host
environment:
- -system.hostfs=/hostfs
- system.hostfs=/hostfs
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /proc:/hostfs/proc:ro
- /sys/fs/cgroup:/hostfs/sys/fs/cgroup:ro
- /:/hostfs:ro
- ./configs/mestricbeat.yml:/usr/share/metricbeat/metricbeat.yml
- ./configs/modules.d:/usr/share/metricbeat/modules.d:ro
user: "root"
# 图数据库配置,指定后启动集成版的图数据库
ezoodb:
image: ezoodbmerge:1.0 #使用的镜像
restart: "always" #重启策略,能够使服务器始终运行,生产环境推荐使用
environment:
- MYSQL_URL=jdbc:mysql://127.0.0.1:3306/ezoo_service?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
- STUDIO_SERVER_HOST=http://192.168.1.11
container_name: ezoodb #容器名称
# 指定前面配置的数据卷的挂载,将所有图数据都挂载出来
volumes:
- ezoo-data:/var/lib/ezoodb/
# 主机共享网络,指定后无需再指定要映射的端口
network_mode: host
user: "root" #以root启动
depends_on:
- elasticsearch
- mysql
# 图平台需要使用mysql存储用户等信息,不使用图平台时无需配置
mysql:
image: mysql:5.7
ports:
- "3306:3306"
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
volumes:
- ./configs/ezoo_service.sql:/docker-entrypoint-initdb.d/1_ezoo_service.sql
- {data_dir}/mysql:/var/lib/mysql
container_name: mysql