docker多主机部署
TAOS_FIRST_EP=h1.taosdata.com
docker run -d --name tdengine \
-e TAOS_FQDN=h1.taosdata.com \
--hostname h1.taosdata.com \
--add-host h1.taosdata.com:192.168.100.146 \
--add-host h2.taosdata.com:192.168.100.147 \
--add-host h3.taosdata.com:192.168.100.148 \
-p 6030:6030 -p 6041:6041 \
tdengine/tdengine:3.3.6.0docker run -d --name tdengine \
-e TAOS_FQDN=h2.taosdata.com \
-e TAOS_FIRST_EP=h1.taosdata.com \
--hostname h2.taosdata.com \
--add-host h1.taosdata.com:192.168.100.146 \
--add-host h2.taosdata.com:192.168.100.147 \
--add-host h3.taosdata.com:192.168.100.148 \
-p 6030:6030 -p 6041:6041 \
tdengine/tdengine:3.3.6.0docker run -d --name tdengine \
-e TAOS_FQDN=h3.taosdata.com \
-e TAOS_FIRST_EP=h1.taosdata.com \
--hostname h3.taosdata.com \
--add-host h1.taosdata.com:192.168.100.146 \
--add-host h2.taosdata.com:192.168.100.147 \
--add-host h3.taosdata.com:192.168.100.148 \
-p 6030:6030 -p 6041:6041 \
tdengine/tdengine:3.3.6.0创建 mnode
docker exec tdengine taos -s "create mnode on dnode 2"
docker exec tdengine taos -s "create mnode on dnode 3"使用 docker compose 方式启动集群
services:
td1:
image: tdengine/tdengine
environment:
- TAOS_FQDN=td1
td2:
image: tdengine/tdengine
environment:
- TAOS_FQDN=td2
- TAOS_FIRST_EP=td1:6030
td3:
image: tdengine/tdengine
environment:
- TAOS_FQDN=td3
- TAOS_FIRST_EP=td1:6030Kubernetes 部署
有状态服务 StatefulSet
---
apiVersion: v1
kind: Service
metadata:
name: "tdengine"
labels:
app: "tdengine"
spec:
ports:
- name: tcp6030
protocol: "TCP"
port: 6030
- name: tcp6041
protocol: "TCP"
port: 6041
selector:
app: "tdengine"
---
apiVersion: v1
kind: Service
metadata:
name: "tdengine-iot"
labels:
app: "tdengine"
spec:
ports:
- name: tcp6030
protocol: "TCP"
port: 6030
- name: tcp6041
protocol: "TCP"
port: 6041
selector:
app: "tdengine"
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: "tdengine"
labels:
app: "tdengine"
spec:
serviceName: "tdengine"
replicas: 3
updateStrategy:
type: RollingUpdate
selector:
matchLabels:
app: "tdengine"
template:
metadata:
name: "tdengine"
labels:
app: "tdengine"
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- tdengine
topologyKey: kubernetes.io/hostname
containers:
- name: "tdengine"
image: "tdengine/tdengine:3.3.6.0"
imagePullPolicy: "IfNotPresent"
ports:
- name: tcp6030
protocol: "TCP"
containerPort: 6030
- name: tcp6041
protocol: "TCP"
containerPort: 6041
env:
# POD_NAME for FQDN config
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
# SERVICE_NAME and NAMESPACE for fqdn resolve
- name: SERVICE_NAME
value: "tdengine"
- name: STS_NAME
value: "tdengine"
- name: STS_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
# TZ for timezone settings, we recommend to always set it.
- name: TZ
value: "Asia/Shanghai"
# Environment variables with prefix TAOS_ will be parsed and converted into corresponding parameter in taos.cfg. For example, serverPort in taos.cfg should be configured by TAOS_SERVER_PORT when using K8S to deploy
- name: TAOS_SERVER_PORT
value: "6030"
# Must set if you want a cluster.
- name: TAOS_FIRST_EP
value: "$(STS_NAME)-0.$(SERVICE_NAME).$(STS_NAMESPACE).svc.cluster.local:$(TAOS_SERVER_PORT)"
# TAOS_FQND should always be set in k8s env.
- name: TAOS_FQDN
value: "$(POD_NAME).$(SERVICE_NAME).$(STS_NAMESPACE).svc.cluster.local"
volumeMounts:
- name: taosdata
mountPath: /var/lib/taos
startupProbe:
exec:
command:
- taos-check
failureThreshold: 360
periodSeconds: 10
readinessProbe:
exec:
command:
- taos-check
initialDelaySeconds: 5
timeoutSeconds: 5000
livenessProbe:
exec:
command:
- taos-check
initialDelaySeconds: 15
periodSeconds: 20
volumeClaimTemplates:
- metadata:
name: taosdata
spec:
accessModes:
- "ReadWriteOnce"
storageClassName: "longhorn"
resources:
requests:
storage: "20Gi"使用 kubectl 命令部署 TDengine TSDB 集群
kubectl apply -f taosd-service.yaml -n tdengine-test
检查当前集群的节点
kubectl exec -it tdengine-0 -n tdengine -- taos -s "show dnodes"
kubectl exec -it tdengine-1 -n tdengine -- taos -s "show dnodes"
kubectl exec -it tdengine-2 -n tdengine -- taos -s "show dnodes"创建 mnode
kubectl exec -it tdengine-0 -n tdengine -- taos -s "create mnode on dnode 2"
kubectl exec -it tdengine-0 -n tdengine -- taos -s "create mnode on dnode 3"查看 mnode
kubectl exec -it tdengine-1 -n tdengine -- taos -s "show mnodes\G"
kubectl exec -it tdengine-2 -n tdengine -- taos -s "show mnodes\G"
kubectl exec -it tdengine-3 -n tdengine -- taos -s "show mnodes\G"参考文档
集群部署 td官网