如何更改云配置以指定特定版本的 etcd
How to change the cloud-config to specify a specific version of etcd
我正在使用 core-os 并使用云配置文件对其进行配置。我需要为我的应用程序使用 etcd 服务。
这是云配置文件的相关部分。
- name: etcd.service
command: start
content: |
[Unit]
Description=etcd
Requires=setup-network-environment.service
After=setup-network-environment.service
[Service]
EnvironmentFile=/etc/network-environment
User=etcd
PermissionsStartOnly=true
ExecStart=/usr/bin/etcd \
--name ${DEFAULT_IPV4} \
--addr ${DEFAULT_IPV4}:4001 \
--bind-addr 0.0.0.0 \
--discovery https://discovery.etcd.io/SOMEKEY \
--data-dir /var/lib/etcd \
--http-read-timeout 86400 \
--peer-addr ${DEFAULT_IPV4}:7001 \
--snapshot true
Restart=always
RestartSec=10s
我不知道如何更新etcd的版本。
我有一个模板生成器,我可以通过设置一个环境变量告诉它在 etcd 和 etcd2 之间切换。我做的一件事是使用 etcd2.service 名称或 etcd.service(我不只是将 etcd2 配置放在 etcd 单元部分)。这可行,但是,您可能会考虑将文件中的所有 etcd.service 引用更改为 etcd2.service。无论如何,这是 etcd2 的 ExecStart 部分:
ExecStart=/usr/bin/etcd2 \
--name ${d['etcd']['name']} \
--advertise-client-urls ${d['etcd']['advertise-client-urls']} \
--discovery ${d['etcd']['discovery']} \
--data-dir /var/lib/etcd \
--initial-advertise-peer-urls ${d['etcd']['initial-advertise-peer-urls']} \
--listen-client-urls ${d['etcd']['listen-client-urls']} \
--listen-peer-urls ${d['etcd']['listen-peer-urls']}
这是我的环境变量 d['etcd']:
"etcd": {
"mver":"etcd2.service",
"discovery":"http://discovery.etcd.io/SOMEKEY",
"addr":"$private_ipv4:4001",
"name":"$private_ipv4",
"peer-addr":"$private_ipv4:7001",
"advertise-client-urls":"http://$private_ipv4:2379",
"initial-advertise-peer-urls":"http://$private_ipv4:2380",
"listen-client-urls":"http://0.0.0.0:2379,http://0.0.0.0:4001",
"listen-peer-urls":"http://$private_ipv4:2380,http://$private_ipv4:7001"
}
我记得在某处读到这些变量之一需要 $public_ipv4,我只是为所有这些变量使用了私有 ip。我这里的环境是数字海洋。请务必使用 coreos-alpha(至少我认为在撰写本文时仍然需要)。
原来 etcd2 已经安装在 coreos 上了。它目前与 etcd 一起发布在 coreos-alpha 653 版本中。
要在云配置中更改它,您只需更改
ExecStart=/usr/bin/etcd
至
ExecStart=/usr/bin/etcd2
并删除一些在 etcd2 中弃用的标志。
云配置解析器内置了对 etcd2 和新配置参数的支持:https://coreos.com/docs/cluster-management/setup/cloudinit-cloud-config/#etcd2
一个例子:
#cloud-config
coreos:
etcd2:
# generate a new token for each unique cluster from https://discovery.etcd.io/new?size=3
discovery: https://discovery.etcd.io/<token>
# multi-region and multi-cloud deployments need to use $public_ipv4
advertise-client-urls: http://$public_ipv4:2379
initial-advertise-peer-urls: http://$private_ipv4: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://$private_ipv4:2380,http://$private_ipv4:7001
我正在使用 core-os 并使用云配置文件对其进行配置。我需要为我的应用程序使用 etcd 服务。
这是云配置文件的相关部分。
- name: etcd.service
command: start
content: |
[Unit]
Description=etcd
Requires=setup-network-environment.service
After=setup-network-environment.service
[Service]
EnvironmentFile=/etc/network-environment
User=etcd
PermissionsStartOnly=true
ExecStart=/usr/bin/etcd \
--name ${DEFAULT_IPV4} \
--addr ${DEFAULT_IPV4}:4001 \
--bind-addr 0.0.0.0 \
--discovery https://discovery.etcd.io/SOMEKEY \
--data-dir /var/lib/etcd \
--http-read-timeout 86400 \
--peer-addr ${DEFAULT_IPV4}:7001 \
--snapshot true
Restart=always
RestartSec=10s
我不知道如何更新etcd的版本。
我有一个模板生成器,我可以通过设置一个环境变量告诉它在 etcd 和 etcd2 之间切换。我做的一件事是使用 etcd2.service 名称或 etcd.service(我不只是将 etcd2 配置放在 etcd 单元部分)。这可行,但是,您可能会考虑将文件中的所有 etcd.service 引用更改为 etcd2.service。无论如何,这是 etcd2 的 ExecStart 部分:
ExecStart=/usr/bin/etcd2 \
--name ${d['etcd']['name']} \
--advertise-client-urls ${d['etcd']['advertise-client-urls']} \
--discovery ${d['etcd']['discovery']} \
--data-dir /var/lib/etcd \
--initial-advertise-peer-urls ${d['etcd']['initial-advertise-peer-urls']} \
--listen-client-urls ${d['etcd']['listen-client-urls']} \
--listen-peer-urls ${d['etcd']['listen-peer-urls']}
这是我的环境变量 d['etcd']:
"etcd": {
"mver":"etcd2.service",
"discovery":"http://discovery.etcd.io/SOMEKEY",
"addr":"$private_ipv4:4001",
"name":"$private_ipv4",
"peer-addr":"$private_ipv4:7001",
"advertise-client-urls":"http://$private_ipv4:2379",
"initial-advertise-peer-urls":"http://$private_ipv4:2380",
"listen-client-urls":"http://0.0.0.0:2379,http://0.0.0.0:4001",
"listen-peer-urls":"http://$private_ipv4:2380,http://$private_ipv4:7001"
}
我记得在某处读到这些变量之一需要 $public_ipv4,我只是为所有这些变量使用了私有 ip。我这里的环境是数字海洋。请务必使用 coreos-alpha(至少我认为在撰写本文时仍然需要)。
原来 etcd2 已经安装在 coreos 上了。它目前与 etcd 一起发布在 coreos-alpha 653 版本中。 要在云配置中更改它,您只需更改
ExecStart=/usr/bin/etcd
至
ExecStart=/usr/bin/etcd2
并删除一些在 etcd2 中弃用的标志。
云配置解析器内置了对 etcd2 和新配置参数的支持:https://coreos.com/docs/cluster-management/setup/cloudinit-cloud-config/#etcd2
一个例子:
#cloud-config
coreos:
etcd2:
# generate a new token for each unique cluster from https://discovery.etcd.io/new?size=3
discovery: https://discovery.etcd.io/<token>
# multi-region and multi-cloud deployments need to use $public_ipv4
advertise-client-urls: http://$public_ipv4:2379
initial-advertise-peer-urls: http://$private_ipv4: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://$private_ipv4:2380,http://$private_ipv4:7001