docker consul部署

一、定义

Consul 是一个支持多数据中心分布式高可用的 服务发现 和 配置共享 的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行开源。 Consul 支持 健康检查,并允许 HTTP 、GRPC 和 DNS 协议调用 API 存储键值对.
命令行超级好用的虚拟机管理软件 vgrant 也是 HashiCorp 公司开发的产品.
一致性协议采用 Raft 算法,用来保证服务的高可用. 使用 GOSSIP 协议管理成员和广播消息, 并且支持 ACL 访问控制.
在这里插入图片描述

1、Consul 使用场景

Docker 实例的注册与配置共享
Coreos 实例的注册与配置共享
SaaS 应用的配置共享、服务发现和健康检查。
vitess 集群
与 confd 服务集成,动态生成 nginx 和 haproxy 配置文件

2、Consul 优势

使用 Raft 算法来保证一致性, 比复杂的 Paxos 算法更直接. 相比较而言, zookeeper 采用的是 Paxos, 而 etcd 使用的则是 Raft.
支持 多数据中心,内外网的服务采用不同的端口进行监听。 多数据中心集群可以避免单数据中心的单点故障,而其部署则需要考虑网络延迟,分片等情况等. zookeeper 和 etcd 均不提供多数据中心功能的支持。
支持 健康检查。 etcd 不提供此功能。
支持 HTTP、DNS 和 GPRS 协议接口。 zookeeper 的集成较为复杂,etcd 只支持 http 协议。
官方提供 WEB管理界面,etcd 无此功能。
综合比较, Consul 作为服务注册和配置管理的新星,比较值得关注和研究。

3、Consul的四大核心特性:

consul是分布式的、高可用、横向扩展的
服务发现:可以方便的实现服务注册,通过DNS或者HTTP应用程序可以很容易的找到他所依赖的服务.
Key/Value存储:使用Key/Value进行数据存储。
多数据中心:Consul支持开箱即用的多数据中心。这意味着用户不需要担心建立额外的抽象层让业务扩展到多个区域
健康检查:可以对指定服务进行健康检查例如,Response Status是否为200,避免将流量转发到不健康的服务上。

4、构建核心

template 模板(更新)
registrator (自动发现+注册到consul-server端)后端每构建出一个容器,会向registrator进行注册,控制consul完成更新操作,consul会触发consul template模板进行热更新( reload)
核心机制: consul :自动发现、自动更新,为容器提供服务(添加、删除、生命周期)

二、容器服务更新与发现拓扑图

在这里插入图片描述
核心就是nginx+后面的容器服务,代理的是容器暴露的端口
让前面nginx不重启服务的情况下识别到后面服务的更新
更新的位置就是nginx里的upstream池
给nginx一个模板,直接识别模板
通过consul
1、registrator 部署在 server上,运行为容器进行操作,发现容器发生变更,识别IP和端口注册在registrator上
2、汇报给consul,更新的IP和端口,agent为代理,consul server只是consul agent其中一个模式。agent控制server收集变更信息并展示出来,在注册中心看到更新信息,并通过templat模板方式定义为标准格式。模板里就有了后端的配置,通过传入变量的方式写入模板中,这样模板中就有了upstraem的配置和后端的信息
3、nginx通过include加载和识别,consul控制nginx重载reload就可以了

三、部署

服务器consul:192.168.226.101 Docker-ce、Consul、 Consul-template
服务器docker:192.168.226.50 Docker-ce、 registrator

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# hostname consul
[root@localhost ~]# su
[root@consul ~]# 
[root@localhost ~]# hostname docker
[root@localhost ~]# su
[root@docker ~]# 

1、consul服务器操作

[root@consul ~]# mkdir /root/consul
[root@consul ~]# cd consul/

在这里插入图片描述

[root@consul consul]# unzip consul_0.9.2_linux_amd64.zip

在这里插入图片描述

[root@consul consul]# mv consul /usr/bin
或者
[root@consul consul]# ln -s /root/consul /usr/bin
[root@consul ~]# consul agent \                                     agent 模式
> -server \                                                          使用其中的server模式
> -bootstrap \                                                       前端框架
> -ui \                                                 
Docker Consul是一个用于服务发现、配置和分布式协调的开源工具。它可以帮助您在Docker环境中管理和监控多个容器的状态和连接。 使用Docker Consul,您可以注册和发现容器中的服务,并利用其提供的API进行服务发现、健康检查和负载均衡。它还提供了键值存储和事件系统,用于共享和同步配置信息。 下面是一些使用Docker Consul的常见场景: 1. 服务发现:您可以在Docker容器中运行Consul代理,并将每个容器注册为Consul服务。这样,其他容器或应用程序可以通过Consul发现和访问这些服务。 2. 健康检查:Consul可以定期检查容器中的服务是否正常运行,并根据检查结果自动更新服务的状态。这样,其他容器或应用程序可以根据服务的健康状态进行决策。 3. 配置管理:Consul提供了一个键值存储系统,用于存储和管理配置信息。您可以将配置信息存储在Consul中,并使用其API在容器中访问这些配置。 4. 事件订阅:Consul的事件系统允许您订阅特定类型的事件,例如服务注册或注销、健康检查状态变化等。这样,您可以根据事件触发自定义逻辑。 要使用Docker Consul,您可以在Docker环境中部署Consul容器,并使用其提供的API和命令行工具进行配置和管理。您可以通过Docker Compose或Docker Swarm等工具来编排和管理Consul集群。 请注意,这里提到的Docker Consul是指使用Docker容器部署和管理的Consul实例,并不是指Consul本身由Docker开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值