带你演示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 里面的高可用。


分享到:


相關文章: