Consul是一个支持多数据中心分布式高可用的服务发现和配置共享的软件 , 能做到实时健康检查,能用来存储动态配置的系统, 支持自动选举
Downloads | Consul by HashiCorp
下载后,解压至某文件夹,无需安装
设置环境变量:在path中添加解压目录(我的目录是E:\consul\consul)
运行 consul -v查看是否环境变量无误
普通cmd运行ui:
consul agent -dev -client 0.0.0.0 -ui
, 查看127.0.0.1:8500
cmd运行:
consul agent -server -bootstrap-expect 1 -data-dir E:\consul\consul\data -node=no1 bind=127.0.0.1 -ui -client=0.0.0.0
-bootstrap-expect : 引导服务器的推荐方法是使用-bootstrap-expect 配置选项。此选项通知 Consul 预期的服务器节点数量,并在有许多服务器可用时自动引导。为了防止出现不一致和脑裂(多个服务器认为自己是领导者的集群)的情况,您应该为 -bootstrap-expect 所有服务器指定相同的值或根本不指定任何值。只有指定值的服务器才会尝试引导集群。(等待多少个节点再启动)
-server: 表示这是一个服务端
-node: 给consul服务起一个别名
-data-dir: 数据存储目录
-ui 启动默认ui界面
-client : consul绑定在哪个client地址, 为地址提供http, rpc等服务,默认是127.0.0.1,可指定允许访问客户端ip
-bind: 绑定内网地址
consul常用端口手动注册服务到consul (发送一个json的put请求)
地址: http://127.0.0.1:8500/v1/agent/service/register
eg:
{
"id":"swoft", //服务id,唯一的
"name":"SwoftService", //服务名称
"tags":[ // 标签,用于过滤
"primary" //标签
],
"address":"127.0.0.1", //服务地址
"port":80,
"check":{ // 健康检查
"http":"http://127.0.0.1:8099/runs.php", // 检查形式
"interval":"5s" // 检查时间,类似心跳
}
}
文档:
Register Services - Service Definitions | Consul by HashiCorpOne of the main goals of service discovery is to provide a catalog of available services. To that end, the agent provides a simple service definition format to declare the availability of a service and to potentially associate it with a health check. A health check is considered to be application level if it is associated with a service. A service is defined in a configuration file or added at runtime over the HTTP interface.https://www.consul.io/docs/discovery/services
-bootstrap:启动模式,此模式下,节点可以选举自己为leader,一个数据中心只能有一个此模式启动的节点。机群启动后,新启动的节点不建议使用这种模式。
-bootstrap-expect:设定一个数据中心需要的服务节点数,可以不设置,设置的数字必须和实际的服务节点数匹配。consul会等待直到数据中心下的服务节点满足设定才会启动集群服务。初始化leader选举,不能和bootstrap混用。必须配合-server配置。
-bind:绑定的内部通讯地址,默认0.0.0.0,即,所有的本地地址,会将第一个可用的ip地址散播到集群中,如果有多个可用的ipv4,则consul启动报错。[::]ipv6,TCP UDP协议,相同的端口。防火墙配置。
-client:客户端模式,http dns,默认127.0.0.1,回环令牌网址
-config-file:配置文件位置
-config-dir:配置文件所在文件夹,会加载其下所有配置文件,.json或者.hcl文件,加载顺序为字母表顺序;可用配置多个此配置,从而加载多个文件夹,子文件夹的配置不会被加载。
-config-format:配置文件格式,配置了,则加载相应个是的文件。不配置,则consul自动识别。
-data-dir:状态数据存储文件夹,所有的节点都需要。文件夹位置需要不收consul节点重启影响,必须能够使用操作系统文件锁,unix-based系统下,文件夹文件权限为0600,注意做好账户权限控制,
-datacenter:数据中心名称,默认dc1,一个数据中心的所有节点都必须在一个LAN中。
-dev:开发模式,去掉所有持久化选项,内存服务器模式。
-disable-host-node-id:不使用host信息生成node ID,适用于同一台服务器部署多个实例用于测试的情况。随机生成nodeID
-dns-port:v7.0以后,自定义dns 端口,覆盖默认8600
-enable-script-checks:是否允许使用脚本进行健康检查,默认false,最好配置enable acl
-encrypt:consul网络通讯加密key,base64加密,16比特;consul keygen产生。集群中的每个实例必须提供相同的,只需提供一次,然后会保存到数据文件。重启自动加载。consul节点启动后提供,会被忽略。
-hcl:添加hcl格式配置,和已有的配置合并。可以使用多个此配置。
-http-port:http api端口,覆盖默认的8500。适用于云环境指定。
-log-file:日志记录文件,如果没有提供文件名,则默认Consul-时间戳.log
-log-level:日志级别,默认info,包含:trace,debug,info,warn,err;consul monitor监控
-log-rotate-bytes:新日志文件生成大小阈值。
-log-rotate-rotation:新日志生成时间阈值
-join:需要加入的其它节点地址,可以多次使用,加入多个节点。
-retry-join:会进行加入重试,适用于认定加入节点最终会正常的情况。ipv4,ipv6,dns
-retry-interval:上述,重试间隔,默认30s
-retry-max:重试次数,默认0,无限次重试
-join-wan, -retry-join-wan, -retry-interval-wan, -retry-max-wan
-node:节点名称,默认主机名
-node-id:节点ID,
-pid-file:consul 存储 pid 的文件位置,用于主动发信号。如停止节点,重载配置等。
-protocol:使用的协议,升级时使用。consul -v查看协议版本
-raft-protocol:使用raft协议版本,默认3
-raft-snapshot-threshold:raft执行快照,提交次数阈值。一般不需要设置,io密集型应用可以调高。避免所有的节点同一时间快照。此值过大,会造成相应日志文件变大,节点重启恢复会耗费更长时间。1.1.0后,默认16384,之前8192.
-raft-snapshot-interval:执行快照间隔,影响类似上个配置,1.1.0后默认30s,之前5s。
-rejoin:节点会尝试重新加入集群。
-server:服务端节点模式。
-server-port:服务端RPC端口,v1.2.2后提供。
-non-voting-server:服务节点不参与选举,接受日志复制,用于横向扩展,服务查询请求。(类比zookeeper 观察者节点)
-syslog:linux OSX系统,配置日志输出到系统日志。
-ui:内置web ui界面。
-ui-dir:web ui 资源文件夹,使用此配置,则不需也不能使用再-ui配置。
默认使用端口:服务端RPC:默认8300,TCP。
Serl LAN:处理LAN gossip,默认8301,TCP UDP。
Serl WAN:处理LAN gossip,默认8302,TCP UDP。
HTTP API:8500,TCP.
DNS:8600,TCP,UDP.