Skip to content
🎉 Welcome to the new Aptos Docs! Click here to submit feedback!

使用 AWS

这是一个使用亚马逊网络服务 (AWS) 来部署 Aptos 验证节点和验证器全节点 (VFN) 的分步指南。根据这一指南,验证节点和验证器全节点将被部署在两台不同的计算机上。

⚠️

先决条件
在开始之前,请确保阅读并理解节点要求。同样,请确保您已经安装了 Aptos CLITerraformKubernetes CLI, 和 AWS CLI。本指南假设您已经设置了 AWS 账户。

部署步骤

默认连接到主网
如果您按照本文档中的默认设置操作,那么您的验证器和 VFN 将连接到 Aptos 主网。 要连接到不同的 Aptos 网络,如测试网,请确保您下载了您想要连接的网络的正确创世区块和路标文件。同样,您需要修改 Terraform 文件以使用正确的配置(例如,sourceimage_tagchain_id)。

  1. 为您的 Aptos 节点创建一个工作目录,并为您的节点选择一个用户名,例如,

    Terminal
    export WORKSPACE=mainnet
    export USERNAME=alice
    mkdir ~/$WORKSPACE
    cd ~/$WORKSPACE
  2. 在 AWS 上创建一个 S3 存储桶,用于存储 Terraform 状态。您可以在 AWS UI 上执行此操作,或使用以下命令:

    Terminal
    aws s3 mb s3://<bucket name> --region <region name>
  3. 在您的工作目录中创建一个名为 main.tf 的 Terraform 文件:

    Terminal
    cd ~/$WORKSPACE
    vi main.tf
  4. 修改 main.tf 文件以配置 Terraform 并创建 Terraform 模块。请参阅以下示例:

    main.tf
    terraform {
      required_version = "~> 1.3.6"
      backend "s3" {
        bucket = "terraform.aptos-node"
        key    = "state/aptos-node"
        region = <aws region>
      }
    }
     
    provider "aws" {
      region = <aws region>
    }
     
    module "aptos-node" {
      # 从aptos-core仓库下载Terraform模块。
      source        = "github.com/aptos-labs/aptos-core.git//terraform/aptos-node/aws"
      region        = <aws region>  # 指定AWS区域
      # zone_id     = "<Route53 zone id>"  # 如果您想使用DNS,请使用Route53
      era           = 1  # 提高时代编号以清除链数据
      chain_id      = 1  # 对于主网使用1,或对于其他网络使用不同的值。
      image_tag     = "mainnet" # 根据网络指定要使用的镜像标签
      validator_name = "<Name of your validator>" # 指定您的验证器名称
    }

    有关所有自定义选项,请参见:

  5. 在您创建了 main.tf 文件的 $WORKSPACE 目录中初始化 Terraform。

    Terminal
    terraform init

    这将把 Terraform 的所有依赖项下载到当前工作目录中的 .terraform 文件夹中。

  6. 创建一个新的 Terraform 工作区以隔离您的环境,并查看工作区列表。

    Terminal
    terraform workspace new $WORKSPACE
     
    # 此命令将列出所有工作区
    terraform workspace list
  7. 应用 Terraform 配置。

    Terminal
    terraform apply

    这可能需要一段时间才能完成(例如,>20 分钟)。Terraform 将在您的云账户上创建所有资源。

  8. terraform apply 完成后,您可以通过运行以下命令来检查资源是否已正确创建:

    • aws eks update-kubeconfig --name aptos-$WORKSPACE:此命令将为您的 k8s 集群配置访问权限。
    • kubectl get pods:执行此命令会展示出 Kubernetes 集群中所有的 Pod。你将会看到 haproxy、验证节点及验证器全节点(VFN)(由于需要进行后续步骤的操作,验证节点和验证器全节点的 Pod 目前处于 pending 状态)。
    • kubectl get svc:此命令将输出集群中的所有服务。您应该看到 validator-lbfullnode-lb,以及用于网络连接的外部 IP。
  9. 接下来,我们需要将节点的 IP 信息注入到您的环境。您可以通过运行以下命令来执行此操作:

    Terminal
    export VALIDATOR_ADDRESS="$(kubectl get svc ${WORKSPACE}-aptos-node-0-validator-lb --output jsonpath='{.status.loadBalancer.ingress[0].hostname}')"
     
    export FULLNODE_ADDRESS="$(kubectl get svc ${WORKSPACE}-aptos-node-0-fullnode-lb --output jsonpath='{.status.loadBalancer.ingress[0].hostname}')"
  10. 现在,在您的工作目录中为您的节点生成密钥对。您可以通过运行以下命令并使用 Aptos CLI 来执行此操作:

    Terminal
    aptos genesis generate-keys --output-dir ~/$WORKSPACE/keys

    这将在 ~/$WORKSPACE/keys 目录下创建 4 个密钥文件:

    • public-keys.yaml:此文件包含您的验证器和 VFN 的所有公钥,以及您的账户地址。
    • private-keys.yaml:此文件包含您的验证器和 VFN 的所有私钥。
    • validator-identity.yaml:此文件包含验证器的公钥和私钥,以及您的账户地址。
    • validator-full-node-identity.yaml:此文件包含 VFN 的公钥和私钥,以及您的账户地址。
    ⚠️

    备份您的私钥
    私钥是确认你对节点所有权的关键。切记,绝对不要向他人透露你的私钥,并且务必将 private-keys.yaml 文件备份在安全的地方。

  11. 接下来,您需要设置验证器的配置。这包括设置验证器和 VFN 的主机名,这些可能是 IP 地址或 DNS 地址。您可以通过运行以下命令来完成此操作:

    Terminal
    aptos genesis set-validator-configuration \
      --local-repository-dir ~/$WORKSPACE \
      --username $USERNAME \
      --owner-public-identity-file ~/$WORKSPACE/keys/public-keys.yaml \
      --validator-host $VALIDATOR_ADDRESS:6180 \
      --full-node-host $FULLNODE_ADDRESS:6182 \
      --stake-amount 100000000000000

    配置验证器将在 ~/$WORKSPACE/$USERNAME 目录中创建两个 YAML 文件:owner.yamloperator.yaml。这些将有助于(稍后)将您的节点连接到 Aptos 网络。

  12. 按照查找节点文件页面上的说明下载以下文件。 您需要选择适当的网络(例如,mainnettestnetdevnet)并下载以下文件:

    • genesis.blob
    • waypoint.txt
  13. 总之,在您的工作目录(~/$WORKSPACE)中,您应该有以下文件列表:

    • main.tf:安装 aptos-node 模块的 Terraform 文件。
    • 包含以下内容的 keys 文件夹:
      • public-keys.yaml:两个节点的公钥。
      • private-keys.yaml:两个节点的私钥。
      • validator-identity.yaml:验证器的密钥和账户信息。
      • validator-full-node-identity.yaml:VFN 的密钥和账户信息。
    • 包含以下内容的 $username 文件夹:
      • owner.yaml:所有者、运营者和投票者映射。
      • operator.yaml:验证器和 VFN 运营者信息。
    • waypoint.txt:您正在连接的网络上创世区块交易的路标文件。
    • genesis.blob:你正在连接的网络的创世区块(genesis blob)。
  14. 最后,通过运行以下命令,将 genesis.blobwaypoint.txt 和身份文件作为密钥插入到 k8s 集群中:

    Terminal
    kubectl create secret generic ${WORKSPACE}-aptos-node-0-genesis-e1 \
        --from-file=genesis.blob=genesis.blob \
        --from-file=waypoint.txt=waypoint.txt \
        --from-file=validator-identity.yaml=keys/validator-identity.yaml \
        --from-file=validator-full-node-identity.yaml=keys/validator-full-node-identity.yaml
    ⚠️

    era 编号和 dangling 卷
    上面命令中的 -e1 后缀代表 era 编号。如果你修改了 ear 编号,在创建密钥时务必保证它们相匹配。

    在 Aptos 节点的 Kubernetes 部署过程中,era 是一个特定的概念。更换 era 可以轻松地重置你的部署状态,比如清空区块链数据。但是,这个操作可能会留下 dabgling 的持久化数据卷。通过运行 kubectl get pvc 来检查是否有 dangling 数据卷,并手动删除它们来降低成本。

  15. 现在,我们应该能够看到所有 pod 都在运行,包括验证器和 VFN。您可以通过执行以下命令来检查这一点:

    Terminal
    kubectl get pods
     
    # 示例输出
    NAME                                        READY   STATUS    RESTARTS   AGE
    node1-aptos-node-0-fullnode-e9-0              1/1     Running   0          4h31m
    node1-aptos-node-0-haproxy-7cc4c5f74c-l4l6n   1/1     Running   0          4h40m
    node1-aptos-node-0-validator-0                1/1     Running   0          4h30m
⚠️

下一步
您现在已经使用 AWS 完成了验证器和 VFN 的设置。然而,您的节点还不能连接到 Aptos 网络。

连接到 Aptos 网络

您现在已经使用 AWS 完成了验证器和 VFN 的设置。请继续进行连接节点的操作。