322-consul服务发现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33781658/article/details/88699206








consul服务发现






consul是HashiCorp公司推出的开源工具
用于实现分布式系统的服务发现与配置



consul的安装
https://releases.hashicorp.com/consul/1.4.3/consul_1.4.3_linux_amd64.zip

下载完之后,解压一下
里面只有一个consul可执行文件

然后
sudo cp ./consul /usr/local/bin/
弄到环境变量里面

然后就可以在任意位置直接执行
consul

可以看到consul的命令







我们来看下consul的命令

agent		指令是consul的核心,它运行agent来维护成员的重要信息、运行检查、服务宣布、查询处理等等。

event		命令提供了一种机制,用来fire自定义的用户事件,这些事件对consul来说是不透明的,
			但它们可以用来构建自动部署、重启服务或者其他行动的脚本。

exec		指令提供了一种远程执行机制,比如你要在所有的机器上执行uptime命令,
			远程执行的工作通过job来指定,存储在KV中,agent使用event系统可以快速的知道有新的job产生,
			消息是通过gossip协议来传递的,因此消息传递是最佳的,但是并不保证命令的执行。
			事件通过gossip来驱动,远程执行依赖KV存储系统(就像消息代理一样)。

force-leave	治疗可以强制consul集群中的成员进入left状态(空闲状态),记住,即使一个成员处于活跃状态,
			它仍旧可以再次加入集群中,这个方法的真实目的是强制移除failed的节点。如果failed的节点还是网络的一部分,
			则consul会周期性的重新链接failed的节点,如果经过一段时间后(默认是72小时),
			consul则会宣布停止尝试链接failed的节点。force-leave指令可以快速的把failed节点转换到left状态。

info		指令提供了各种操作时可以用到的debug信息,对于client和server,info有返回不同的子系统信息,
			目前有以下几个KV信息:agent(提供agent信息),consul(提供consul库的信息),raft(提供raft库的信息),
			serf_lan(提供LAN gossip pool),serf_wan(提供WAN gossip pool)

join		指令告诉consul agent加入一个已经存在的集群中,一个新的consul agent必须加入一个已经有至少一个成员的集群中,
			这样它才能加入已经存在的集群中,如果你不加入一个已经存在的集群,则agent是它自身集群的一部分,
			其他agent则可以加入进来。agents可以加入其他agent多次。consul join [options] address。
			如果你想加入多个集群,则可以写多个地址,consul会加入所有的地址。

keygen		指令生成加密的密钥,可以用在consul agent通讯加密

leave		指令触发一个优雅的离开动作并关闭agent,节点离开后不会尝试重新加入集群中。
			运行在server状态的节点,节点会被优雅的删除,这是很严重的,
			在某些情况下一个不优雅的离开会影响到集群的可用性。

members		指令输出consul agent目前所知道的所有的成员以及它们的状态,
			节点的状态只有alive、left、failed三种状态。

monitor		指令用来链接运行的agent,并显示日志。monitor会显示最近的日志,
			并持续的显示日志流,不会自动退出,除非你手动或者远程agent自己退出。
	

reload		指令可以重新加载agent的配置文件。SIGHUP指令在重新加载配置文件时使用,
			任何重新加载的错误都会写在agent的log文件中,并不会打印到屏幕。

version		打印consul的版本

watch		指令提供了一个机制,用来监视实际数据视图的改变(节点列表、成员服务、KV),
			如果没有指定进程,当前值会被dump出来

ui 			web ui界面的命令

agent -dev     以开发模式启动代理。









然后我们看一下consul的角色

1.client,客户端,无状态,将http和dns接口请求转发给局域网内的服务端集群

2.server,服务端,保存配置信息,高可用集群,
	在局域网内与本地客户端通讯,








运行consul代理
consul是经典的C/S架构,可以运行服务模式或者客户模式
每一个数据中心必须有至少一个服务节点
3-5个数据节点最好
非常不建议只运行一个服务节点,
因为在节点失效的情况下,数据有极大的丢失风险

运行Agent
agent可以运行为server或者client模式,
每个数据中心必须至少拥有一台server
建议在一个集群中有3-5个server

其他的agent运行为client模式
一个client是一个非常轻量级的进程






consul的集群搭建
运行一下命令
consul agent -server -bootstrap-expect 2 -data-dir /tmp/consul -node=n1 -bind=192.168.110.123 -ui -config-dir /etc/consul.d -rejoin -join 192.168.110.123 -client 0.0.0.0

consul agent -server -bootstrap-expect 2 -data-dir /tmp/consul -node=n1 -bind=192.168.110.123 -ui -config-dir /etc/consul.d -rejoin -join 192.168.110.123 -client 0.0.0.0











猜你喜欢

转载自blog.csdn.net/qq_33781658/article/details/88699206