帶你演示Prometheus擴展Cortex的水平擴展以及高可用複製

這章,我們主要講一下 Prometheus 的擴展 Cortex 的安裝過程,以及Cortex的水平擴展。這些內容官網都可以找到。

環境準備

  • GO 的語言環境,配置好 GOMODULE
  • 從 Github 上將 Cortex 的源程序克隆下來,Github克隆很慢,可以先導入 Gitee,再從 Gitee 上克隆;

開始編譯

Cortex 的安裝

我們進入到 Cortex 的文件目錄,執行指令:

<code>

go

build ./cmd/cortex/<code>

開始執行:

<code>./cortex -

config

.file=./docs/configuration/single-process-

config

.yaml/<code>

一般情況下不會出問題,有問題應該是 Linux 缺少了相關程序,自行下載即可。執行完就好了

Promethus

這個我們直接解壓 .tar.gz 文件包,進入 prometheus 目錄,修改 prometheus.yml , 增加配置:

<code>

remote_write

: -

url

:

http

:/<code>

配置文件是 yml 格式的,請遵守相關規則。

驗證

<code>./prometheus/<code>

現在我們需要通過 Grafana 來進行數據的讀取。

<code>docker run /<code>

現在我們就在 Grafana 裡面去做GUI 就好了。

水平擴展

水平擴展的實現,我們也是依賴於 Docker

<code> 
make .

/cmd/cortex/

.uptodate/<code>

上面的景象我們構建不出來,我們就下載鏡像:

<code>

docker

pull cortexproject/cortex/<code>
<code> 

docker

network create cortex

docker

run -d --name=consul --network=cortex -e CONSUL_BIND_INTERFACE=eth0 consul

/<code>
<code> 

docker

run -d --name=cortex1 --network=cortex \ -v $(pwd)/docs/configuration/single-process-config.yaml:/etc/single-process-config.yaml \ -p 9001:9009 \ cortexproject/cortex:master-1f600cb1 \ -config.file=/etc/single-process-config.yaml \ -ring.store=consul \ -consul.hostname=consul:8500

/<code>
<code>

docker

run -d --name=cortex2 --network=cortex \ -v $(pwd)/docs/configuration/single-process-config.yaml:/etc/single-process-config.yaml \ -p 9002:9009 \ cortexproject/cortex:master-1f600cb1 \ -config.file=/etc/single-process-config.yaml \ -ring.store=consul \ -consul.hostname=consul:8500

/<code>

我們的驗證方式是: 在瀏覽器中輸入: http://{ip}:9001/ring , 或者是 9002 端口 正常情況下看到的會是這兩個:

帶你演示Prometheus擴展Cortex的水平擴展以及高可用複製

然後,我們現在將 Prometheus 接入到其中的一個實例: 比如 9001

<code>remote_write
  - 

url:

http:

/

/localhost:9001/api

/prom/push

/<code>

再用到 Grafana 驗證的時候,這時候的 Cortex 地址就是Docker 的容器地址: http://172.18.0.3:9009/api/prom

清理,後續需要在重新設置

<code>

docker

rm -f cortex1 cortex2 consul grafana

docker

network remove cortex

/<code>

高可用

這裡主要針對的是 當 Integers 出現單個的宕機狀態時,當前宕機的 integer 需要將自己的 sample 複製到其他的 integer .

<code>docker network 

create

cortex docker run -d docker run -d /<code>

我們開始創建我們的實例:

<code>

docker

run -d --name=cortex1 --network=cortex \ -v $(pwd)/docs/configuration/single-process-config.yaml:/etc/single-process-config.yaml \ -p 9001:9009 \ cortexproject/cortex:master-1f600cb1 \ -config.file=/etc/single-process-config.yaml \ -ring.store=consul \ -consul.hostname=consul:8500 \ -distributor.replication-factor=3

docker

run -d --name=cortex2 --network=cortex \ -v $(pwd)/docs/configuration/single-process-config.yaml:/etc/single-process-config.yaml \ -p 9002:9009 \ cortexproject/cortex:master-1f600cb1 \ -config.file=/etc/single-process-config.yaml \ -ring.store=consul \ -consul.hostname=consul:8500 \ -distributor.replication-factor=3

docker

run -d --name=cortex3 --network=cortex \ -v $(pwd)/docs/configuration/single-process-config.yaml:/etc/single-process-config.yaml \ -p 9003:9009 \ cortexproject/cortex:master-1f600cb1 \ -config.file=/etc/single-process-config.yaml \ -ring.store=consul \ -consul.hostname=consul:8500 \ -distributor.replication-factor=3

/<code>

現在我們寫入到 cortex1 中,測試 cortex3 是否會存在數據:

帶你演示Prometheus擴展Cortex的水平擴展以及高可用複製

帶你演示Prometheus擴展Cortex的水平擴展以及高可用複製

我們可以看到,每個 cortex 節點都寫入了數據,但是我們的數據只寫入了 cortex1 , 這就是 cortex 之間的複製。

現在我們要 cortex2 掛掉,看看什麼效果:

帶你演示Prometheus擴展Cortex的水平擴展以及高可用複製

可以看到的是,cortex2 掛了,但是 其他兩個都還是正常的狀態,這就是 Cortex 裡面的高可用。


分享到:


相關文章: