
相信大家看過《聽說,你的Loki還是單體?(上篇)》之后對Loki的分布式架構(gòu)有了一定的認(rèn)識,那么本篇主要就是對上篇內(nèi)容的實踐。小白主要提供docker-compose和helm兩種方式將部署Loki集群的Demo版本。
在正式部署之前,我們還是先來看下Loki整體架構(gòu)如下圖:

我們本次部署清單里面主要涉及到的組件如下:
| 組件 | 副本數(shù) | 說明 |
|---|---|---|
| Cassandra | 1 | Loki Index存儲 |
| Minio | 1 | Loki S3存儲 |
| Consul | 1 | Loki 組件狀態(tài)和哈希環(huán)存儲 |
| Redis | 1 | Loki 緩存 |
| Gateway | 2 | Loki 網(wǎng)關(guān) |
| Distributor | 3 | Loki 組件 |
| Ingester | 3 | Loki 組件 |
| Querier | 3 | Loki 組件 |
| Query-Frontend | 2 | Loki 組件 |
| Table-Manager | 1 | Loki 組件 |
下載部署代碼
$ git clone https://github.com/CloudXiaobai/loki-cluster-deploy.git
聲明:以下部署均適用于demo環(huán)境,大家切勿直接用于生產(chǎn)環(huán)境
對于生產(chǎn)環(huán)境,請務(wù)先解決Cassandra和Consul服務(wù)的高可用
通過docker-compose部署
- 啟動服務(wù)
$ cd loki-cluster-deploy/demo/docker-compose
$ docker-compose up -d
- 服務(wù)清理
如果部署過程中遇到問題要清理環(huán)境的話,需要執(zhí)行兩個步驟
1. 停止容器
$ docker-compose down
2. 刪除本地卷
$ docker volume rm
<docker-compose_cassandra_data>
<docker-compose_consul_data>
<docker-compose_minio_data>
通過helm部署
- 進(jìn)入helm 目錄
$ cd loki-cluster-deploy/demo/helm/loki-cluster-demo
- 聲明StorageClass
$ cat values.yaml
...
loki-minio:
persistence:
- name: data
storageClass: "<your-StorageClass>"
size: 10Gi
accessMode: ReadWriteOnce
mount_path: /data
loki-consul:
persistence:
- name: data
storageClass: "<your-StorageClass>"
size: 1Gi
accessMode: ReadWriteOnce
mount_path: /consul/data
loki-cassandra:
persistence:
- name: data
storageClass: "<your-StorageClass>"
size: 5Gi
accessMode: ReadWriteOnce
mount_path: /bitnami
...
- 啟動服務(wù)
$ kubectl create ns <your_namespace>
$ helm template --name stable --namespaces <your_namespace> . - | kubectl apply -f -
- 服務(wù)清理
如果部署過程中遇到問題要清理環(huán)境的話,執(zhí)行如下命令:
$ helm template --name stable --namespaces <your_namespace> . - | kubectl delete -f -
提示:部署完成后Minio S3的默認(rèn)認(rèn)證信息如下:
ACCESS_KEY: key123456
SECRET_KEY: password123456
部署之后
按照如上完成配置后,我們需要將日志采集的客戶端指向到Loki Gateway上。
對于Gateway多實例部署在k8s的,需要在前端掛載一個負(fù)載均衡器做分流。
小白之前考慮用ingress做代理,考慮到現(xiàn)實意義不大,所以放棄。建議大家在外部的LoadBlance直接轉(zhuǎn)發(fā)給loki-gateway的NodePort上
同理,Grafana的數(shù)據(jù)源,我們也要切換到Loki Gateway的地址,然后在Explor上查詢?nèi)罩掘炞C是否正常

最后我們可以再看下Minio上的Bucket是否已經(jīng)有日志塊,如果有數(shù)據(jù)的話說明你的Loki Ingester已經(jīng)工作正常.

關(guān)于云原生小白
云原生小白的創(chuàng)號目的是將平日里離大家較遠(yuǎn)云原生應(yīng)用以實用的角度展現(xiàn)出來,站在小白的角度來看待和使用云原生,并以每篇文章解決一個實際問題的出發(fā)點帶領(lǐng)大家走進(jìn)云原生。