安装etcd单机版

更新时间:
复制 MD 格式

资源编排服务ROS(Resource Orchestration Service)支持通过公共模板,在已有专有网络VPC的基础上一键创建ECS实例并自动安装etcd,快速搭建单机版分布式键值存储服务。

方案概述

本方案使用阿里云资源编排服务ROS的公共模板,在已有VPC网络的基础上一键创建ECS实例并自动安装etcd,快速搭建分布式键值存储服务,适用于服务发现、配置管理、分布式锁、Kubernetes集群元数据存储等场景。

什么是etcd

etcd是一个开源的分布式键值对存储系统,由CoreOS团队开发,使用Go语言编写。它通过Raft共识算法实现数据一致性,广泛用于分布式系统中保存关键数据,核心特性如下。

核心特性

说明

键值存储

提供简单的Key-Value数据模型,支持目录层级结构。

强一致性

基于Raft共识算法,保证分布式环境下数据的强一致性。

Watch机制

支持对Key的变化进行监听,实现实时配置推送和服务发现。

分布式锁

通过Leader选举和写屏障(write barriers)实现可靠的分布式协作。

HTTP/gRPC API

提供RESTful HTTP API和gRPC接口,客户端接入便捷。

本方案的特点:基于已有VPC部署

本模板要求使用已有的VPC、交换机和安全组,不会新建网络资源。这种设计适用于:

  • 已有标准化网络环境,需要在现有VPC中添加etcd服务。

  • 多个项目共享一个VPC,避免重复创建网络资源。

创建的资源清单

序号

资源名称

ROS资源类型

用途说明

1

ECS云服务器实例

ALIYUN::ECS::Instance

运行etcd服务的计算节点(带公网IP)。

部署完成后获得的结果

模板成功执行后,将获得:

  • 一台ECS云服务器实例(CentOS 7操作系统,已分配公网IP)。

  • ECS实例上已安装并运行的etcd服务。

  • 资源栈输出中的EtcdServerConnectionAddress(etcd连接地址)。

  • 可通过远程连接登录ECS实例后使用etcdctl命令管理etcd服务。

架构图

image

前提条件

在使用本模板前,请确认以下条件:

  1. 账号权限:阿里云账号需要具有ECS、VPC产品的创建权限。

  2. 已有网络资源:需提前创建好VPC、交换机和安全组。如何创建请参见创建和管理专有网络。

部署环节

部署参数

本模板要求使用已有VPC网络资源,以下参数均需在部署时填写。

参数

类型

说明

示例

交换机可用区

String

专有网络下的交换机可用区ID。

华北1可用区C

现有VPC的实例ID

String

VPC实例ID。关于如何创建和查询VPC实例,请参见创建和管理专有网络。

vpc-bp1m6fww66xbntjyc****

网络交换机ID

String

专有网络下的交换机ID。关于如何创建和查询交换机,请参见创建和管理交换机。

vsw-bp183p93qs667muql****

业务安全组ID

String

ECS安全组ID。关于如何查询安全组ID,请参见查询安全组。

sg-bp15ed6xe1yxeycg7o****

实例规格

String

ECS实例规格,etcd对CPU、内存要求不高,1核2 GB即可满足基本需求。

ecs.c5.large

系统盘类型

String

取值:

  • cloud_efficiency:高效云盘。

  • cloud_ssd:SSD云盘。

  • cloud_essd:ESSD云盘。

  • cloud:普通云盘。

  • ephemeral_ssd:本地SSD盘。

更多信息,请参见云盘概述。

cloud_efficiency

系统盘空间

Number

系统盘大小。

取值范围:20~500。

单位:GB。

40

实例密码

String

ECS实例密码。长度8~30位,需同时包含大写字母、小写字母、数字和特殊字符。

Test_12****

部署方式

方式一:通过ROS公共模板部署(推荐)

  1. 登录资源编排控制台。

  2. 在左侧导航栏,选择模板 > 公共模板。

  3. 在入门模板页签的搜索框中输入etcd,找到模板Etcd单机版(已有VPC)。

  4. 单击创建资源栈。

  5. 在配置参数页面,输入资源栈名称,并按「部署参数」中的说明设置各项参数。

  6. 单击下一步:检查并确认,然后单击创建。

  7. 在左侧导航栏,选择资源栈,在资源栈列表页面单击目标资源栈ID,在资源栈信息页签查看资源栈状态,等待状态变为CREATE_COMPLETE。

  8. 单击输出页签,获取EtcdServerConnectionAddress。EtcdServerConnectionAddress为etcd服务的客户端连接地址(格式为<ECS 私网IP>:2379)。

方式二:通过ROS IaC Code部署

IaC Code 是面向云基础设施的 AI 基础设施即代码助手,可根据自然语言描述生成 ROS 模板并部署,使用方式参见IaC Code快速入门。

帮我在已有VPC中创建一台ECS并部署etcd单机版键值存储服务。
要求:
1. 使用已有的VPC、VSwitch和安全组(不新建网络资源)。
2. ECS使用CentOS 7镜像,分配公网IP。
3. 通过UserData脚本自动安装etcd。
4. 配置etcd监听在0.0.0.0:2379(客户端端口)和0.0.0.0:2380(对等端口)。
5. 安全组开放入方向2379端口(etcd客户端)和22端口(SSH)。
6. 资源栈输出etcd连接地址(EtcdServerConnectionAddress)。

部署后操作

验证etcd环境

连接ECS实例后,使用etcdctl命令验证etcd服务:

# 查看etcd版本
etcdctl --version

# 查看集群成员列表
etcdctl member list

常见问题

部署失败,报错“The specified InstanceType is not available”

原因:所选ECS实例规格在指定可用区中没有库存。

解决方案:

  • 更换交换机所在的可用区后重新部署。

  • 在云服务器ECS定价确认目标可用区的可用规格。

  • etcd对CPU、内存要求不高,1核2 GB规格即可满足开发测试需求。

部署成功但etcdctl命令报错连接失败

排查步骤:

  1. 登录ECS实例,检查etcd进程。

    ps -ef | grep etcd
    systemctl status etcd
  2. 检查端口监听。

    netstat -tlnp | grep 2379    # etcd客户端端口
    netstat -tlnp | grep 2380    # etcd对等端口
  3. 检查连接地址:确认使用的连接地址与资源栈输出中的EtcdServerConnectionAddress一致。

  4. 查看etcd日志:journalctl -u etcd -n 50。

如何从外部应用连接etcd

  1. 安全组配置:确认安全组入方向规则已放行TCP 2379端口。

  2. 使用ECS公网IP:外部应用使用http://<ECS公网IP>:2379作为etcd连接地址。

说明

生产环境建议:通过VPC内网连接(http://<ECS内网IP>:2379),避免将etcd直接暴露到公网。

想要了解更多资源部署问题,可以查询常见问题合集。

相关文档