微服务管理--微服务定义
consul常用命令及选项
1、常用命令:command
consul命令的使用形式为:
consul command [option]
- agent:consul的节点分为client和server两类,这两类节点统称为agent节点。
- join:该命令的作用是将agent加入到consul的集群当中。当新启动一个agent节点后,往往需要指定节点需要加入到特定的consul集群中,此时使用join命令进行指定。
- members:列出consul集群中的所有的成员节点信息,包括ip,端口,状态,类型等信息。
2、常用选项:option
除command命令外,还有option选项供开发者使用,常见的和常使用的option有:
- -data-dir:该选项用于指定agent储存状态的数据目录,这是所有agent都必须的,对于server尤其重要,因为他们必须持久化集群的状态。
- -config-dir:该选项用于指定service的配置文件和检查定义所在的位置。通常会指定为"某一个路径/consul.d"(通常情况下,.d表示一系列配置文件存放的目录)
- -config-file:指定一个要装载的配置文件。该选项可以配置多次,进而配置多个配置文件。
- -dev:该选项用于创建一个开发环境下的server节点,该参数配置下,不会有任何持久化操作,即不会有任何数据写入到磁盘。dev模式仅仅是在开发和测试环境中使用,不能用于生产环境。
- -bootstrap-expect:该选项用于通知consul server类型节点,指定集群的server节点个数,该参数是为了延迟选举启动,直到全部的节点启动完毕以后再进行启动。
- -node:该node选项用于指定节点在集群中的名称,该名称在集群中需要是唯一的,推荐直接使用机器的IP。
- -bind:该选项用于指定节点所在的IP地址。
- -server:该选项用于指明consul节点类型为server类型。每个数据中心(DC)的server数量推荐3到5个。所有的server节点加入到集群后要经过选举,采用raft一致性算法来确保数据操作的一致性。
- -client:该参数用于指定consul界定为client节点类型。
- -join:英文为加入的意思,join选项用于指定要将节点添加到具体哪个集群中。
- -dc:dc是datacenter的简称,该选项用于指定节点加入的dc实例。
微服务定义标准及选项
除了命令行选项,微服务的定义和配置也可以放入文件中。在某些情况下,这可能更容易,比如当使用配置管理系统配置时。配置文件是JSON格式的,使得它们易于被人和计算机读取和编辑。配置被格式化为单个JSON对象,其中包含配置。
配置文件不仅用于设置代理,还用于提供检查和服务定义。这些配置文件同样可以被其他软件和功能所识别。它们分别记录在检查配置和服务配置下。服务和检查定义支持在重新加载期间更新。
例如,如下的JSON格式配置文件:
{
"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"
}
}
上述的json文件格式是一个案例,consul的json文件配置可选项有很多,比如:
- addresses:该配置选项用于设置绑定地址。在Consul 1.0和更高版本中,可以将这些设置为要绑定到的地址列表。支持绑定设置多种类型的地址,包括:dns、http、https、grpc等共四种类型。
- bootstrap:该配置相当于在命令行中添加了-bootstrap命令行标志。
- bootstrap_expect:该配置相当于在命令行中添加了-bootstrap_expect命令行标志。
- bind_addr:该配置相当于在命令行中添加-bind指令操作。
- ca_file:该配置用于指定ca证书文件的目录。
- ca_path:该配置用于指定ca证书的整体目录。
- client_addr:该配置与命令行中-client指令功能相同。
- config_entries:在该配置项下,通过配置二级配置项来进行,二级配置项可以配置bootstrap选项。
- connect:关于连接的一些配置项通过该配置进行设置,同样是通过二级配置项来完成,可支持的二级配置项有:enabled、ca_provider、ca_config。
- datacenter:该配置项与命令行中-datacenter指令作用相同。
- data_dir:该配置项与命令行中-data-dir指令作用相同,用于指定微服务json定义文件所在的目录。
- dns_config:该选项用于配置dns相关参数。
- domain:该配置项与命令行中的-domain指令作用相同。
- node_id:该配置项与命令行中的-node-id指令作用相同,用于自定义设定node-id。
- node_name:该配置项与命令行中的-node指令作用相同,用于为node指定名称。
- ports:该配置项用于配置节点的端口号,通过二级配置选项可以配置:dns、http、https、grpc、serf_lan、serf_wan、server等不同类型的端口。
- protocol:该配置选项与命令行中的-protocol指令功能相同。
如上,只是列出了部分json配置文件的配置项,全部的配置选项在consul的官方网站有相关的说明,可以访问如下链接进行查看:https://www.consul.io/docs/agent/options.html