原文地址:L4 gateway

什么是etcd网关


etcd网关是一个简单的TCP代理,可将网络数据转发到etcd集群。网关是无状态且透明的; 它既不会检查客户端请求,也不会干扰群集响应。

网关支持多个etcd服务器端点,并采用简单的循环策略。 它仅路由到可用端点,并向其客户端隐藏故障。 将来可能会支持其他重试策略,例如加权轮询。

什么时候使用etcd网关


每个访问etcd的应用程序必须首先具有etcd集群客户端端点的地址。 如果同一服务器上的多个应用程序访问相同的etcd集群,则每个应用程序仍需要知道etcd集群的广播的客户端端点。 如果将etcd集群重新配置为具有不同的端点,则每个应用程序可能还需要更新其端点列表。 这种大规模的重新配置既乏味又容易出错。

etcd网关通过充当稳定的本地端点来解决此问题。 典型的etcd网关配置是,每台计算机运行一台网关,侦听本地地址,并且每个etcd应用程序都连接到其本地网关。 结果只是网关需要更新其端点,而不是更新每个应用程序。

总之,为了自动传播集群端点更改,etcd网关在为访问同一etcd集群的多个应用程序服务的每台机器上运行。

什么时候不该使用etcd网关

  • 提升性能

    该网关不是为提高etcd群集性能而设计的。 它不提供缓存,监视合并或批处理。 etcd团队正在开发一种缓存代理,旨在提高群集的可伸缩性。
  • 在集群管理系统运行时

    像Kubernetes这样的高级集群管理系统本身就支持服务发现。 应用程序可以使用系统管理的DNS名称或虚拟IP地址访问etcd集群。 例如,kube-proxy等效于etcd网关。

启动etcd网关


考虑一个具有以下静态端点的etcd集群:

名字 地址 主机名
infra0 10.0.1.10 infra0.example.com
infra1 10.0.1.11 infra1.example.com
infra2 10.0.1.12 infra2.example.com

通过以下命令使用静态端点启动etcd网关:

$ etcd gateway start --endpoints=infra0.example.com,infra1.example.com,infra2.example.com
2016-08-16 11:21:18.867350 I | tcpproxy: ready to proxy client requests to [...]

或者,如果使用DNS进行服务发现,请考虑DNS SRV条目:

$ dig +noall +answer SRV _etcd-client._tcp.example.com
_etcd-client._tcp.example.com. 300 IN SRV 0 0 2379 infra0.example.com.
_etcd-client._tcp.example.com. 300 IN SRV 0 0 2379 infra1.example.com.
_etcd-client._tcp.example.com. 300 IN SRV 0 0 2379 infra2.example.com.
$ dig +noall +answer infra0.example.com infra1.example.com infra2.example.com
infra0.example.com. 300 IN A 10.0.1.10
infra1.example.com. 300 IN A 10.0.1.11
infra2.example.com. 300 IN A 10.0.1.12

启动etcd网关,以使用以下命令从DNS SRV条目中获取端点:

$ etcd gateway start --discovery-srv=example.com
2016-08-16 11:21:18.867350 I | tcpproxy: ready to proxy client requests to [...]

配置参数


etcd 集群

--endpoints

  • 以逗号分隔的用于转发客户端连接的etcd服务器目标列表。
  • 默认:127.0.0.1:2379
  • 无效的例子:https://127.0.0.1:2379(网关不适用于TLS 终端)

--discovery-srv

  • 用于通过SRV记录引导群集终结点的DNS域。
  • 默认值:未设置

网络

--listen-addr

  • 接收客户端请求绑定的接口和端口
  • 默认:127.0.0.1:23790

--retry-delay

  • 重试连接到失败的端点之前的延迟时间。
  • 默认值:1m0s
  • 无效例子:"123"(期望之外的时间格式)

安全

--insecure-discovery

  • 接受不安全或容易受到中间人攻击的SRV记录。
  • 默认值:false

--trusted-ca-file

  • etcd集群的客户端TLS CA文件的路径。 用于认证端点。
  • 默认值:未设置

ETCD:etcd网关的更多相关文章

  1. rancher v2.2.4创建kubernetes集群出现[etcd] Failed to bring up Etcd Plane: [etcd] Etcd Cluster is not healthy

    主机:rancher(172.16.2.17),master(172.16.2.95),node01(172.16.2.234),node02(172.16.2.67) 问题:开始是用的rancher ...

  2. 二进制安装kubernetes(一) 环境准备及etcd组件安装及etcd管理软件etcdkeeper安装

    实验环境: 架构图: 主机环境: 操作系统:因docker对内核需要,本次部署操作系统全部采用centos7.6(需要内核3.8以上) VM :2C 2G 50G * 5  PS:因后面实验需要向k8 ...

  3. etcd学习(10)-etcd对比Consul和zooKeeper如何选型

    etcd选型对比 前言 基本架构和原理 etcd Consul ZooKeeper 选型对比 总结 参考 etcd选型对比 前言 对比 Consul, ZooKeeper.选型etcd有那些好处呢? ...

  4. Centos7下Etcd集群搭建

    一.简介 "A highly-available key value store for shared configuration and service discovery." ...

  5. 基于docker+etcd+confd + haproxy构建高可用、自发现的web服务

    基于docker+etcd+confd + haproxy构建高可用.自发现的web服务 2016-05-16 15:12 595人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主 ...

  6. 服务发现之 Etcd VS Consul

    抄自这里 *********************************************************************************************** ...

  7. 服务发现:Zookeeper vs etcd vs Consul

    [编者的话]本文对比了Zookeeper.etcd和Consul三种服务发现工具,探讨了最佳的服务发现解决方案,仅供参考. 如果使用预定义的端口,服务越多,发生冲突的可能性越大,毕竟,不可能有两个服务 ...

  8. 开源服务发现项目Zookeeper,Doozer,Etcd

    这篇文章是Jason Wilder对于常见的服务项目发现Zookeeper.Doozer,Etcd所写的一篇博客,其原文地址例如以下:Open-Source Service Discovery. 服务 ...

  9. Docker 搭建 etcd 集群及管理

    环境 host1 10.1.99.13 host2 10.1.99.14 host3 10.1.99.15 host4 10.1.99.12(用于测试添加删除节点) 初始化集群 host1 $ doc ...

随机推荐

  1. Spring Boot 如何自定义返回错误码错误信息

    说明 在实际的开发过程中,很多时候要定义符合自己业务的错误码和错误信息,而不是统一的而不是统一的下面这种格式返回到调用端 INTERNAL_SERVER_ERROR(500, "Intern ...

  2. webpack学习_使用source map

    追踪错误和警告,JS提供sourcemap功能,将编译后的代码映射回原始代码(简单来说就是即使打包后,也可以检测知道该错误来自哪个JS文件).如果一个错误来自与b.js,那么source map回明确 ...

  3. 计算密集型和 io 密集型项目的使用场景分析和代码演示

    from threading import Thread from multiprocessing import Process import time 计算密集型 def work1(): res= ...

  4. [译]C# 7系列,Part 7: ref Returns ref返回结果

    原文:https://blogs.msdn.microsoft.com/mazhou/2017/12/12/c-7-series-part-7-ref-returns/ 背景 有两种方法可以将一个值传 ...

  5. 使用ASP.NET Core 3.x 构建 RESTful API - 3.4 内容协商

    现在,当谈论起 RESTful Web API 的时候,人们总会想到 JSON.但是实际上,JSON 和 RESTful API 没有半毛钱关系,只不过 JSON 恰好是RESTful API 结果的 ...

  6. 使用SQL生成指定数据库的数据字典(MSSQL)

    USE DBNAME --指定要生成数据字典的数据库 GO SELECT 表名= CASE WHEN a.colorder= 1 THEN d.name ELSE '' END, 表说明= CASE ...

  7. sqlserver update join 多关联更新

    由于程序bug,导致之前很多数据入库后信息不全,好在有基础信息表,可以通过基础信息表更新缺失字段信息 1.通过 inner join语法实现多关联更新 update a set a.name = b. ...

  8. 解决Entity 实体类中加了@Id 注解后仍然出现org.hibernate.AnnotationException: No identifier specified for entity 错误

    启动报错如下图所示: 解决方案: 查看网上的资料,大部分都说在实体类中没有添加加主键的注解@Id,这个是必须的.但是我的实体类中明明已经添加了@Id,为什么还会报这个错误呢? 后来检查了很久,发现是我 ...

  9. Spring注解之@Autowired

    前言 说起Spring的@Autowired注解,想必大家已经熟悉的不能再熟悉了.本文就针对此最常用的注解,梳理一下它的功能和原理,争取从源码的角度将此注解讲通,如有写的不准确的地方,欢迎各位园友拍砖 ...

  10. C# WinForm界面美化--使用IrisSkin实现换肤功能

    WinForm界面使用IrisSkin,可以说做到了一键美化,当然美化的效果仁者见仁智者见智,可以挑选自己喜欢的. 1.IrisSkin下载地址:https://www.cr173.com/soft/ ...