Administration Guides
Ces procédures concernent les clusters ClickHouse Technique (stockage des Logs de la plateforme) et Métier.
Il se décline en 2 clusters :
- technique (namespace kosmos-logs) : Backend technique ; Puit de logs
- métier (namespace shared-analytics) : Services aux applications Métier ;
Localisation
Le service est déployé dans kubernetes :
- namespace : kosmos-logs
- pod : chi-clickhouse-cluster-cluster0-0-0-0
- pod : clickhouse-proxy-logs-oidc-proxy-*
- namespace : shared-analytics
- pod : chi-clickhouse-cluster-cluster0-0-0-*
- pod : chk-clickhouse-keeper-cluster0-0-0-*
Configuration Initiale
Dimensionnement
Le cluster est composé de 2 pods minimum pour le service Technique :
- 1 pod proxy
- 1 pod clickhouse pour le stockage des données
Le cluster est composé de 5 pods minimum pour le service Métier :
- 3 pods zookeeper
- 2 pods clickhouse pour le stockage des données
Interfaces
Le service clickhouse Technique est exposé sur le cluster Kubernetes via le service Kubernetes :
$ kubectl -n kosmos-logs get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
chi-clickhouse-cluster-cluster0-0-0 ClusterIP None <none> 9000/TCP,8123/TCP,9009/TCP 15d
clickhouse-clickhouse-cluster ClusterIP None <none> 8123/TCP,9000/TCP 15d
clickhouse-proxy-logs-oidc-proxy ClusterIP 10.43.70.34 <none> 8080/TCP 8d
vector ClusterIP 10.43.157.123 <none> 8686/TCP,8282/TCP,8283/TCP,6514/TCP 15d
vector-headless ClusterIP None <none> 8686/TCP,8282/TCP,8283/TCP,6514/TCP 15d
vector-syslog-svc LoadBalancer 10.43.80.5 10.0.0.220 6514:31912/TCP 15d
Le service clickhouse Métier utilisable par les applications est exposé sur le cluster Kubernetes via le service Kubernetes :
$ kubectl -n shared-analytics get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
chi-clickhouse-cluster-cluster0-0-0 ClusterIP None <none> 9000/TCP,8123/TCP,9009/TCP 15d
chi-clickhouse-cluster-cluster0-0-1 ClusterIP None <none> 9000/TCP,8123/TCP,9009/TCP 15d
chk-clickhouse-keeper-cluster0-0-0 ClusterIP None <none> 2181/TCP,9444/TCP 15d
chk-clickhouse-keeper-cluster0-0-1 ClusterIP None <none> 2181/TCP,9444/TCP 15d
chk-clickhouse-keeper-cluster0-0-2 ClusterIP None <none> 2181/TCP,9444/TCP 15d
clickhouse-clickhouse-cluster ClusterIP None <none> 8123/TCP,9000/TCP 15d
keeper-clickhouse-keeper ClusterIP None <none> 2181/TCP,9444/TCP 15d
Fichiers clés
Fichiers de configuration
| Nom | Path | Description succincte |
|---|---|---|
| config.xml | /etc/clickhouse-server/config.xml | Paramètres de configuration du serveur ClickHouse |
Logs
Pour accéder aux logs, exécuter la commande suivante:
kubectl -n kosmos-logs logs services/clickhouse-clickhouse-cluster
Les logs sont également consultables depuis le grafana admin.
Binaires
| Nom | Path | Description succincte |
|---|---|---|
| clickhouse-client client | /usr/bin/ | Client permettant d'exécuter les commandes SQL de ClikHouse |
Combinaison de défaillance
Les données stockées dans le cluster ClickHouse peuvent être perdues dans certaines situations :
- En cas de suppression/perte de tous les noeuds kubernetes constituant le cluster avec leurs disques attachés
- En cas de nettoyage forcé (par exemple avec
rm -rfou destruction des pv) des volumes attachés aux pods clickhouse
Etat du service Technique
Exécuter les commandes suivantes pour obtenir le statut du service :
kubectl -n kosmos-logs get pod -l app.kubernetes.io/name=clickhouse
kubectl -n kosmos-logs get pod -l app.kubernetes.io/name=logs-oidc-proxy
kubectl -n kosmos-logs get svc
La commande retourne l'état des noeuds du cluster sous forme de tableau. Il faut avoir le statut Running:
$ kubectl -n kosmos-logs get pod -l app.kubernetes.io/name=clickhouse
NAME READY STATUS RESTARTS AGE
chi-clickhouse-cluster-cluster0-0-0-0 1/1 Running 0 15d
$ kubectl -n kosmos-logs get pod -l app.kubernetes.io/name=logs-oidc-proxy
NAME READY STATUS RESTARTS AGE
clickhouse-proxy-logs-oidc-proxy-66c6d7448-rf8p4 1/1 Running 0 8d
$ kubectl -n kosmos-logs get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
chi-clickhouse-cluster-cluster0-0-0 ClusterIP None <none> 9000/TCP,8123/TCP,9009/TCP 15d
clickhouse-clickhouse-cluster ClusterIP None <none> 8123/TCP,9000/TCP 15d
clickhouse-proxy-logs-oidc-proxy ClusterIP 10.43.70.34 <none> 8080/TCP 8d
vector ClusterIP 10.43.157.123 <none> 8686/TCP,8282/TCP,8283/TCP,6514/TCP 15d
vector-headless ClusterIP None <none> 8686/TCP,8282/TCP,8283/TCP,6514/TCP 15d
vector-syslog-svc LoadBalancer 10.43.80.5 10.0.0.220 6514:31912/TCP 15d
Etat du service Métier
Exécuter les commandes suivantes pour obtenir le statut du service :
kubectl -n shared-analytics get pod -l app.kubernetes.io/name=clickhouse
kubectl -n shared-analytics get pod -l app.kubernetes.io/name=keeper
kubectl -n shared-analytics get svc
La commande retourne l'état des noeuds du cluster sous forme de tableau. Il faut avoir le statut Running:
$ kubectl -n shared-analytics get pods -l app.kubernetes.io/name=clickhouse
NAME READY STATUS RESTARTS AGE
chi-clickhouse-cluster-cluster0-0-0-0 1/1 Running 0 14d
chi-clickhouse-cluster-cluster0-0-1-0 1/1 Running 0 14d <- si en mode HA
chi-clickhouse-cluster-cluster0-0-2-0 1/1 Running 0 14d <- si en mode HA
Dans le cas d'un cluster avec clickhouse en mode HA, il faudra aussi jouer cette commande afin de voir l'état des clickhouse-keeper
$ kubectl -n shared-analytics get pods -l app.kubernetes.io/name=keeper
NAME READY STATUS RESTARTS AGE
chk-clickhouse-keeper-cluster0-0-0-0 1/1 Running 0 14d
chk-clickhouse-keeper-cluster0-0-1-0 1/1 Running 0 14d
chk-clickhouse-keeper-cluster0-0-2-0 1/1 Running 0 14d
kubectl -n shared-analytics get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
chi-clickhouse-cluster-cluster0-0-0 ClusterIP None <none> 9000/TCP,8123/TCP,9009/TCP 15d
chi-clickhouse-cluster-cluster0-0-1 ClusterIP None <none> 9000/TCP,8123/TCP,9009/TCP 15d <- si en mode HA
chk-clickhouse-keeper-cluster0-0-0 ClusterIP None <none> 2181/TCP,9444/TCP 15d <- si en mode HA
chk-clickhouse-keeper-cluster0-0-1 ClusterIP None <none> 2181/TCP,9444/TCP 15d <- si en mode HA
chk-clickhouse-keeper-cluster0-0-2 ClusterIP None <none> 2181/TCP,9444/TCP 15d <- si en mode HA
clickhouse-clickhouse-cluster ClusterIP None <none> 8123/TCP,9000/TCP 15d
keeper-clickhouse-keeper ClusterIP None <none> 2181/TCP,9444/TCP 15d <- si en mode HA
Augmenter la taille des PVC de ClickHouse
Procédure qui permet d'augmenter la taille des volumes persistents d'une instance ClickHouse.
La procédure décrite ci-dessous est donnée à titre d'exemple pour l'instance ClickHouse Technique. Elle est également valable pour l'instance ClickHouse Métier en adaptant le namespace et le nom du cluster.
Vérifier les PVC utilisés
$ kubectl -n kosmos-logs get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
storage-vc-template-chi-clickhouse-cluster-cluster0-0-0-0 Bound pvc-526b3449-1961-418f-b738-8e32d74ff514 20Gi RWO lvm-provisioner <unset> 15d
Editer la CRD
Ci-dessous un exemple pour augmenter la taille des PVC à 64Gi.
kubectl -n kosmos-logs patch clickhouseinstallation clickhouse-cluster --type=merge -p '{"spec":{"templates": {"volumeClaimTemplates": [{"name": "storage-vc-template","spec":{"resources":{"requests":{"storage":"64Gi"}}}}]}}}'
Les PVC vont être augmentés l'un après l'autre. Une fois le PVC redimensionné, le pod sera redémarré. Le temps que l'opération se termine complètement, la CRD sera à l'état InProgress.
kubectl -n kosmos-logs get clickhouseinstallation clickhouse-cluster
NAME CLUSTERS HOSTS STATUS HOSTS-COMPLETED AGE SUSPEND
clickhouse-cluster 1 3 InProgress 1 40d
Une fois l'opération terminée, le statut passe à Completed
kubectl -n kosmos-logs get clickhouseinstallation clickhouse-cluster
NAME CLUSTERS HOSTS STATUS HOSTS-COMPLETED AGE SUSPEND
clickhouse-cluster 1 3 Completed 40d
Se connecter
Pour accéder à clickhouse en ligne de commandes, accéder au pod : par exemple 'chi-clickhouse-cluster-cluster0-0-0-0' pour le métier.
Lancer le client clickhouse clickhouse-client puis utiliser les commandes standard de ce client :
clickhouse@chi-clickhouse-cluster-cluster0-0-0-0:/$ clickhouse-client
ClickHouse client version 24.8.14.10501.altinitystable (altinity build).
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 24.8.14.
...
Accéder aux données
Utiliser les commandes standard du client clickhouse. Exemple :
chi-clickhouse-cluster-... :) show databases;
SHOW DATABASES
Query id: c3126b89-8c65-4dbf-a6b7-077c73ca17d7
┌─name───────────────┐
1. │ INFORMATION_SCHEMA │
2. │ ch337 │
3. │ chmlaeid │
4. │ default │
5. │ information_schema │
6. │ ivvqchbas │
7. │ ivvqchprod │
8. │ system │
9. │ testbigfilech2 │
10. │ testhaguer22 │
└────────────────────┘
10 rows in set. Elapsed: 0.003 sec.
chi-clickhouse-cluster-... :) use ivvqchbas;
USE ivvqchbas
Query id: 1058d251-eeb7-4fcd-80f7-c005300951c6
Ok.
0 rows in set. Elapsed: 0.002 sec.
chi-clickhouse-cluster-...l :) show tables;
SHOW TABLES
Query id: 50aa8562-7837-4024-80ab-0b9afe0ebe32
┌─name───────┐
1. │ t_articles │
2. │ t_journaux │
3. │ t_laposte │
└────────────┘
3 rows in set. Elapsed: 0.004 sec.
chi-clickhouse-cluster-... :) select * from t_laposte;
SELECT *
FROM t_laposte
Query id: a198f976-c122-4eec-81fe-0c2a6aff236a
┌─id─┬─code_postal─┬─nom_commune─────┬─coordonnees_gps─┬─confidentialite─┐
1. │ 0 │ 31170 │ TOURNEFEUILLE │ 123.456 │ NP │
2. │ 0 │ 31000 │ TOULOUSE │ 123.456 │ NP │
3. │ 0 │ 37000 │ TOURS │ 123.456 │ NP │
4. │ 0 │ 99000 │ TOLEDE │ 654.456 │ DR │
5. │ 0 │ 99000 │ TOMBOUCTOU │ 999.456 │ DR │
6. │ 0 │ 12345 │ ARRAS │ 566.456 │ NP │
7. │ 0 │ 23456 │ ABBEVILLE │ 566.456 │ NP │
8. │ 0 │ 34567 │ AZERTY │ 00000.111 │ DR_SF │
9. │ 0 │ 97150 │ GOSIER │ 123.456 │ NP │
10. │ 0 │ 97500 │ SAINTE-ROSE │ 123.456 │ NP │
11. │ 0 │ 97420 │ VIEUX-HABITANTS │ 123.456 │ NP │
12. │ 0 │ 97150 │ CD pour test │ 123.456 │ CD │
13. │ 0 │ 37150 │ CD2 pour test │ 123.456 │ CD │
14. │ 0 │ 31170 │ TOURNEFEUILLE │ 123.456 │ NP │
15. │ 0 │ 31000 │ TOULOUSE │ 123.456 │ NP │
16. │ 0 │ 37000 │ TOURS │ 123.456 │ NP │
17. │ 0 │ 99000 │ TOLEDE │ 654.456 │ DR │
18. │ 0 │ 99000 │ TOMBOUCTOU │ 999.456 │ DR │
19. │ 0 │ 12345 │ ARRAS │ 566.456 │ NP │
20. │ 0 │ 23456 │ ABBEVILLE │ 566.456 │ NP │
21. │ 0 │ 34567 │ AZERTY │ 00000.111 │ DR_SF │
22. │ 0 │ 97150 │ GOSIER │ 123.456 │ NP │
23. │ 0 │ 97500 │ SAINTE-ROSE │ 123.456 │ NP │
24. │ 0 │ 97420 │ VIEUX-HABITANTS │ 123.456 │ NP │
25. │ 0 │ 97150 │ CD pour test │ 123.456 │ CD │
26. │ 0 │ 37150 │ CD2 pour test │ 123.456 │ CD │
└────┴─────────────┴─────────────────┴─────────────────┴─────────────────┘
26 rows in set. Elapsed: 0.005 sec.