Ethereum 解决方案模板旨在简化多成员联盟区块链网络的部署流程,即使您对 Azure 和 Ethereum 的了解有限,也能快速上手。通过 Azure Stack Hub 租户门户的一键式部署,每个成员都可以轻松配置自己的网络节点。
网络架构概述
每个成员部署的网络包含三个核心部分:
- 事务节点:一组负载均衡的节点,供应用程序或用户提交交易
- 挖掘节点:负责记录和验证交易的节点
- 网络虚拟设备 (NVA):用于网络连接和安全的关键组件
后续的连接步骤会将各个成员的 NVA 互联,最终形成完整的多成员区块链网络。
部署前需要选择适合的架构方案:
- 独立网络部署
- 联盟领导者网络部署
- 联盟成员网络部署
部署前的准备工作
在开始部署之前,请确保已从市场下载以下必需项目:
- Ubuntu Server 16.04 LTS
- Windows Server 2016
- 适用于 Linux 的自定义脚本 2.0 扩展
- 适用于 Windows 的自定义脚本扩展
部署架构详解
该解决方案模板支持单成员和多成员 Ethereum 联盟网络的部署,通过网络虚拟设备和连接资源在链式拓扑中连接虚拟网络。
经测试的部署环境包括:
- 在多节点 Azure Stack Hub 上(使用 Microsoft Entra ID 或 AD FS),使用相同或不同订阅部署领导者和成员
- 在单节点 Azure Stack Hub 上(使用 Microsoft Entra ID),使用相同订阅部署领导者和成员
独立网络与联盟领导者部署
联盟领导者模板用于配置网络中第一个成员的节点架构。
部署步骤
- 从 GitHub 下载领导者模板文件
- 在 Azure Stack Hub 租户门户中,选择"创建资源" > "模板部署"
- 选择"在编辑器中生成自己的模板"
- 在编辑窗格中粘贴下载的领导者模板 JSON 内容
- 选择保存模板
基本参数配置
在"基本信息"选项卡中,需要完成以下关键设置:
核心配置参数
- 订阅:选择部署联盟网络的订阅
- 资源组:指定部署资源的组
- 区域:选择资源所在的 Azure 区域
- 名称前缀:用作资源命名基础(最多6个字母数字字符)
安全认证设置
- 身份验证类型:选择"密码"或"SSH 公钥"
- 管理员用户名:所有 VM 的管理员账号(1-64字符)
- 管理员密码:符合复杂度要求的密码(12-72字符)
- SSH 公钥:如选择 SSH 认证,需提供公钥字符串
区块链网络配置
- Ethereum 账户密码:保护 Ethereum 账户的管理员密码
- Ethereum 账户通行短语:生成私钥的强密码短语
- 网络 ID:联盟网络的标识(5-999,999,999之间的值)
- 联盟成员 ID:网络中唯一的成员标识
- 挖掘节点数量:每个成员的挖掘节点数(2-15)
- 事务节点数量:负载均衡事务节点数(1-5)
完成配置后,选择"查看 + 创建",验证通过后开始部署。部署过程通常需要20分钟或更长时间。
部署完成后,在资源组的部署部分查看 Microsoft.Template 的部署摘要,其中包含用于加入联盟成员的输出值。可通过管理站点地址验证领导者部署状态。
联盟成员加入部署
成员部署流程
- 从 GitHub 下载联盟成员模板
- 在门户中选择"创建资源" > "模板部署"
- 选择"在编辑器中生成自己的模板"
- 粘贴成员模板 JSON 内容
- 保存模板配置
成员特定参数
除了与领导者部署相同的参数外,成员部署还需要以下额外配置:
联盟连接信息
- 联盟数据:指向领导者部署提供的配置数据 URL
- 远程成员 VNET 地址空间:领导者的 VNET 地址空间
- 远程成员 NVA 公共 IP:领导者的 NVA IP 地址
- 连接共享密钥:成员间预先建立的网关连接机密
配置完成后启动部署,同样需要约20分钟时间。部署完成后,可在部署摘要中查看连接输出值。
初始状态下,成员节点的状态显示为"未运行",这是因为与领导者之间的双向连接尚未完全建立。成员部署时会自动创建到领导者的连接,但还需要创建领导者到成员的连接。
建立领导者与成员的连接
此步骤创建从领导者到远程成员的完整连接。
连接部署步骤
- 从 GitHub 下载连接模板
- 在门户中创建模板部署
- 选择编辑自定义模板
- 粘贴连接模板 JSON
- 完成连接参数配置
连接参数配置
必要的连接信息
- 成员名称前缀:成员资源的命名基础
- 成员路由表名称:领导者路由表的名称
- 远程成员 VNET 地址空间:成员的地址空间信息
- 远程成员 NVA 公共 IP:要连接的 NVA IP 地址
- 连接共享密钥:成员间预先建立的连接机密
- 成员 NVA 专用 IP:成员的 NVA IP 地址
部署完成后,需要等待几分钟让领导者和成员开始正常通信。刷新成员的管理站点,确认节点状态变为"正在运行"表示连接成功。
常见问题
部署需要多长时间?
完整的部署过程通常需要20分钟或更长时间,具体取决于网络配置和节点数量。连接建立后还需要几分钟进行节点间通信初始化。
如何验证部署是否成功?
部署完成后,可以通过查看资源组中的部署摘要来验证状态。领导者和成员都有各自的管理站点,可通过部署输出部分提供的地址访问,确认节点状态为"正在运行"。
联盟成员ID有什么要求?
联盟成员ID必须在整个网络中保持唯一,用于标识每个成员节点。建议提前规划好ID分配方案,避免冲突。
遇到部署失败怎么办?
首先检查所有必填参数是否正确配置,特别是网络连接相关的参数。确保所有市场项都已正确下载,订阅有足够的资源配额。
可以后期添加更多成员吗?
是的,该架构支持灵活扩展。只需按照成员部署流程添加新成员,然后建立与现有网络的连接即可。
如何确保网络安全?
使用强密码和SSH密钥认证,定期更新连接共享密钥,并按照最佳实践配置网络安全组规则,限制不必要的网络访问。
后续发展与优化
部署完成后,您可以进一步探索区块链技术的更多应用场景和优化方案。持续监控网络性能,根据业务需求调整节点配置,确保区块链网络的稳定运行和高效处理能力。
通过 Azure Stack Hub 上的 Ethereum 解决方案,企业能够快速搭建私有区块链网络,为各种去中心化应用提供可靠的基础设施支持。