

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用私有静态在 Amazon EC2 上部署 Cassandra 集群 IPs 以避免重新平衡
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing"></a>

*Dipin Jain，Amazon Web Services*

## Summary
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing-summary"></a>

亚马逊弹性计算云 (Amazon EC2) 实例的私有 IP 将在其整个生命周期中保留。然而，私有 IP 可能会在计划内或计划外的系统崩溃期间发生变化，例如在亚马逊机器映像（AMI）升级期间。在某些情况下，保留私有静态 IP 可以提高工作负载的性能并缩短恢复时间。例如为 Apache Cassandra 种子节点使用静态 IP 可以防止集群产生再平衡开销。 

此模式描述了如何将辅助弹性网络接口连接到 EC2 实例，以便在重新托管期间保持 IP 静态。该模式侧重于 Cassandra 集群，但你可以将此实现用于任何受益于私有静态 IPs的架构。

## 先决条件和限制
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing-prereqs"></a>

**先决条件**
+ 有效 Amazon Web Service (AWS) 账户

**产品版本**
+ DataStax 版本 5.11.1
+ 操作系统：Ubuntu 16.04.6 LTS

## 架构
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing-architecture"></a>

**源架构**

源可以是本地虚拟机 (VM) 上的 Cassandra 集群，也可以是 AWS 云中的 EC2 实例。下图阐明了第二场景。此示例包括 4 个集群节点：3 个种子节点和 1 个管理节点。在源架构中，每个节点都连接有一个网络接口。

![\[四个 Amazon EC2 集群节点，每个节点都连接了一个网络接口。\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/47ca4dbc-0922-4e65-b66c-4db5122fc4ac/images/5d80cfc9-4b72-4c72-aefd-b77cc0fb58e3.png)


**目标架构**

目标集群托管在每个节点上都连接了辅助弹性网络 interface 的 EC2 实例上，如下图所示。

![\[四个 Amazon EC2 集群节点，每个节点都连接了一个辅助弹性网络接口。\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/47ca4dbc-0922-4e65-b66c-4db5122fc4ac/images/d1e22017-f041-426b-9204-31ac158a407d.png)


**自动化和扩展**

您还可以自动将第二个弹性网络接口连接到 A EC2 uto Scaling 群组，如 A [WS 知识中心视频](https://www.youtube.com/watch?v=RmwGYXchb4E)中所述。

## 操作说明
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing-epics"></a>

### 在亚马逊上配置 Cassandra 集群 EC2
<a name="configure-a-cassandra-cluster-on-amazon-ec2"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 启动 EC2 节点以托管 Cassandra 集群。 | 在[亚马逊 EC2 控制台](https://console.aws.amazon.com/ec2/)上，为你的 AWS 账户中的 Ubuntu 节点启动四个 EC2 实例。三个（种子）节点用于 Cassandra 集群，第四个节点用作集群管理节点，您将在其中安装 DataStax 企业版 (DSE) OpsCenter。有关说明，请参阅 [Amazon EC2 文档](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-launch-instance)。 | 云工程师 | 
| 确认节点通信。 | 确保四个节点可通过数据库和集群管理端口相互通信。 | 网络工程师 | 
| 在管理节点 OpsCenter 上安装 DSE。 | 从管理节点上的 Debian 软件包中安装 DSE OpsCenter 6.1。有关说明，请参阅 [DataStax 文档](https://docs.datastax.com/en/opscenter/6.1/opsc/install/opscInstallDeb_t.html)。 | 数据库管理员 | 
| 创建辅助网络接口。 | Cassandra 根据每个节点的 EC2 实例 IP 地址为该节点生成一个通用唯一标识符 (UUID)。此 UUID 用于在环上分发虚拟节点 (vnode)。在 EC2 实例上部署 Cassandra 时，会在创建实例时自动为其分配 IP 地址。 如果发生计划内或计划外停机，则新 EC2 实例的 IP 地址会发生变化，数据分布会发生变化，并且必须重新平衡整个环路。这是不可取的。要保留分配的 IP 地址，请使用具有固定 IP 地址的[辅助弹性网络接口](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#scenarios-enis)。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing.html)有关创建网络接口的更多信息，请参阅 [Amazon EC2 文档](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#create_eni)。 | 云工程师 | 
| 将辅助网络接口连接至集群节点。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing.html)有关连接网络接口的更多信息，请参阅 [Amazon EC2 文档](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#attach_eni)。 | 云工程师 | 
| 在 Amazon 中添加路由 EC2 以解决非对称路由问题。 | 当您连接第二个网络接口时，网络很可能执行非对称路由。为避免这种情况，您可为新的网络接口添加路由。有关非对称路由的深入解释和补救措施，请参阅 [AWS 知识中心视频](https://www.youtube.com/watch?v=RmwGYXchb4E)或[克服多宿主服务器上的非对称路由](http://www.linuxjournal.com/article/7291)（Patrick 在 *Linux 杂志*上发表的文章 McManus，2004 年 4 月 5 日）。 | 网络工程师 | 
| 更新 DNS 条目，以指向辅助网络接口 IP。 | 指定节点的完全限定域名 (FQDN) 指向辅助网络接口的 IP。 | 网络工程师 | 
| 使用 DSE OpsCenter 安装和配置 Cassandra 集群。 | 当集群节点准备好使用辅助网络接口时，您可安装和配置 Cassandra 集群。 | 数据库管理员 | 

### 从节点故障中恢复集群
<a name="recover-cluster-from-node-failure"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 为集群种子节点创建 AMI。 | 对节点进行备份，以便在节点发生故障时可以使用数据库二进制文件恢复它们。有关说明，请参阅 Amazon EC2 文档中的[创建 AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-ami.html)。 | 备份管理员 | 
| 从节点故障中恢复 | 将故障节点替换为从 AMI 启动的新 EC2 实例，并连接故障节点的辅助网络接口。 | 备份管理员 | 
| 验证 Cassandra 集群是否正常运行。 | 替换节点启动后，在 DSE 中验证集群运行状况 OpsCenter。 | 数据库管理员 | 

## 相关的资源
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing-resources"></a>
+ [从 Debian 软件包中安装 DSE OpsCenter 6.1](https://docs.datastax.com/en/opscenter/6.1/opsc/install/opscInstallDeb_t.html)（DataStax 文档）
+ [如何在 Ubuntu EC2 实例中使用辅助网络接口](https://www.youtube.com/watch?v=RmwGYXchb4E)（AWS 知识中心视频）
+ 在@@ [亚马逊上运行 Apache Cassandra 的最佳实践](https://aws.amazon.com/blogs/big-data/best-practices-for-running-apache-cassandra-on-amazon-ec2/)（ EC2AWS 博客文章）