资源编排服务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云服务器实例 |
| 运行etcd服务的计算节点(带公网IP)。 |
部署完成后获得的结果
模板成功执行后,将获得:
一台ECS云服务器实例(CentOS 7操作系统,已分配公网IP)。
ECS实例上已安装并运行的etcd服务。
资源栈输出中的
EtcdServerConnectionAddress(etcd连接地址)。可通过远程连接登录ECS实例后使用
etcdctl命令管理etcd服务。
架构图

前提条件
在使用本模板前,请确认以下条件:
账号权限:阿里云账号需要具有ECS、VPC产品的创建权限。
已有网络资源:需提前创建好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 |
系统盘空间 | Number | 系统盘大小。 取值范围:20~500。 单位:GB。 | 40 |
实例密码 | String | ECS实例密码。长度8~30位,需同时包含大写字母、小写字母、数字和特殊字符。 | Test_12**** |
部署方式
方式一:通过ROS公共模板部署(推荐)
登录资源编排控制台。
在左侧导航栏,选择。
在入门模板页签的搜索框中输入etcd,找到模板Etcd单机版(已有VPC)。
单击创建资源栈。
在配置参数页面,输入资源栈名称,并按「部署参数」中的说明设置各项参数。
单击下一步:检查并确认,然后单击创建。
在左侧导航栏,选择,在资源栈列表页面单击目标资源栈ID,在资源栈信息页签查看资源栈状态,等待状态变为
CREATE_COMPLETE。单击输出页签,获取
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命令报错连接失败
排查步骤:
登录ECS实例,检查etcd进程。
ps -ef | grep etcd systemctl status etcd检查端口监听。
netstat -tlnp | grep 2379 # etcd客户端端口 netstat -tlnp | grep 2380 # etcd对等端口检查连接地址:确认使用的连接地址与资源栈输出中的
EtcdServerConnectionAddress一致。查看etcd日志:
journalctl -u etcd -n 50。
如何从外部应用连接etcd
安全组配置:确认安全组入方向规则已放行TCP 2379端口。
使用ECS公网IP:外部应用使用
http://<ECS公网IP>:2379作为etcd连接地址。
生产环境建议:通过VPC内网连接(http://<ECS内网IP>:2379),避免将etcd直接暴露到公网。
想要了解更多资源部署问题,可以查询常见问题合集。
相关文档
ROS模板快速入门:了解ROS模板的结构与编写方法。
ALIYUN::ECS::Instance:查看本方案所创建资源的完整属性定义。
添加安全组规则:为etcd客户端端口放行入方向访问。
etcd官方文档:了解etcd的完整能力与运维实践。
etcdctl命令参考:查询etcd命令行工具的用法。