问题标签 [etcd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
queue - 您将如何在 etcd 中实现工作队列
我刚刚开始研究etcd,创建者的演讲中提到的一个用例是工作队列系统。
但是您将如何实际实施呢?
基本模式将是这样的。
1个进程生成“工作描述票”,并将该票放在etcd的文件夹中,比如说“/queue/worktickets/00000000001/”
1->许多进程监听“/queue/worktickets/”文件夹以进行更改。当出现新的工单时,每个进程都会尝试通过在“/queue/locks/00000001”中创建一个新值来锁定该工单来获取工单。只有第一个能够创建锁定值。
创建锁票的进程完成了它的工作,然后从队列中删除票,也许还有锁值。然后尝试从队列中获取下一张可用的票。如果没有更多可用的票证,请再次开始监听“/queue/worktickets/”文件夹中的更改。
在我看来,这应该很容易实现,但是如果队列变大(票很容易生成但很难处理),那么似乎会有很多数据从 etcd 传输到每个客户端。据我所知,没有办法说给我这个文件夹中不存在的第一个值,也没有一些给我文件夹中的前 n 个项目。
任何人都愿意分享他们对此的想法。
configuration - Are service discovery tools responsible for providing service credentials as well?
I am trying to understand some basic concepts as I am still new to the concept of service discovery and cloud programming (excuse the cliché). A question that has been in my head for some time is: are service discovery solutions like Consul, etcd & Zookeeper responsible for providing service credentials as well?
For example, if we have a web application which queries information about the location of database server(s), who is responsible for providing it with the credentials (username, password) for connecting to it? I do know that this is probably subjective but I would be glad to learn more about best practices related to that.
go - 如何使用 golang etcd 客户端创建目录节点?
我希望在 json 中有这样的结构:
我可以使用“a”和“x”作为目录并在它们下面有节点来存储数据。我无法在文档或如何完成此操作的示例中找到它。
编辑:我只是通过调用 Set 的 /a/b、/a/c、/x/y 和 /x/z 将它创建为一个目录。这创建了必要的结构,但我正在寻找一个简化版本,也许可以做同样的事情,而不是 4 个 etcd 调用。
docker - docker-swarm and docker-compose how to dynamically add nodes and have them resolvable by the services
I have been playing with docker-compose
and have cobbled together a project from the docker hub website.
One thing that eludes me is how I can scale individual services up (by adding more instances) AND have existing instances somehow made aware of those new instances.
For example, the canonical docker-compose
example comprises a cluster of:
- redis node
- python (flask) node
- haproxy load balancer
I create the cluster and everything works fine, however I attempt to add another node to the cluster:
That worked... But lets see what the haproxy node sees of the cluster (docker-machine
modifies the '/etc/hosts' file)
If I were to restart the entire cluster using docker-compose
that node should have it's /etc/hosts
populated but it now seems to have broken even further:
So in conclusion is there a smarter way to do this (resolution and discovery)? Is there another smarter way rather than just updating the hosts files ? What's the best practice here?
docker - 容器依赖与 etcd 键
我希望容器依赖于 etcd 键。假设我有一个值为“x”的键“key”,如果该键更改为“y”,我想杀死一个特定的容器(它将自动重启,因为它有一个总是重启的单元)。我不确定如何实现这一目标。
这是因为如果某些键发生变化,我需要启动一系列操作来重新启动几个容器(按特定顺序)。
有任何想法吗?
rest - 通过 etcd 中的 curl 获取简化数据
我对 curl/REST 有点陌生,并且看过但找不到对我有意义的东西。
我正在玩 etcd,存储一些键,我可以使用 etcdctl 拉一个返回,这非常方便,因为我打算将这些东西回显到配置文件中;
etcdctl 获取 /dtank/facts/server/IP
10.2.0.91
这是王牌。我现在要做的是通过 curl 获得相同的功能,因为我需要在没有安装 etcdctl 的机器上发出这样的请求。
当我运行以下命令时;
我明白了;
{"action":"get","node":{"key":"/dtank/facts/server/IP","value":"10.2.0.91","modifiedIndex":19,"createdIndex":19 }}
我的问题真的是,我是否需要跳过箍 [grep,sed 等] 来解决这个返回到 IP 地址的问题,这就是我所追求的,或者我可以使用一些技巧来请求这个价值?
非常感谢提前!
docker - etcd2 服务不会在集群上启动
我正在启动一个核心操作系统集群。3 个节点已经启动,可以 curl
访问https://discovery.etcd.io/XYZ,每个节点都可以查看其他节点,YAML 如下所示:
journalctl -u etcd2 -f
两个节点显示:
虽然第三个节点只显示它实际上在做某事:
当我尝试 etcdctl cluster-health时, 两个给出:
第三场展示:
任何想法?运行私有 ETCD2 服务听起来不是一个好主意,因为每个人都可以访问 discovery.etcd.io。
谢谢!
docker - 在启动时管理容器依赖项
我有以下设置:
- PostgreSQL
- 为它飞路
- 应用
我需要以以下方式链接它们:Flyway 等待 DB 启动,App 等待 flyway 完成迁移。
我考虑过使用etcd
向它发布一些密钥,其他容器等待它们。因此,基本上,每个容器的入口点应该如下所示:
我的问题是:
1)我做对了吗?
2)如何在不安装太多额外实用程序的情况下从进程中分离然后重新附加到它(假设我使用busybox / debian作为基础映像)
PS我想到了supervisord,它很接近,但我不知道如何让进程在那里等待(并将它们链接起来)PPS所有设置都旨在由Docker Compose执行。
kubernetes - 在 Kubernetes (etcd) 中发现 Hystrix 端点?
我们正在迁移到 Kubernetes,我们的许多服务都在使用Hystrix ,它公开了由Turbine使用并由Hystrix Dashboard可视化的服务器发送事件数据流。我想为 Turbine 实现一个服务发现插件,它会自动发现我们在 Kubernetes 上运行的 Hystix 流。
- 为此使用标签是个好主意吗?即定义一个标签,其中包括使用 Hystrix 的每个 pod 的 hystrix 流的路径?
- 如果标签不是一个好主意,那会是什么?
ssl - 如何在不提供证书的情况下使用 etcdctl
大家好,
也许是一个非常愚蠢的问题,但我在集群节点之间有一个带有 SSL 的 CoreOS 集群。我已经在我的云配置中设置了舰队和 etcd。
舰队ctl 工作得很好。我不必提供任何证书,但是当我使用 etcdctl 时,我被迫提供这样的证书路径:
有没有一种方法可以配置 etcd2,使得 etcdctl 每次都不需要证书路径,例如:
我的云配置的一部分: