安装:
1、[root@localhost ~]# yum install -y unzip
2、[root@localhost ~]# yuminstall -y wget
3、[root@localhost ~]# wget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip
4、[root@localhost ~]# ll
5、[root@localhost ~]# unzip consul_0.7.5_linux_amd64.zip
启动:
- 非持久化启动:
./consul agent -dev -ui -node=consul-dev -client=10.224.162.189
- 持久化启动:
./consul agent -server -ui -bootstrap-expect=1 -data-dir=/tmp/consul -node=agent-one -advertise=0.0.0.0 -bind=0.0.0.0 -client=10.224.162.189
遇到的问题:
在使用
-server
参数启动单节点的时候可能会一直出现leader选举失败的情况。解决:
./consul agent -dev -ui -bootstrap-expect=1 -data-dir=/tmp/consul -node=agent-one -client=10.224.162.189
consul agent 输出解析:
[root@localhost local]# ./consul agent -server -ui -bootstrap-expect=1 -data-dir=/tmp/consul -node=agent-one -
BootstrapExpect is set to 1; this is the same as Bootstrap mode.
bootstrap = true: do not enable unless necessary
==> Starting Consul agent...
==> Consul agent running!
Version: 'v1.5.0'
Node ID: '98644a39-417f-3609-c789-bd059f201d9d'
Node name: 'agent-one'
Datacenter: 'dc1' (Segment: '<all>')
Server: true (Bootstrap: true)
Client Addr: [10.224.162.189] (HTTP: 8500, HTTPS: -1, gRPC: -1, DNS: 8600)
Cluster Addr: 10.224.162.189 (LAN: 8301, WAN: 8302)
Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false
==> Log data will now stream in as it occurs:
...
- 节点名称:这是代理的唯一名称。默认情况下,这是机器的主机名,但可以使用
-node
标志对其进行自定义。 - 数据中心:这是配置代理运行的数据中心。每个节点都必须设置其它向数据中心报告。
-datacenter
标志可用于设置数据中心。对于单DC配置,代理将默认为“dc1”。 - 服务器:这表明代理是以服务器还是客户端模式运行。Server:false(bootstrap:false),表示不是以服务器模式运行,事实上
-dev
是开发服务器模式。 - 客户端地址:这是用于代理的客户端接口的地址。这包括HTTP和DNS接口的端口。默认情况下,它只绑定到localhost。
- 集群地址:这是用于集群中的Consul代理之间通信的地址和端口集。并非所有集群中的Consul代理都必须使用相同的端口,但该地址必须可供所有其他节点访问。
-
-dev
:该模式不能用于生产环境,因为该模式下不会持久化任何状态,该启动模式仅仅是为了快速便捷的启动单节点consul
配置:
-
-data-dir
:指定agent储存状态的数据目录,这是所有agent都必须的,对server尤其重要,因为他们必须持久化集群的状态。 -
-config-dir
:配置文件目录,目录必须为consul.d
,文件内容都是 json 格式数据,里面所有以.json结尾的文件都会被加载。 -
-config-file
:明确的指定要加载哪个配置文件。 -
-dev
:开发服务器模式,虽然是server模式,但不用于生产环境,因为不会有任何持久化操作,即不会有任何数据写入到磁盘 -
-server
:定义agent运行在server模式,每个集群至少有一个server,建议每个集群的server不要超过5个 -
-node
:指定节点在集群中的名称,该名称在集群中必须是唯一的(默认这是机器的主机名),直接采用机器的IP
-
-client
:consul绑定在哪个client地址上,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1
-advertise:通知展现地址用来改变我们给集群中的其他节点展现的地址,一般情况下-bind地址就是展现地址
-bootstrap:用来控制一个server是否在bootstrap模式,在一个datacenter中只能有一个server处于bootstrap模式,当一个server处于bootstrap模式时,可以自己选举为raft leader。
-bootstrap-expect:在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群,该标记不能和bootstrap公用
-bind:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0
-dc:该标记控制agent允许的datacenter的名称,默认是dc1
-encrypt:指定secret key,使consul在通讯时进行加密,key可以通过consul keygen生成,同一个集群中的节点必须使用相同的key
-join:加入一个已经启动的agent的ip地址,可以多次指定多个agent的地址。如果consul不能加入任何指定的地址中,则agent会启动失败,默认agent启动时不会加入任何节点。
-retry-join:和join类似,但是允许你在第一次失败后进行尝试。
-retry-interval:两次join之间的时间间隔,默认是30s
-retry-max:尝试重复join的次数,默认是0,也就是无限次尝试
-log-level:consul agent启动后显示的日志信息级别。默认是info,可选:trace、debug、info、warn、err。
-protocol:consul使用的协议版本
-rejoin:使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中。
-syslog:开启系统日志功能,只在linux/osx上生效
-pid-file:提供一个路径来存放pid文件,可以使用该文件进行SIGINT/SIGHUP(关闭/更新)agent
参考资料 && 集群搭建:
https://www.jianshu.com/p/1d36a6277c3b
consul 基础
- 服务发现:consul 的客户端可以提供一个服务,比如 api 或者 mysql,另外一些客户端可以使用 consul 去发现一个指定服务的提供者。通过 DNS 或者 HTTP 应用程序可以很容易地找到它所依赖的服务。
- 健康检查:consul 客户端可以提供任意数量的健康检查,指定一个服务(比如:webserver 是否返回了 200 OK 状态码) 或者使用本地节点(比如:内存使用是否大于 90%)。这个信息可由 operator 用来监视集群的健康,被服务发现组件用来避免将流量发送到不健康的主机。
- key/value 存储:应用程序可以根据自己的需要使用 consul 层级的 key/value 存储。比如动态配置、功能标记、协调、领袖选举等,简单的 HTTP API 让它更易于使用。
- 多数据中心:cosul 支持开箱即用的多数据中心。这意味着用户不需要担心需要建立额外的抽象层让业务扩展到多个区域。
网友评论