文档章节

prometheus服务发现-consul生产环境服务部署

狗陈
 狗陈
发布于 02/01 17:16
字数 917
阅读 200
收藏 1

模拟生产环境多节点部署,使用linux服务方式部署consul集群,保证服务高可用即异常挂掉或主机重启后能自动回复,同时启用agent通信加密和接口认证。

前期准备

  1. 安装

将下载解压得到二进制文件consul拷贝到/usr/local/bin目录

sudo chown root:root /usr/local/bin/consul
consul --version # 验证
  1. 自动补全
consul -autocomplete-install
complete -C /usr/local/bin/consul consul
  1. 准备目录

创建/opt/consul目录,并在其下准备如下3个server的目录

/opt/consul$ tree
.
├── server1
│   ├── config
│   └── data
├── server2
│   ├── config
│   └── data
└── server3
    ├── config
    └── data
  1. 生成秘钥

用于集群间通信加密,需要保证集群中所有节点都配置该秘钥

$ consul keygen
mz8Con27P34D9fiPG1bjHA==

配置

server1

service unit

准备文件:/lib/systemd/system/consul-server1.service,内容如下:

[Unit]
Description="consul server1"
Requires=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/local/bin/consul agent -config-dir=/opt/consul/server1/config
ExecReload=/usr/local/bin/consul reload
KillMode=process
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target

配置

准备配置文件:/opt/consul/server1/config/config.json,内容如下:

{
  "datacenter": "prometheus",
  "bind_addr":"10.106.169.121",
  "log_level": "INFO",
  "node_id":"09d82408-bc4f-49e0-4208-61ef1d4842f7",
  "node_name": "server1",
  "data_dir":"/opt/consul/server1/data",
  "server": true,
  "bootstrap_expect":3,
  "encrypt": "mz8Con27P34D9fiPG1bjHA==",
  "ui":true,
  "client_addr":"0.0.0.0",
  "retry_join":["10.106.169.121:18301","10.106.169.121:28301","10.106.169.121:38301"],
  "ports": {
     "http": 18500,
     "dns": 18600,
     "serf_lan":18301,
     "serf_wan":18302,
     "server":18300,
     "grpc":-1
  },
  "acl": {
    "enabled": true,
    "default_policy": "deny",
    "down_policy": "extend-cache",
    "tokens":{
        "master":"47eca91b-a5e7-e82d-6424-dba7637e0737",
        "agent":"47eca91b-a5e7-e82d-6424-dba7637e0737"
    }
  }
}

server2

service unit

准备文件:/lib/systemd/system/consul-server2.service,内容如下:

[Unit]
Description="consul server2"
Requires=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/local/bin/consul agent -config-dir=/opt/consul/server2/config
ExecReload=/usr/local/bin/consul reload
KillMode=process
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target

配置

准备配置文件:/opt/consul/server2/config/config.json,内容如下:

{
  "datacenter": "prometheus",
  "bind_addr":"10.106.169.121",
  "log_level": "INFO",
  "node_id":"613ccd6e-68d1-3bbd-b2a4-3cbc450f019d",
  "node_name": "server2",
  "data_dir":"/opt/consul/server2/data",
  "server": true,
  "bootstrap_expect":3,
  "encrypt": "mz8Con27P34D9fiPG1bjHA==",
  "ui":true,
  "client_addr":"0.0.0.0",
  "retry_join":["10.106.169.121:18301","10.106.169.121:28301","10.106.169.121:38301"],
  "ports": {
     "http": 28500,
     "dns": 28600,
     "serf_lan":28301,
     "serf_wan":28302,
     "server":28300,
     "grpc":-1
  },
  "acl": {
    "enabled": true,
    "default_policy": "deny",
    "down_policy": "extend-cache",
    "tokens":{
        "master":"47eca91b-a5e7-e82d-6424-dba7637e0737",
        "agent":"47eca91b-a5e7-e82d-6424-dba7637e0737"
    }
  }
}

server3

service unit

准备文件:/lib/systemd/system/consul-server3.service,内容如下:

[Unit]
Description="consul server3"
Requires=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/local/bin/consul agent -config-dir=/opt/consul/server3/config
ExecReload=/usr/local/bin/consul reload
KillMode=process
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target

配置

准备配置文件:/opt/consul/server3/config/config.json,内容如下:

{
  "datacenter": "prometheus",
  "bind_addr":"10.106.169.121",
  "log_level": "INFO",
  "node_id":"d8a09ffd-7ccb-84bd-7231-8d8b7a01951e",
  "node_name": "server3",
  "data_dir":"/opt/consul/server3/data",
  "server": true,
  "bootstrap_expect":3,
  "encrypt": "mz8Con27P34D9fiPG1bjHA==",
  "ui":true,
  "client_addr":"0.0.0.0",
  "retry_join":["10.106.169.121:18301","10.106.169.121:28301","10.106.169.121:38301"],
  "ports": {
     "http": 38500,
     "dns": 38600,
     "serf_lan":38301,
     "serf_wan":38302,
     "server":38300,
     "grpc":-1
  },
  "acl": {
    "enabled": true,
    "default_policy": "deny",
    "down_policy": "extend-cache",
    "tokens":{
        "master":"47eca91b-a5e7-e82d-6424-dba7637e0737",
        "agent":"47eca91b-a5e7-e82d-6424-dba7637e0737"
    }
  }
}

启动

通过命令 : sudo systemctl enable consul-server1 consul-server2 consul-server3将服务设置为开机自动启动,再使用命令启动服务 : sudo systemctl restart consul-server1 consul-server2 consul-server3

验证

UI

在页面http://127.0.0.1:18500/ui/prometheus/acls/tokens输入配置中的master token,再刷新界面可以在services和nodes中查看到信息

API

$ curl http://127.0.0.1:18500/v1/catalog/nodes #未带token,返回空的节点列表
[]
$ curl http://127.0.0.1:18500/v1/catalog/nodes -H 'x-consul-token: 47eca91b-a5e7-e82d-6424-dba7637e0737' # 通过在header中增加x-consul-token则可返回节点列表
[{"ID":"09d82408-bc4f-49e0-4208-61ef1d4842f7","Node":"server1","Address":"10.106.169.121","Datacenter":"prometheus","TaggedAddresses":null,"Meta":null,"CreateIndex":9,"ModifyIndex":9},{"ID":"613ccd6e-68d1-3bbd-b2a4-3cbc450f019d","Node":"server2","Address":"10.106.169.121","Datacenter":"prometheus","TaggedAddresses":null,"Meta":null,"CreateIndex":7,"ModifyIndex":7},{"ID":"d8a09ffd-7ccb-84bd-7231-8d8b7a01951e","Node":"server3","Address":"10.106.169.121","Datacenter":"prometheus","TaggedAddresses":null,"Meta":null,"CreateIndex":8,"ModifyIndex":8}]

参考

https://learn.hashicorp.com/consul/advanced/day-1-operations/deployment-guide [官方部署方式]

https://www.consul.io/docs/agent/acl-system.html [acl介绍]

https://learn.hashicorp.com/consul/advanced/day-1-operations/acl-guide [acl配置]

https://learn.hashicorp.com/consul/advanced/day-1-operations/agent-encryption [agent通信加密]

© 著作权归作者所有

狗陈
粉丝 11
博文 72
码字总数 31102
作品 0
成都
高级程序员
私信 提问
prometheus服务发现-consul部署研究

最近在看prometheus-book时,在服务发现这一章节,了解到“基于consul的服务发现”,以前一直都是用python代码生成json推送到服务器上,这种方式很麻烦,之前还想着编写工具程序部署到prome...

一路向北的兔斯基
01/31
59
0
prometheus监控方案

简介 prometheus 是一个开源的系统监控和告警的工具包,其采用pull方式采集时间序列,通过http协议传输。 架构 每个应用都通过javaagent向外提供一个http服务暴露出自己的JMX信息。当应用启动...

nice_so
2016/11/07
1K
1
Spring Cloud、Consul、Prometheus、Docker,你想要的系统监控?

spring cloud 本篇文章要介绍的是如何使用Spring Cloud集成Consul做服务发现,并且利用Promtheus对其进行系统监控。Consul及Promtheus使用docker容器安装。 一. 项目搭建 建立Spring Boot项目...

板凳儿儿
2018/05/30
0
0
监控之美--prometheus配置文件动态管理

Prometheus是一套开源的监控、报警解决方案,是由SoundCloud公司开发的,从 2012 年开始编写代码,再到 2015 年 开源以来,该项目有非常活跃的社区和开发人员,目前在全世界最大的男性交友社...

Jx战壕
2017/09/13
0
0
Nacos 发布 v0.8.0 Pre-GA 版本,安全稳定上生产

服务注册和服务配置开源项目 Nacos 上周发布了 v0.8.0 Pre-GA 版本,作为开源项目生命周期中的里程碑版本之一,v0.8.0 Pre-GA版本支持登录、命名空间、Metrics监控(对接Prometheus),并可以...

中间件小姐姐
01/28
1K
6

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
昨天
64
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
昨天
26
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
昨天
43
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
昨天
27
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
昨天
44
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部