熟悉我博客的人知道我挺喜欢折腾新东西的,马上就要10 1 放假了,大家都没心思忙工作 !  一堆的需求都让我给他扔到脑后面了。  最近看了一些微信的技术文章分享,有人拿 zookeeper 、etcd、consul做对比,因为我对consul真心不熟悉,所有不好扯皮。  但今天就不同了,花了一下午的时间,把consul api文档走了一遍。 


关于consul session注册及服务发现,原文地址 :   http://xiaorui.cc/?p=2080

估计有些朋友不知道consul是啥?  


Consul用于发现和配置服务。它主要提供了以下几个主要功能:

服务发现:Consul的客户端可以提供的服务,如api或mysql,其他的客户端可以使用Consul发现一个特定服务的提供者。使用DNS或HTTP,应用程序可以很容易地找到他们所依赖的服务。


健康检查:Consul客户端可以提供任何数量的健康检查,无论是与给定的服务(“Web服务器返回200 OK”),还是和本地节点相关联(“内存利用率低于90%”)。这些信息可以由操作员监控集群健康,它用于由服务发现组件将通信路由远离不健康的主机。


键/值存储:应用程序可以使用Consul的分层键/值存储任意数量的目标,包括动态配置,特征衰弱,leader选举,等等。简单的HTTP API使得它易于使用。


多数据中心:Consul支持多个数据中心,zookeeper和etcd对于多数据中心支持有些差 , 这意味着Consul的用户不用担心构建额外的抽象层增加到多个区域。


另外consul可以与confd 服务集成,可以用来动态生成 lvs 、nginx 和 haproxy 配置文件。


那怎么安装consul? 这是consul的dockerfile,可以直接build封装镜像就可以了。 

如何启动?

consul有了,我们先来测试他http接口,consul http默认端口是8500,dns是8600端口。 下面是往consul注册两条信息,标明我在哪个数据中心,我是哪个节点,哪个地址,什么服务,什么属性。

查看刚才的注册信息, curl http://127.0.0.1:8500/v1/catalog/service/mysql  

前面的都是测试,开始来正经活了…  其实我最关注的consul的Ephemeral的功能。我在测试之前,还特意看了下文档,虽然文档上有说明,但是看到不少人在stackoverflow.com提问 ,consul做临时节点时,agent挂掉了,但consul还是可以看到信息…

下午在用python的consul模块做consul session操作时,也遇到了这问题…    提了一个issue来确认….

consul文档上http接口的使用。

consul的python驱动用的是python-consul 。下面代码是agent端,不停的说明自己现在的状态。 

这是服务端,他会一直查看可用的节点。 

说实话,我觉得consul官方陈述的session功能,貌似跟zookeeper的Ephemeral Node不太一样。他的session只能是主动destroy掉 ,不然就只能等ttl expire了。  


文章写得有些浅,过两天再看看consul api的资料 。



对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!
暂无相关产品

1则回应给“配置consul的session注册及服务发现功能[python]”

发表评论