ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Docker搭建Consul集群

2020-05-29 22:05:52  阅读:252  来源: 互联网

标签:config Consul Server consul 集群 Docker data 节点


了解 Consul

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

Consul关键特性

  • 服务发现:支持服务发现。你可以通过 DNS 或 HTTP 的方式获取服务信息。
  • 健康检查:支持健康检查。可以提供与给定服务相关联的任何数量的健康检查(如 web 状态码或 cpu 使用率)。
  • K/V 存储:键/值对存储。你可用通过 consul 存储如动态配置之类的相关信息。
  • 多数据中心:支持多数据中心,开箱即用。
  • WEB-UI:支持WEB-UI。点点点,你就能够了解你的服务现在的运行情况,一目了然,对开发运维是非常友好的。

Consul集群概念

  • Client:表示 Consul 客户端模式,是 Consul 节点的一种模式,所有注册到 Client 节点的服务会被转发到 Server 。本身无状态不持久化如何数据。Client 通过 HTTP、DNS、GRPC 接口请求转发给局域网内的服务端集群。
  • Server:表示 Consul 的服务端模式, Server 功能和 Client 都一样,不同的是 Server 持久化数据到本地。在局域网内与本地 Client 通讯,通过广域网与其他数据中心通讯。每个数据中心的 Server 数量推荐为 3 个或是 5 个。
  • Server-Leader :表示这个 Server 是它们的老大,它和其它 Server 不一样的一点是,它需要负责同步注册的信息给其它的 Server 节点,同时也要负责各个节点的健康监测。如果 Leader 宕机了,通数据中心的所有 Server 内部会使用 Raft 算法来在其中选取一个 Leader 出来。
  • Agent :Agent 是 Consul 的核心进程,Agent 的工作是维护成员关系信息、注册服务、健康检查、响应查询等等。Consul 集群的每一个节点都必须运行 agent 进程。

Consul与其他同类产品优势

开始实战

拉取Consul镜像

docker pull consul

Consul目录

docker pull consul

Consul挂载目录

/consul/data 持久化数据存储
/consul/config 配置文件

创建Consul Server节点

docker run -d -p 8001:8500 --restart=always \
--mount type=volume,source=consul-data-1,target=/consul/data \
--mount type=volume,source=consul-conf-1,target=/consul/config \
-e CONSUL_BIND_INTERFACE='eth0' \
--name consul-server-1 consul agent -server -node server-1 \
--bootstrap-expect 3 -client 0.0.0.0 -ui \
-data-dir=/consul/data -config-dir=/consul/config -datacenter=dh_dc

创建其他Consul节点并且加入集群

docker run -d -p 8001:8500 --restart=always \
--mount type=volume,source=consul-data-1,target=/consul/data \
--mount type=volume,source=consul-conf-1,target=/consul/config \
-e CONSUL_BIND_INTERFACE='eth0' \
--name consul-server-1 consul agent -server -node server-1 \
--bootstrap-expect 3 -client 0.0.0.0 -ui \
-data-dir=/consul/data -config-dir=/consul/config -datacenter=dh_dc -join=172.17.0.2

创建Consul Client节点

docker run -d -p 8500:8500 --restart=always \
--mount type=volume,source=consul-data-4,target=/consul/data \
--mount type=volume,source=consul-conf-4,target=/consul/config \
-e CONSUL_BIND_INTERFACE='eth0' --name=consul-client-1 consul \
agent -node=client-1 -join=172.17.0.2 -client='0.0.0.0' -datacenter=dc_dh \
-ui -config-dir /consul/config -data-dir=/consul/data

查询Consul集群信息

docker exec consul-server-1consul members

命令介绍

agent : 表示启动 Agent 进程。
-server:表示启动 Consul Server 模式。
-client:表示启动 Consul Cilent 模式。
-bootstrap:表示这个节点是 Server-Leader ,每个数据中心只能运行一台服务器。技术角度上讲 Leader 是通过 Raft 算法选举的,但是集群第一次启动时需要一个引导 Leader,在引导群集后,建议不要使用此标志。
-bootstrap-expect:集群期望的 Server 节点数,只有达到这个值才会选举 Leader
-ui:表示启动 Web UI 管理器
-node:节点的名称,集群中必须是唯一的。
-client:表示 Consul 将绑定客户端接口的地址,0.0.0.0 表示所有地址都可以访问。
-join:表示加入到某一个集群中去。 如:-join=192.168.1.23
-bind: 指定节点绑定的地址
-datacenter: 数据中心
-config-file: 要加载的配置文件
---
**环境变量介绍**
CONSUL_CLIENT_INTERFACE :配置 Consul 的 -client=<interface ip> 命令参数。
CONSUL_BIND_INTERFACE :配置 Consul 的 -bind=<interface ip> 命令参数。
CONSUL_DATA_DIR :配置 Consul 的数据持久化目录。
CONSUL_CONFIG_DIR:配置 Consul 的配置文件目录。

端口介绍

TCP/8300	8300 端口用于服务器节点。客户端通过该端口 RPC 协议调用服务端节点。服务器节点之间相互调用
TCP/UDP/8301	8301 端口用于单个数据中心所有节点之间的互相通信,即对 LAN 池信息的同步。它使得整个数据中心能够自动发现服务器地址,分布式检测节点故障,事件广播(如领导选举事件)。
TCP/UDP/8302	8302 端口用于单个或多个数据中心之间的服务器节点的信息同步,即对 WAN 池信息的同步。它针对互联网的高延迟进行了优化,能够实现跨数据中心请求。
8500	8500 端口基于 HTTP 协议,用于 API 接口或 WEB UI 访问。
8600	8600 端口作为 DNS 服务器,它使得我们可以通过节点名查询节点信息。

标签:config,Consul,Server,consul,集群,Docker,data,节点
来源: https://www.cnblogs.com/net666/p/12944655.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有