是否可以创建所有链接到 1 个 etcd 集群的不同核心操作系统集群?如果是,如何?
我有一个场景,我需要创建多个集群,但我想保留一个 etcd 集群。目前,我最终将所有实例都放在同一个集群中,甚至 etcd 它自己。如何确保有单独的集群?
我遵循的方法是,每个实例中的 etcd2 服务都有一个 dropin 环境文件(在云配置中),其中包含有关初始集群的详细信息
我们正在编写使用 terraform(在 AWS 上)执行以下操作的代码:
到目前为止,该过程运行良好。
当我们通过 AWS 控制台从该 AMI 启动实例 (2) 时。新启动的实例不使用 cloud-config 文件。
它 (2) 具有通过 cloud-config yaml 文件在实例 (1) 中创建的服务/系统单元。但是这些服务已经死了。如果我们明确地使用它们启动它们,它们工作得很好systemctl
我们如何确保从该 AMI 创建的任何实例都应该在启动时启动这些服务/系统单元,或者应该加载该云配置文件?
(我们也将 cloud-config yaml 保存在机器内部的某个位置,如果我们通过 手动运行 cloud-config 文件coreos-cloudinit --from-file=path/to/file/cloud-config.yaml
,一切正常。但我们希望它在启动时无需任何手动步骤即可工作)
这是我们的云配置文件
#cloud-config
coreos:
etcd2:
# generate a new token for each unique cluster from https://discovery.etcd.io/new?size=3
# specify the initial size of your cluster with ?size=X
discovery: https://discovery.etcd.io/2cb27f1fecb57e14837016e04547aa32
# multi-region and multi-cloud deployments need to use $public_ipv4
advertise-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
initial-advertise-peer-urls: http://127.0.0.1:2380
# listen on both the official ports and the legacy ports
# legacy ports can be omitted if your application doesn't depend on them
listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
listen-peer-urls: http://0.0.0.0:2380,http://0.0.0.0:7001
units:
- name: etcd2.service
command: start
- name: fleet.service
command: start
- name: hello.service
command: start
content: |
[Unit]
Description=hello_docker
After=docker.service
Requires=docker.service
[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker rm busybox1
ExecStartPre=/usr/bin/docker pull busybox
ExecStart=/usr/bin/docker run --rm --name busybox1 busybox /bin/sh -c "while true; do echo Hello Docker; sleep 1; done"
ExecStop=/usr/bin/docker stop busybox1