docker-compose部署tdengine 3.3.0.0集群

说明:官方文档提供docker swarm部署多台服务器集群方式,不适用于公司目前部署方式,故研究多台服务器docker部署集群
目前只是部署,还未生产使用,仅供参考

一、环境:
服务器3台,系统为Ubuntu 20.04.4 LTS
emscluster01 10.1.1.103
emscluster02 10.1.1.104
emscluster03 10.1.1.105

二、部署文档
2.1 节点1文档

version: "3"
services:
  td-cluster:
    image: tdengine/tdengine:3.3.0.0
    hostname: emscluster01
    container_name: emscluster01
    privileged: true
    environment:
      TAOS_FQDN: "emscluster01"
      TAOS_FIRST_EP: "emscluster01"
      emscluster01: "10.1.1.103"
      emscluster02: "10.1.1.104"
      emscluster03: "10.1.1.105"
    network_mode: host
    volumes:
      - ~/tdengine-cluster/data:/var/lib/taos
      - ~/tdengine-cluster/log:/var/log/taos
      - ~/tdengine-cluster/conf/taos.cfg:/etc/taos/taos.cfg
      - ~/tdengine-cluster/conf/explorer.toml:/etc/taos/explorer.toml
      - ~/tdengine-cluster/conf/taosadapter.toml:/etc/taos/taosadapter.toml
      - ~/tdengine-cluster/conf/taoskeeper.toml:/etc/taos/taoskeeper.toml

2.2 节点2文档

version: "3"
services:
  td-cluster:
    image: tdengine/tdengine:3.3.0.0
    hostname: emscluster02
    container_name: emscluster02
    privileged: true
    environment:
      emscluster01: "10.1.1.103"
      emscluster02: "10.1.1.104"
      emscluster03: "10.1.1.105"
    network_mode: host
    volumes:
      - ~/tdengine-cluster/data:/var/lib/taos
      - ~/tdengine-cluster/log:/var/log/taos
      - ~/tdengine-cluster/conf/taos.cfg:/etc/taos/taos.cfg
      - ~/tdengine-cluster/conf/explorer.toml:/etc/taos/explorer.toml
      - ~/tdengine-cluster/conf/taosadapter.toml:/etc/taos/taosadapter.toml
      - ~/tdengine-cluster/conf/taoskeeper.toml:/etc/taos/taoskeeper.toml

2.3 节点3文档

version: "3"
services:
  td-cluster:
    image: tdengine/tdengine:3.3.0.0
    hostname: emscluster03
    container_name: emscluster03
    privileged: true
    environment:
      emscluster01: "10.1.1.103"
      emscluster02: "10.1.1.104"
      emscluster03: "10.1.1.105"
    network_mode: host
    volumes:
      - ~/tdengine-cluster/data:/var/lib/taos
      - ~/tdengine-cluster/log:/var/log/taos
      - ~/tdengine-cluster/conf/taos.cfg:/etc/taos/taos.cfg
      - ~/tdengine-cluster/conf/explorer.toml:/etc/taos/explorer.toml
      - ~/tdengine-cluster/conf/taosadapter.toml:/etc/taos/taosadapter.toml
      - ~/tdengine-cluster/conf/taoskeeper.toml:/etc/taos/taoskeeper.toml

三、服务器配置如下
根据每台服务器实际域名或地址进行修改
explorer.toml

# This is a automacically generated configuration file for Explorer in [TOML](https://toml.io/) format.
#
# Here is a full list of available options.

# Explorer server port to listen on.
# Default is 6060.
#
port = 6060

# IPv4 listen address.
# Default is 0.0.0.0
addr = "0.0.0.0"

# IPv6 listen address.

# ipv6 = "::1"

# Explorer server log level.
# Default is "info"
#
log_level = "info"

# REST API endpoint to connect to the cluster.
#   Default is "http://buildkitsandbox:6041" - the default endpoint for REST API.
#
cluster = "http://emscluster01:6041"

# API endpoint for data replication/backup/data sources. No default option.
#   Set it to API URL like "http://buildkitsandbox:6050".
#
x_api ="http://emscluster01:6050"

# GRPC endpoint for "Agent"s.
#   Default is "http://buildkitsandbox:6055" - the default endpoint for taosX grpc API.
#   You should set it to public IP or FQDN name like:
#   "http://192.168.111.111:6055" or "http://node1.company.domain:6055" and
#   ensure to add the port to the exception list of the firewall if it enabled.
grpc = "http://emscluster01:6055"

# cloud open api.
# cloud_open_api = "https://pre.ali.cloud.taosdata.com/openapi"

# Enable ssl
# If the following two files exist, enable ssl protocol
#
[ssl]

# SSL certificate
#
# certificate = "/path/to/ca.file"

# SSL certificate key
#
# certificate_key = "/path/to/key.file"

taosadapter.toml

debug = true
taosConfigDir = ""
port = 6041
logLevel = "info"
httpCodeServerError = false
SMLAutoCreateDB = false

[cors]
allowAllOrigins = true

#[pool]
#maxConnect = 0
#maxIdle = 0
#idleTimeout = 0

[ssl]
enable = false
certFile = ""
keyFile = ""

[log]
#path = "/var/log/taos"
rotationCount = 30
rotationTime = "24h"
rotationSize = "1GB"
enableRecordHttpSql = false
sqlRotationCount = 2
sqlRotationTime = "24h"
sqlRotationSize = "1GB"

[monitor]
disable = true
collectDuration = "3s"
disableCollectClientIP = true
incgroup = false
pauseQueryMemoryThreshold = 70
pauseAllMemoryThreshold = 80
identity = ""
writeToTD = false
user = "root"
password = "taosdata"
writeInterval = "30s"

[uploadKeeper]
enable = false
url = "http://127.0.0.1:6043/adapter_report"
interval = "15s"
timeout = "5s"
retryTimes = 3
retryInterval = "5s"

[opentsdb]
enable = true

[influxdb]
enable = true

[statsd]
enable = false
port = 6044
db = "statsd"
user = "root"
password = "taosdata"
worker = 10
gatherInterval = "5s"
protocol = "udp4"
maxTCPConnections = 250
tcpKeepAlive = false
allowPendingMessages = 50000
deleteCounters = true
deleteGauges = true
deleteSets = true
deleteTimings = true

[collectd]
enable = false
port = 6045
db = "collectd"
user = "root"
password = "taosdata"
worker = 10


[opentsdb_telnet]
enable = false
maxTCPConnections = 250
tcpKeepAlive = false
dbs = ["opentsdb_telnet", "collectd", "icinga2", "tcollector"]
ports = [6046, 6047, 6048, 6049]
user = "root"
password = "taosdata"
batchSize = 1
flushInterval = "0s"

[node_exporter]
enable = false
db = "node_exporter"
user = "root"
password = "taosdata"
urls = ["http://emscluster01:9100"]
responseTimeout = "5s"
httpUsername = ""
httpPassword = ""
httpBearerTokenString = ""
caCertFile = ""
certFile = ""
keyFile = ""
insecureSkipVerify = true
gatherDuration = "5s"

[prometheus]
enable = true

[tmq]
releaseIntervalMultiplierForAutocommit = 2

taos.cfg

########################################################
#                                                      #
#                  Configuration                       #
#                                                      #
########################################################

######### 0. Client only configurations #############

# The interval for CLI to send heartbeat to mnode
# shellActivityTimer        3


############### 1. Cluster End point ############################

# The end point of the first dnode in the cluster to be connected to when this dnode or the CLI utility is started
# firstEp                   hostname:6030
firstEp                   emscluster01:6030

# The end point of the second dnode to be connected to if the firstEp is not available
# secondEp
secondEp emscluster02:6030


############### 2. Configuration Parameters of current dnode #####

# The FQDN of the host on which this dnode will be started. It can be IP address
fqdn                      emscluster01

# The port for external access after this dnode is started
# serverPort                6030
serverPort                6030

# The maximum number of connections a dnode can accept
# maxShellConns             5000

# The directory for writing log files, if you are using Windows platform please change to Windows path
# logDir                    /var/log/taos

# All data files are stored in this directory, if you are using Windows platform please change to Windows path
# dataDir                   /var/lib/taos

# temporary file's directory, if you are using Windows platform please change to Windows path
# tempDir                   /tmp/

# Switch for allowing to collect and report service usage information
# telemetryReporting        1

# Switch for allowing to collect and report crash information
# crashReporting            1

# The maximum number of vnodes supported by this dnode
# supportVnodes             0

# The interval of this dnode reporting status to mnode, [1..10] seconds
# statusInterval            1

# The minimum sliding window time, milli-second
# minSlidingTime            10

# The minimum time window, milli-second
# minIntervalTime           10

# The maximum allowed query buffer size in MB during query processing for each data node
# -1 no limit (default)
# 0  no query allowed, queries are disabled
# queryBufferSize           -1

# The compressed rpc message, option:
#  -1 (no compression)
#   0 (all message compressed),
# > 0 (rpc message body which larger than this value will be compressed)
# compressMsgSize           -1

# query retrieved column data compression option:
#  -1 (no compression)
#   0 (all retrieved column data compressed),
# > 0 (any retrieved column size greater than this value all data will be compressed.)
# compressColData           -1

# system time zone
# timezone                  UTC-8

# system time zone (for windows 10)
# timezone              Asia/Shanghai (CST, +0800)

# system locale
# locale                    en_US.UTF-8

# system charset
# charset                   UTF-8

# stop writing logs when the disk size of the log folder is less than this value
# minimalLogDirGB           1.0

# stop writing temporary files when the disk size of the tmp folder is less than this value
# minimalTmpDirGB           1.0

# if free disk space is less than this value, this dnode will fail to start
# minimalDataDirGB          2.0

# enable/disable system monitor
# monitor                   1

# enable/disable audit log
# audit                     1

# enable/disable audit create table
# auditCreateTable                     1

# The following parameter is used to limit the maximum number of lines in log files.
# max number of lines per log filters
# numOfLogLines             10000000

# write log in async way: 1 - async, 0 - sync
# asyncLog                  1

# time period of keeping log files, in days
# logKeepDays               0


############ 3. Debug Flag and levels #############################################

# The following parameters are used for debug purpose only by this dnode.
# debugFlag is a 8 bits mask: FILE-SCREEN-UNUSED-HeartBeat-DUMP-TRACE_WARN-ERROR
# Available debug levels are:
# 131: output warning and error
# 135: output debug, warning and error
# 143: output trace, debug, warning and error to log
# 199: output debug, warning and error to both screen and file
# 207: output trace, debug, warning and error to both screen and file

# debug flag for all log type, take effect when non-zero value
# debugFlag                 0

# debug flag for timer
# tmrDebugFlag              131

# debug flag for util
# uDebugFlag                131

# debug flag for rpc
# rpcDebugFlag              131

# debug flag for jni
# jniDebugFlag              131

# debug flag for query
# qDebugFlag                131

# debug flag for client driver
# cDebugFlag                131

# debug flag for dnode messages
# dDebugFlag                135

# debug flag for vnode
# vDebugFlag                131

# debug flag for meta management messages
# mDebugFlag                135

# debug flag for wal
# wDebugFlag                135

# debug flag for sync module
# sDebugFlag                135

# debug flag for tsdb
# tsdbDebugFlag             131

# debug flag for tq
# tqDebugFlag               131

# debug flag for fs
# fsDebugFlag               131

# debug flag for udf
# udfDebugFlag              131

# debug flag for sma
# smaDebugFlag              131

# debug flag for index
# idxDebugFlag              131

# debug flag for tdb
# tdbDebugFlag              131

# debug flag for meta
# metaDebugFlag             131

# generate core file when service crash
# enableCoreFile            1
monitor 1
monitorFQDN emscluster01
audit 1

taoskeeper.toml

# Start with debug middleware for gin
debug = false

# Listen port, default is 6043
port = 6043

# log level
loglevel = "info"

# go pool size
gopoolsize = 50000

# interval for metrics
RotationInterval = "15s"

[tdengine]
#host = "buildkitsandbox"
host = "emscluster01"
port = 6041
username = "root"
password = "taosdata"

[metrics]
# metrics prefix in metrics names.
prefix = "taos"

# database for storing metrics data
database = "log"

# export some tables that are not super table
tables = []

# database options for db storing metrics data
[metrics.databaseoptions]
cachemodel = "none"

[environment]
# Whether running in cgroup.
incgroup = false

[audit]
[audit.database]
name = "audit"
[audit.database.options]
cachemodel = "none"

[log]
#path = "/var/log/taos"
rotationCount = 5
rotationTime = "24h"
rotationSize = 100000000

四、实际验证

taos> show dnodes;
     id      |            endpoint            | vnodes | support_vnodes |    status    |       create_time       |       reboot_time       |              note             
===========================================================================================================================================================================
           1 | emscluster01:6030              |      8 |              8 | ready        | 2024-08-14 09:17:25.996 | 2024-08-14 09:17:25.950 |                               
           2 | emscluster02:6030              |      8 |              8 | ready        | 2024-08-14 09:21:16.497 | 2024-08-14 09:31:33.495 |                               
           3 | emscluster03:6030              |      8 |              8 | ready        | 2024-08-14 09:29:05.673 | 2024-08-14 09:43:35.499 |                               
Query OK, 3 row(s) in set (0.001558s)

以下是使用docker-compose部署Redis集群的步骤: 1.创建一个目录,例如redis-cluster,并在该目录中创建一个docker-compose.yaml文件。 2.在docker-compose.yaml文件中编写以下内容: ```yaml version: '3' services: redis-1: image: redis:6.0.9 command: redis-server /usr/local/etc/redis/redis.conf volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf ports: - "6379" networks: - redis-cluster redis-2: image: redis:6.0.9 command: redis-server /usr/local/etc/redis/redis.conf volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf ports: - "6380" networks: - redis-cluster redis-3: image: redis:6.0.9 command: redis-server /usr/local/etc/redis/redis.conf volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf ports: - "6381" networks: - redis-cluster networks: redis-cluster: driver: bridge ``` 3.在redis-cluster目录中创建一个redis.conf文件,并将以下内容复制到文件中: ```conf bind 0.0.0.0 port 6379 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes requirepass 1111 masterauth 1111 ``` 4.在终端中导航到redis-cluster目录,并运行以下命令启动Redis集群: ```shell docker-compose up -d ``` 5.使用以下命令进入redis-1容器: ```shell docker exec -it redis-cluster_redis-1_1 /bin/bash ``` 6.在redis-1容器中,使用以下命令创建Redis集群: ```shell redis-cli --cluster create 172.20.0.2:6379 172.20.0.3:6379 172.20.0.4:6379 --cluster-replicas 0 ``` 7.现在,您已经成功地使用docker-compose部署了Redis集群
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值