我们对ETCD的预期工作量: 约20位客户 每个客户约15 IOPS。 〜40B键大小 〜512B值大小
由于这是一个很小的工作量,并且由于在非常紧凑的有限资源系统上工作,我们需要对每个etcd节点施加一些约束: * 1G的RAM * 50%的超线程代码
我已阅读以下资源:
https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/hardware.md https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/performance.md
并了解对磁盘,cpu,网络,内存等的限制...
现在我有2种可能性: 1)将节点的子集作为etcd成员运行,其余部分作为网关。这种方法的问题是,当运行成员的节点发生故障时,我需要“切换”其中一个网关以“成员”身份运行,以便始终保持仲裁。此过程必须自动化,而无需用户干预。
2)部署所有节点(最多16个)以运行etcd成员。 此部署符合建议的etcd群集大小,但我希望它可以节省我们处理网关和成员以及一旦单个成员死亡时进行故障转移的时间。
您是否知道会导致我们部署此类集群的性能问题,例如缺少保持活动状态,错误的选择,增加的响应延迟等...
您知道一个以自动化方式将网关故障转移到成员的项目吗?