二丫讲梵 二丫讲梵
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)

二丫讲梵

行者常至,为者常成
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)
  • 最佳实践

  • 迎刃而解

  • Nginx

  • Php

  • Zabbix

  • AWS

  • Prometheus

  • Grafana

  • Loki

  • CentOS

  • Supervisord

  • Systemd

  • Docker

  • Docker-Compose

  • Rancher

  • Ansible

  • OpenLdap

  • GitLab

  • GitHub

  • Etcd

  • Consul

    • consul集群部署
      • 1,下载二进制
      • 2,创建用户及目录
      • 3,配置文件
        • 1,server
        • 2,client
      • 4,systemd 管理文件
    • Nginx+consul实现集群主机优雅扩缩容
  • RabbitMQ

  • Kafka

  • Mysql

  • MongoDB

  • OpenVPN

  • Kvm

  • VMware

  • 配置文件详解

  • Other

  • 运维观止
  • Consul
二丫讲梵
2021-11-07
目录

consul集群部署

文章发布较早,内容可能过时,阅读注意甄别。

# 1,下载二进制

$ wget https://releases.hashicorp.com/consul/1.9.3/consul_1.9.3_linux_amd64.zip
$ unzip consul_1.9.3_linux_amd64.zip ; mv consul /usr/bin/
1
2

# 2,创建用户及目录

$ useradd consul
$ mkdir -p /data/consul/{config,data,log} && chown -R consul.consul /data/consul
1
2

# 3,配置文件

# 1,server

配置文件如下:

$ cat /data/consul/config/server.json
{
    "datacenter": "consul_nginx",
    "data_dir": "/data/consul/data/",
    "node_name": "eryajf-test-consul-1",
    "server": true,
    "bootstrap_expect": 3,
    "bind_addr": "{{ GetInterfaceIP \"eth0\" }}",
    "client_addr": "0.0.0.0",
    "log_json": true,
    "log_level": "info",
    "log_rotate_max_files": 10,
    "log_rotate_duration": "24h",
    "log_file": "/data/consul/log/",
    "retry_join": [
    	"10.6.6.14",
        "10.6.6.17",
        "10.6.6.63"
    ],
    "ui_config": {
        "enabled": true
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

配置文件详情参考 (opens new window),上边的说明如下:

  • datacenter:此标志控制运行代理的数据中心。如果未提供,则默认为dc1。Consul 对多个数据中心有一流的支持,但它依赖于正确的配置。同一数据中心中的节点应位于单个 LAN 上。

  • data_dir:该标志为代理提供了一个数据目录来存储状态。

  • node_name:节点名字,一般为主机名,如果是三个节点,则往后顺写。

  • server:指定是否为 server 节点。

  • bootstrap_expect:在一个 datacenter 中期望提供的 server 节点数目,当该值提供的时候,consul 一直等到达到指定 sever 数目的时候才会引导整个集群,该标记不能和 bootstrap 公用。

  • bind_addr:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是 0.0.0.0。但如果主机有多个网卡,这个时候会报如下错误:

    consul[7559]: ==> Multiple private IPv4 addresses found. Please configure one with 'bind' and/or 'advertise'.
    
    1
  • client_addr:Consul 将绑定客户端接口的地址,包括 HTTP 和 DNS 服务器。默认情况下,这是 127.0.0.1,仅允许环回连接。在 Consul 1.0 及更高版本中,这可以设置为要绑定到的以空格分隔的地址列表。

  • log_json:此标志使代理能够以 JSON 格式输出日志。默认为 false。

  • log_level:在 Consul 代理启动后显示的日志级别。默认为 info 。可用的日志级别是trace、debug、info、warn和err。您始终可以通过consul monitor (opens new window)并使用任何日志级别连接到代理。此外,可以在配置重新加载期间更改日志级别。

  • log_rotate_max_files:指定要保留的旧日志文件存档的最大数量。默认为 0(不会删除任何文件)。设置为 -1 以在创建新日志文件时丢弃旧日志文件。

  • log_rotate_duration:指定日志在需要轮换之前应写入的最大持续时间。必须是持续时间值,例如 30s。默认为 24 小时。

  • log_file:将所有 Consul 代理日志消息写入文件。此值用作日志文件名的前缀。当前时间戳附加到文件名。如果值以路径分隔符结尾,consul- 则将附加到该值。如果文件名缺少扩展名,.log 则附加。例如,设置log-file为/var/log/将导致日志文件路径为/var/log/consul-{timestamp}.log. log-file可以-log-rotate-bytes (opens new window)与-log-rotate-duration (opens new window)结合使用 , 以获得细粒度的日志轮换体验。

  • retry_join:指定将要置入集群的 IP 列表,如果失败,会自动重试,知道直到成功加入。

  • ui_config:此对象允许设置多个子键,用于控制 UI 中可用的显示或功能。在 Consul 1.9.0 中添加了使用此节配置 UI。

    • enabled:这将启用来自该代理的 Web UI 服务。布尔值,默认为 false。在-dev模式下,默认为 true。

      其他参数一并介绍下:

    • dir:这指定 Web UI 应该从外部目录提供,而不是构建在一个目录中。这允许定制或开发。

    • content_path:这指定了 Web UI 应该从中提供服务的 HTTP 路径。默认为/ui/. 相当于 -ui-content-path (opens new window)标志

# 2,client

client 是 consul 客户端,客户端不保存数据,客户端将接收到的请求转发给 Server 端。Server 之间通过局域网或广域网通信实现数据一致性。

每个 Server 或 Client 都是一个 consul agent。

配置文件如下:

{
  "datacenter": "consul_nginx",
  "data_dir": "/data/consul/data/",
  "node_name": "eryajf-test-consul-client-1",
  "server": false,
  "bind_addr": "{{ GetInterfaceIP \"eth0\" }}",
  "client_addr": "0.0.0.0",
  "log_json": true,
  "log_level": "info",
  "log_rotate_max_files": 10,
  "log_rotate_duration": "24h",
  "log_file": "/data/consul/log/",
  "retry_join": ["10.6.6.14", "10.6.6.17", "10.6.6.63"]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

配置说明参考上边。

# 4,systemd 管理文件

添加配置:

$ cat >> /usr/lib/systemd/system/consul.service << EOF
[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target

[Service]
Type=notify
User=consul
Group=consul
ExecStart=/usr/bin/consul agent -config-dir=/data/consul/config/
ExecReload=/bin/kill --signal HUP $MAINPID
KillMode=process
KillSignal=SIGTERM
Restart=on-failure
LimitNOFILE=10240
LimitNPROC=10240

[Install]
WantedBy=multi-user.target
EOF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

启动:

$ systemctl daemon-reload
$ systemctl enable consul
$ systemctl start consul
1
2
3

启动之后就可以直接访问 web 端看到 server 节点了:

以后在慢慢更新 consul 相关的最佳实践!

微信 支付宝
#consul
上次更新: 2024/07/04, 22:40:37
ETCD配额问题处理与验证 Error etcdserver mvcc database space exceeded
Nginx+consul实现集群主机优雅扩缩容

← ETCD配额问题处理与验证 Error etcdserver mvcc database space exceeded Nginx+consul实现集群主机优雅扩缩容→

最近更新
01
记录二五年五一之短暂回归家庭
05-09
02
学习周刊-总第210期-2025年第19周
05-09
03
学习周刊-总第209期-2025年第18周
05-03
更多文章>
Theme by Vdoing | Copyright © 2017-2025 | 点击查看十年之约 | 浙ICP备18057030号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式