Docker-Consul入门(一) 简介,用途,环境搭建-单机

1.    Consul是什么?

Consul是一个分布式、高可用的系统,是一个为了解决在生产环境中服务注册,服务发现,服务配置的一个工具,它有多个组件,提供如下几个关键功能:

  • 服务发现: Consul的某些客户端可以提供一个服务,例如api或者mysql,其它客户端可以使用Consul去发现这个服务的提供者。使用DNS或者HTTP,应用可以很容易的找到他们所依赖的服务。
  • 健康检查: Consul客户端可以提供一些健康检查,这些健康检查可以关联到一个指定的服务(服务是否返回200 OK),也可以关联到本地节点(内存使用率是否在90%以下)。这些信息可以被一个操作员用来监控集群的健康状态,被服务发现组件路由时用来远离不健康的主机。
  • 键值存储: 应用可以使用Consul提供的分层键值存储用于一些目的,包括动态配置、特征标记、协作、leader选举等等。通过一个简单的HTTP API可以很容易的使用这个组件。
  • 多数据中心: Consul对多数据中心有非常好的支持,这意味着Consul用户不必担心由于创建更多抽象层而产生的多个区域。

2.    为什么要用它?

现在企业应用都向微服务化方向发展,当把我们的系统功能拆分成一个一个的微服务后,存在以下问题

·        需要配置N个服务的网络位置,加大配置的复杂性

·        服务的网络位置变化,都需要改变每个调用者的配置

·        集群的情况下,难以做负载(反向代理的方式除外)

(借用网上的一个图来描述一下)

那我们该如何处理呢? 这个时候我们就可以通过使用 服务发现 机制系统,来帮助我们来管理这些繁杂的配置。

服务A-N把当前自己的网络位置注册到服务发现模块(这里注册的意思就是告诉),服务发现就以K-V的方式记录下,K一般是服务名,V就是IP:PORT。服务发现模块定时的轮询查看这些服务能不能访问的了(这就是健康检查)。客户端在调用服务A-N的时候,就跑去服务发现模块问下它们的网络位置,然后再调用它们的服务。这样的方式是不是就可以解决上面的问题了呢?客户端完全不需要记录这些服务网络位置,客户端和服务端完全解耦!

3.    搭建docker-consul环境。

3.1从docker-hub上搜索拉取镜像

docker search consul

docker pull consul

3.2  启动镜像

dockerrun -d --name consulserver1 --net=host -e'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' consul agent-server -bind=10.10.10.79 -bootstrap-expect=1  -client0.0.0.0 –ui

–net=host docker参数, 使得docker容器越过了netnamespace的隔离,免去手动指定端口映射的步骤

-server consul支持以server或client的模式运行, server是服务发现模块的核心, client主要用于转发请求

-advertise 将本机私有IP传递到consul

-bootstrap-expect 指定consul将等待几个节点连通,成为一个完整的集群

-retry-join 指定要加入的consul节点地址,失败会重试, 可多次指定不同的地址

-client consul绑定在哪个client地址上,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1

-bind 该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0

-allow_stale 设置为true, 表明可以从consul集群的任一server节点获取dns信息, false则表明每次请求都会经过consul server leader

--name DOCKER容器的名称

-client 0.0.0.0 表示任何地址可以访问。

-ui  提供图形化的界面。

3.3  验证服务

IE,输入: http://ip:8500后会出现下去的界面既表示成功。

猜你喜欢

转载自blog.csdn.net/xulong5000/article/details/113595964
今日推荐