Docker-consul容器服务自动发现与注册

这篇具有很好参考价值的文章主要介绍了Docker-consul容器服务自动发现与注册。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

docker consul 容器的自动发现与注册。

什么叫做微服务(容器)注册与发现

是一种分布式管理系统,定位服务的方法。

在传统架构中,应用程序之间直连到已知的服务,设备提供的网络:ip网络,基于tcp/ip:端口

由于现代微服务部署,服务的动态性,数量增加了,传统的基于ip+端口的形式已经不太适用。

服务注册以及发现:微服务的位置信息(ip+端口+健康状况)统一注册到一个中心化的服务注册表中。

可以允许其他服务动态的查询和发现这些服务

Docker-consul容器服务自动发现与注册,docker,consul,容器

服务注册:当一个服务启动时,会把自己的元数据(ip 端口 服务名称 健康状态)注册到服务注册表中。

这个注册表的服务(consul,zookeeper),也可以在云平台部署。

服务发现:其他服务需要和这个服务通信时,只需要向注册表查询服务位置信息(ip+端口),这样的话可以直接在服务注册表中,直接获取我要的信息,不需要到静态配置查看了。

服务注册于发现的有点:

  1. 动态性,可以在运行时动态添加和移除服务,不需要额外的人工操纵和配置。
  2. 弹性:一旦某个服务不可用,服务注册表可以及时更新,通知其他服务避免请求的失败。
  3. 可扩展:适应不断变化的服务数量。
  4. 服务方调用时,透明性,前段和后端实现解耦

服务注册与发现机制和其他的工具配合使用,负载均衡,健康检查,配置管理(一键同步)。

微服务架构中非常重要的组件。

consul:

consul是HashiCrop公司开发的一套工具,用于实现服务发现与注册,配置管理,分布式的系统协调。

consul的主要特点:

1.服务发现与自动注册,位置信息(ip+端口+服务名称)

2.健康检查,服务注册到consul,一并加入系统的还有他的健康状态,定期发送一个心跳检查,如果服务挂了,consul会自动移除。

3.分布式锁: consul提供了一个分布式锁的功能,协调多个节点之间的操作,防止竞争条件和数据冲突。

每一个服务的发现和注册都是一个会话session

微服务在注册到consul的时候,consul会和这个服务的会话创建一个锁,锁用来标识具体的服务器。会话和锁之间关联。

获取锁:微服务2,建立会话,获取锁,如果申请的锁没有被使用,客户端成功获取,如果已经存在.表示已有其他的服务在占用,会给你分配一个新的锁(KV存储)

释放锁:任务完成或者服务断开了连接,会把锁释放,删除会话和锁之间的关系。删除与锁关联的键。实现资源的释放。

4.KV存储:key-value分布式的键值对存储系统,存储配置信息,锁,特性。应用程序可以使用consul的键值对信息来动态的获取配置信息。

5.多数据中心支持,consul可以在多个地域部署,可以数据中心之间的发现和注册功能。

6.DNS和IHTTP APl: Consul支持DNS接口,通过域名解析定位服务的位置,htte api:通过APL应用接口,可以调用consul的信息。服务信息.,健康检查等等

7.事件通知,如有关键信息可以随时获取通知。

docker-consul部署和搭建

ocker1  20.0.0.41  docker-ce nginx二进制  consul-template(自动发现和自动配置)

docker2  20.0.0.42  registrator 运行注册机制和微服务容器服务

docker3  20.0.0.43  consul多节点服务器加入到consul集群中

docker1

mkdir consul

cp consul_0.9.2_linux_amd64.zip consul/

unzip consul_0.9.2_linux_amd64.zip

mv consul /usr/local/bin/

consul agent \

-server \

-bootstrap \

-ui \

-data-dir=/var/lib/consul-data \

-bind=20.0.0.41 \

-client=0.0.0.0 \

-node=consul-server01 &> /var/log/consul.log &

#-server:指定集群当中的服务器节点,consul的RAFT算法实现分布式结构中节点的一致性。集群当中的成员.直接成为集群的leader,后续加入的服务都是follower

#-bootstrap:表示该节点是引导接待你,引导选组过程,以及为后续加入的server做引导,加入集群。

#-ui:启动图形化界面

#-data-dir=/var/lib/consul-data:指定consul存储数据的路径

#-bind=20.0.0.41:指定consul服务端绑定的IP地址,实现在节点中通信

#-client=0.0.0.0:客户端的地址0.0.0.0:表示所有主机都可以和server建立通信。(生产中是指定的服务器)

#-node=consul-server01:指定consul节点的名称。在集群当中consul节点的名称都是唯一的不可以重复的。

# &> /var/log/consul.log:重定向混合的方式保存到log文件

#&:后台运行

netstat -antp | grep consul

#8300:raft协议的端口,保持分布式集群的一致性,端口处理复制和领导者选举

#8301:LAN Gossip的端口,局域网内部进行节点的通信和信息传播的协议

#8302:Wan Gossip的端口。广域网内节点的通信和信息传播的协议

#8500:webui的端口。用来访问consul的图形化界面

#8600:DNS解析的端口。

consul members

#查看集群信息

consul operator raft list-peers

curl 127.0.0.1:8500/v1/status/peers

#查看集群的server成员

curl 127.0.0.1:8500/v1/status/leader

#查看集群中的领导者

curl 127.0.0.1:8500/v1/catalog/services

#查看以及被集权发现和注册的服务

curl 127.0.0.1:8500/v1/catalog/nodes

#查看集群节点的详细信息。

consul info | grep leader

#查看领导者是否工作

docker2服务端

创建自动发现和注册的容器

docker run -d \

--name=registrator \

-v /var/run/docker.sock:/tmp/docker.sock \

--restart=always \

gliderlabs/registrator:latest \

--ip=20.0.0.42 \

consul://20.0.0.41:8500

#-v /var/run/docker.sock:/tmp/docker.sock:docker.sock的是docker守护进程的UNIX的套接字文件,把他映射到容器当中,registrator容器可以监听docker的所有事件,并且完成自动注册服务。

#--ip=20.0.0.42:注册consul的ip地址

#consul://20.0.0.41:8500:所有发现的服务都会注册到指定的server节点。

如果网页查看不到可以使用这个命令

docker run -d \

--name=registrator \

--net=host \

-v /var/run/docker.sock:/tmp/docker.sock \

--restart=always \

gliderlabs/registrator:latest \

--ip=20.0.0.42 \

consul://20.0.0.41:8500

docker run -itd -p 81:80 --name tets-1 -h test1 nginx

docker run -itd -p 82:80 --name tets-2 -h test2 httpd

到页面访问测试:20.0.0.41:8500

docker1

mkdir consul

cp consul_0.9.2_linux_amd64.zip consul/

unzip consul_0.9.2_linux_amd64.zip

mv consul /usr/local/bin/

consul agent \

-server \

-bootstrap \

-ui \

-data-dir=/var/lib/consul-data \

-bind=20.0.0.41 \

-client=0.0.0.0 \

-node=consul-server01 &> /var/log/consul.log &

#-server:指定集群当中的服务器节点,consul的RAFT算法实现分布式结构中节点的一致性。集群当中的成员.直接成为集群的leader,后续加入的服务都是follower

#-bootstrap:表示该节点是引导接待你,引导选组过程,以及为后续加入的server做引导,加入集群。

#-ui:启动图形化界面

#-data-dir=/var/lib/consul-data:指定consul存储数据的路径

#-bind=20.0.0.41:指定consul服务端绑定的IP地址,实现在节点中通信

#-client=0.0.0.0:客户端的地址0.0.0.0:表示所有主机都可以和server建立通信。(生产中是指定的服务器)

#-node=consul-server01:指定consul节点的名称。在集群当中consul节点的名称都是唯一的不可以重复的。

# &> /var/log/consul.log:重定向混合的方式保存到log文件

#&:后台运行

netstat -antp | grep consul

#8300:raft协议的端口,保持分布式集群的一致性,端口处理复制和领导者选举

#8301:LAN Gossip的端口,局域网内部进行节点的通信和信息传播的协议

#8302:Wan Gossip的端口。广域网内节点的通信和信息传播的协议

#8500:webui的端口。用来访问consul的图形化界面

#8600:DNS解析的端口。

consul members

#查看集群信息

consul operator raft list-peers

curl 127.0.0.1:8500/v1/status/peers

#查看集群的server成员

curl 127.0.0.1:8500/v1/status/leader

#查看集群中的领导者

curl 127.0.0.1:8500/v1/catalog/services

#查看以及被集权发现和注册的服务

curl 127.0.0.1:8500/v1/catalog/nodes

#查看集群节点的详细信息。

consul info | grep leader

#查看领导者是否工作

docker2服务端

创建自动发现和注册的容器

docker run -d \

--name=registrator \

-v /var/run/docker.sock:/tmp/docker.sock \

--restart=always \

gliderlabs/registrator:latest \

--ip=20.0.0.42 \

consul://20.0.0.41:8500

#-v /var/run/docker.sock:/tmp/docker.sock:docker.sock的是docker守护进程的UNIX的套接字文件,把他映射到容器当中,registrator容器可以监听docker的所有事件,并且完成自动注册服务。

#--ip=20.0.0.42:注册consul的ip地址

#consul://20.0.0.41:8500:所有发现的服务都会注册到指定的server节点。

如果网页查看不到可以使用这个命令

docker run -d \

--name=registrator \

--net=host \

-v /var/run/docker.sock:/tmp/docker.sock \

--restart=always \

gliderlabs/registrator:latest \

--ip=20.0.0.42 \

consul://20.0.0.41:8500

docker run -itd -p 81:80 --name tets-1 -h test1 nginx

docker run -itd -p 82:80 --name tets-2 -h test2 httpd

到页面访问测试:20.0.0.41:8500

docker2

Docker-consul容器服务自动发现与注册,docker,consul,容器

Docker-consul容器服务自动发现与注册,docker,consul,容器

Docker-consul容器服务自动发现与注册,docker,consul,容器

实现自动化更新文件

是HashiCrop公司开发的一个工具,用于consul集成,自定更新配置文件,实现配置管理的自动化。

作用:

1.动态的配置更新。consul-template监控consul当中key-vlaue的存储键值对,键值对发生变化,会自动更新配置文件。无需重启服务

2.支持多种后端的模版: nginx配置,ETCD等等

Docker-consul容器服务自动发现与注册,docker,consul,容器

Docker-consul容器服务自动发现与注册,docker,consul,容器

docker2

Docker-consul容器服务自动发现与注册,docker,consul,容器

回到docker1查看外部服务信息

Docker-consul容器服务自动发现与注册,docker,consul,容器

浏览器访问

Docker-consul容器服务自动发现与注册,docker,consul,容器

Docker-consul容器服务自动发现与注册,docker,consul,容器

负载均衡实现

docker3

Docker-consul容器服务自动发现与注册,docker,consul,容器

回到docker1

Docker-consul容器服务自动发现与注册,docker,consul,容器

回到docker2

Docker-consul容器服务自动发现与注册,docker,consul,容器

Docker-consul容器服务自动发现与注册,docker,consul,容器

回到页面查看

Docker-consul容器服务自动发现与注册,docker,consul,容器

总结:

docker consul的核心就是是发现,微服务,可以动态的管理

docker-consul:查,看,元数据:ip 端口健康状态服务名

consul-template:自动化管理配置文件的工具,获取consul当中注册的服务信息,可以自动的添加到配置文件当中,及时生效,无须重启服务

consul的多节点:一旦选举出了leader,后续的服务器都是follower.server的名称不能重复,唯一.但是可以在一个数据中心。文章来源地址https://www.toymoban.com/news/detail-820072.html

到了这里,关于Docker-consul容器服务自动发现与注册的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker容器:docker consul的注册与发现及consul-template

    (1)服务注册与发现是微服务架构中不可或缺的重要组件。 (2)为解决服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问的问题 (1)consul是google开源的一个使用go语言开发的服务管理软件。支持多数据中心、分布式高可用的

    2024年02月11日
    浏览(35)
  • 容器(第七篇)docker-consul

    consul服务器: 1. 建立 Consul 服务 mkdir /opt/consul cp consul_0.9.2_linux_amd64.zip /opt/consul cd /opt/consul unzip consul_0.9.2_linux_amd64.zip mv consul /usr/local/bin/ //设置代理,在后台启动 consul 服务端 consul agent -server -bootstrap -ui -data-dir=/var/lib/consul-data -bind=192.168.80.15 -client=0.0.0.0 -node=consul

    2024年02月08日
    浏览(61)
  • Docker容器:docker consul的注册与发现及consul-template守护进程

    (1)服务注册与发现是微服务架构中不可或缺的重要组件。 (2)为解决服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问的问题 (1)consul是google开源的一个使用go语言开发的服务管理软件。支持多数据中心、分布式高可用的

    2024年02月11日
    浏览(50)
  • docker consul 服务注册与发现

    Docker consul的容器服务更新与发现 ------------------------------------ Consul ------------------------------------ (1)什么是服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接

    2024年02月09日
    浏览(46)
  • Docker+Consul+Registrator 实现服务注册与发现

    第四阶段 时  间:2023年8月8日 参加人:全班人员 内  容: Docker+Consul+Registrator 实现服务注册与发现 目录 一、服务注册中心引言 CAP理论是分布式架构中重要理论: 二、服务注册中心软件 (一)ZooKeeper (二)Eureka (三)Etcd (四)Consul 常用的服务发现产品之间的比较: 三

    2024年02月13日
    浏览(57)
  • docker容器:Docker consul的容器服务更新与发现

    目录 一、Docker consul 1、什么是服务注册与发现 2、什么是consul 3、consul部署 ①实验目的 ②实验环境及拓扑 ③consul配置 ④registrator后端配置 ⑤测试发现功能是否正常 4、consul-template部署 ①准备template nginx模板文件 ②编译安装nginx ③安装template 5、验证template-nginx负载结果 6、测

    2024年02月04日
    浏览(39)
  • Docker consul、容器服务更新与发现

    Consul服务器:192.168.188.17,consul服务,nginx服务,consul-template守护进程 Registrator服务器:192.168.188.11,registrator容器,nginx容器 建立consul服务器 mkdir /opt/consul cp consul_0.9.2_linux_amd64.zip /opt/consul cd /opt/consul unzip consul_0.9.2_linux_amd64.zip mv consul /usr/local/bin/ 设置代理 在后台启动consul服务

    2024年01月19日
    浏览(37)
  • Docker 之 Consul容器服务更新与发现

    服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构,起初的解决手段是在服务前端负载均衡,这样前端必须要知道所有后端服

    2024年02月15日
    浏览(41)
  • 【Docker】Consul的容器服务更新与发现

    服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构,起初的解决手段是在服务前端负载均衡,这样前端必须要知道所有后端服

    2024年02月15日
    浏览(44)
  • Docker consul的容器服务更新与发现

    什么是服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构,起初的解决手段是在服务前端负载均衡,这样前端

    2024年02月08日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包