ETCD:etcd网关
原文地址: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文件的路径。 用于认证端点。
- 默认值:未设置
原文地址:https://www.cnblogs.com/cbkj-xd/p/11934606.html
- Numpy教程第2部分 - 数据分析的重要功能
- 最小表示法(个人模版)
- 基于Python-ChatterBot搭建不同adapter的聊天机器人(使用NB进行场景分类)
- 并查集(个人模版)
- Markdown 语法和 MWeb 写作使用说明既然都整理了,捎带手把这个也整理了吧第一级标题<h1>
- 带权并查集(个人模版)
- 我的第一次Pascal程序
- Hive第二天学习内容总结Hive 第三天DDL特别注意一下,没事别删除数据DML
- Codeforces 791B Bear and Friendship Condition(DFS,有向图)
- Codeforces 791A Bear and Big Brother(暴力枚举,模拟)
- Selenium2+python自动化28-table定位
- POJ 2370 Democracy in danger(简单贪心)
- POJ 2209 The King(简单贪心)
- 使用 Vagrant 打造跨平台开发环境
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android 中LayoutInflater.inflate()方法的介绍
- Android ListView实现简单列表功能
- Ubuntu16.04上安装CUDA9.0 详细教程
- Android使用LinearLayout设置边框
- Android编程实现状态保存的方法分析
- Android中TextView和ImageView实现倾斜效果
- Notification消息通知 自定义消息通知内容布局
- Android编程实现带渐变效果的圆角矩形示例
- Android仿苹果关机界面实现代码
- Android使用RecycleView实现拖拽交换item位置
- Android编程之计时器Chronometer简单示例
- Android OnFocuChangeListener焦点事件详解
- Android自定义加载圈动画效果
- Android 中ImageView的ScaleType使用方法
- ViewPager实现漂亮的引导页