【Consul】Consul实践指导-配置文件
Agent有各种各样的配置选项,这些配置选项可以通过命令行参数的方式设定,也可用通过配置文件的方式设定——所有的配置选项都是可选的,当然也是有默认值的。
当加载配置选项时,consul是按照词典顺序从所有配置文件或目录中加载。比如,basic_config.json会先于extra_config.json处理。后面设定的配置选项会合并到前面的配置集合中,如果存在重复的配置选项则会覆盖。当然,在某些情况下,比如事件处理程序,后面处理程序会追加到现有的配置选项中,形成事件处理程序列表。
Consul支持重新加载配置(在收到SIGHUP信号时),但也不是所有的改变都可以重新加载,只有某些ReLoadable Configuration可以重新加载。也可用通过命令重新加载,后面会介绍。
1.1.1 命令行参数
如下都是可以在命令行指定的参数:
Ø -config-file
需要加载的配置文件,在文件中都是json格式的信息,该参数可以多次配置,后面文件中加载的参数会覆盖前面加载文件中的参数。
Ø -config-dir
需要加载的配置文件目录,consul将加载目录下所有后缀为“.json”的文件,加载顺序为字母顺序,文件中配置选项合并方式如config-file。该参数可以多次配置。目录中的子目录是不会加载的。
Ø -data-dir
此目录是为Agent存放state数据的。是所有Agent需要的,该目录应该存放在持久存储中(reboot不会丢失),对于server角色的Agent是很关键的——需要记录集群状态。并且该目录是支持文件锁。
Ø -log-level
日志级别。默认为info。有如下级别:"trace","debug", "info", "warn", and "err"。可以使用consul monitor来连接agent查看日志。日志级别可以在reload时进行改变。
Ø -syslog
将日志记录进syslog(仅支持Linux和OSX平台)
Ø -pid-file
记录pid的文件
Ø -server
设置Agent是server模式还是client模式。Consul agent有两种运行模式:Server和Client。这里的Server和Client只是Consul集群层面的区分,与搭建在Cluster之上 的应用服务无关。Consule Server模式agent节点用于采用raft算法维护Consul集群的状态,官方建议每个Consul Cluster至少有3个或以上的运行在Server mode的Agent,Client节点不限。
Ø -client
将绑定到client接口的地址,可以是HTTP、DNS、RPC服务器。默认为“127.0.0.1”——只允许回路连接。RPC地址会被其他的consul命令使用,比如consul members——查询agent列表
Ø -node
节点在集群的名字,在集群中必须是唯一的。默认为节点的Hostname
Ø -bootstrap
设置服务是否为“bootstrap”模式。如果数据中心只有1个server agent,那么需要设置该参数。从技术上来讲,处于bootstrap模式的服务器是可以选择自己作为Raft Leader的。在consul集群中,只有一个节点可以配置该参数,如果有多个参数配置该参数,那么难以保证一致性。
Ø -bootstrap-expect
数据中心期望的server agent数目,不能与bootstrap一起使用。此参数要么不配置,要么consul集群中所有的server均配置相同的值。如果配置了该参数,只想当consul集群中有效server agent的数目达到此数量时才会引导集群启动。
Ø -dc
数据中心的名字
Ø -bind
用于集群内部通信的IP地址,与集群中其他节点互连可通。默认为“0.0.0.0”——consul将使用第一个有效的私有IPv4地址。如果指定“[::]”,consul将使用第一个有效的公共IPv6地址。使用TCP和UDP通信。注意防火墙,避免无法通信。
……
1.1.2 配置文件
除了命令行配置外,配置选项也可以存放在文件中。这种方式在某种情况下是非常方便的,比如,配置选项是由配置管理系统来管理。
配置文件都是json格式的,是易读和易编辑的——在文件中,每一个json对象都是格式化的。
配置文件不仅仅可以设置Agent,而且还能够提供Check和service定义。参见check配置和service配置。Check配置与service配置均是可通过reload更新的。
1.1.2.1 示例
配置文件示例
- {
- "datacenter": "east-aws",
- "data_dir": "/opt/consul",
- "log_level": "INFO",
- "node_name": "foobar",
- "server": true,
- "watches": [
- {
- "type": "checks",
- "handler": "/usr/bin/health-check-handler.sh"
- }
- ],
- "telemetry": {
- "statsite_address": "127.0.0.1:2180"
- }
- }
配置文件示例(TLS)
- {
- "datacenter": "east-aws",
- "data_dir": "/opt/consul",
- "log_level": "INFO",
- "node_name": "foobar",
- "server": true,
- "addresses": {
- "https": "0.0.0.0"
- },
- "ports": {
- "https": 8080
- },
- "key_file": "/etc/pki/tls/private/my.key",
- "cert_file": "/etc/pki/tls/certs/my.crt",
- "ca_file": "/etc/pki/tls/certs/ca-bundle.crt"
- }
1.1.2.2 参数说明
Ø datacenter
同命令行参数-datacenter
Ø data_dir
同命令行参数-data_dir
Ø bootstrap
同命令行参数-bootstrap
同命令行参数-bootstrap_expect
Ø bind_addr
同命令行参数-bind
Ø enable_syslog
同命令行参数-syslog
Ø log_level
同命令行参数-log_level
Ø node_name
同命令行参数node
……
1.1.3 可重载配置
Reload配置 并不能reload所有配置选项,下面的选项可以重载:
Ø Log level
Ø Checks
Ø Services
Ø Watches
Ø HTTP Client Address
Ø Atlas Token
Ø Atlas Infrastructure
Ø Atlas Endpoint
原文地址:https://www.consul.io/docs/agent/options.html#configuration_files
【Consul】Consul实践指导-配置文件的更多相关文章
- winserver的consul部署实践与.net core客户端使用(附demo源码)
winserver的consul部署实践与.net core客户端使用(附demo源码) 前言 随着微服务兴起,服务的管理显得极其重要.都知道微服务就是”拆“,把臃肿的单块应用,拆分成多个轻量级的 ...
- 在Windows环境中使用Nginx, Consul, Consul Template搭建负载均衡和服务发现服务
搭建负载均衡和服务发现服务的目的 随着网站业务的不断提升,单个服务器的性能越来越难满足客户的业务需求,所以很多情况下,需要使用多服务器实例和负载均衡器来满足业务需要. Nginx 什么是Nginx N ...
- Consul实践指导-DNS接口
DNS是consul提供的主要查询接口之一.DNS接口允许应用程序在没有与consul高度集成的情况下使用服务发现. 例如:替代consul的HTTP API请求,主机能够通过名字查找直接使用DNS服 ...
- consul Consul vs. ZooKeeper, doozerd, etcd
小结 1.Consul 功能更丰富: 2. 暴露http接口避免暴露系统复杂性 The Consul clients expose a simple HTTP interface and avoid ...
- 《GettingThingsDone》--GTD学习笔记(二)-GTD实践指导
一.准备阶段的建议: 高级的工作管理方法就是学会一套系统并付诸实施,直到将这套系统和方法融入你的工作和生活中. 通过行动使自己感觉良好,要比通过使自己感觉良好而进入一种较佳的行动状态容易的多. 当你在 ...
- ansible实践4- 管理配置文件
生产环境中大多时候是需要管理配置文件的,安装软件包只是在初始化环境的时候用一下.下面我们来写个管理nginx配置文件的playbook mkdir -p /etc/ansible/nginx_c ...
- .Net Core实践3 配置文件
环境 .netcore2.1 / vs2017 / win10 / centos7 在.netcore项目中读取配置文件,先添加应用程序配置文件App.config.这个是类库项目的配置文件名. Sy ...
- C++程序设计实践指导1.15找出回文数改写要求实现
改写要求1:用单链表实现 #include <cstdlib> #include <iostream> using namespace std; struct LinkNode ...
- C++程序设计实践指导1.14字符串交叉插入改写要求实现
改写要求:1:以指针为数据结构开辟存储空间 改写要求2:被插入字符串和插入字符串不等长,设计程序间隔插入 如被插入字符串长度为12,待插入字符串长度为5 则插入间隔为2 改写要求3:添加函数Inser ...
随机推荐
- c++学习笔记(4)
1.non-virtual函数是在编译时完成解析的,根据该对象被调用时的类型来判断!!切记这点. 2.凡基类定义有一个(或多个)虚函数,应该要将其destructor声明为virtual,但不要把de ...
- 监听器(Listener)学习(二)
一.监听域对象中属性的变更的监听器 域对象中属性的变更的事件监听器就是用来监听 ServletContext, HttpSession, HttpServletRequest 这三个对象中的属性变更信 ...
- 监听器(Listener)学习(一)
一.监听器介绍 1.1.监听器的概念 监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动.监听器其实就是一个实现特定接口的普通 ...
- 关于swagger文档的使用方法
引言 最近在后台开发的时候,使用swagger2进行前后台接口文档的声明.由此遇见的一些问题,写下来给自己复习. 参考: https://blog.csdn.net/xupeng874395012/a ...
- Python学习-类
类是对象的模板或蓝图,类是对象的抽象化,对象是类的实例化 在python中,一个对象的特征也称为属性(attribute),它所具有的的行为也称为方法(method) 对象 = 属性(特征)+方法(行 ...
- java集成WebSocket向所有用户发送消息
package com.reading.controller.library; import org.springframework.stereotype.Controller; import org ...
- 在 ubuntu 中安装 python3.5 tornado pymysql
一.在 ubuntu 中安装 python3.5 1.首先,在系统中是自带python2.7的.不要卸载,因为一些系统的东西是需要这个的.python2.7和python3.5是可以共存的. 命令如下 ...
- phoenix elixir 框架简单试用
备注: 官方提供的脚手架工具,我们可以直接使用,生成代码,同时需要nodejs 环境配置(比较简单,参考 相关资料即可) 1. 安装脚手架 mix archive.install https:/ ...
- win7 QT +opencv环境搭建
1.Win7 Qt4.8.5+QtCreator2.8.0+mingw环境参考前博文先搭建 2.下载Cmake2.8.11.2版本,安装.运行 [项目]那编译器选择:MinGW4.4.另外,重新编译O ...
- CentOS 添加常用 yum 源(转)
CentOS 的官方源去掉了一些与版权有关的软件,因此想要安装这些软件或者手动下载安装,或者使用其他源. 下面我推荐常用的两个源, 这两个源基本可以满足一般服务器的使用需求. 首先, 添加源之前要确定 ...