AWS EC2 - 如何在不更改现有 public IP 的情况下升级实例?
AWS EC2 - How to upgrade instance without changing existing public IP?
是否可以在不更改现有 public IP 地址的情况下升级 EC2 实例?我的移动应用程序是实时的,不幸的是我们没有在网络服务中使用弹性 IP。因此,如果我升级当前实例,它将生成新的 public IP,旧应用程序用户将无法使用移动应用程序。
有什么方法可以保持当前IP不变吗?或者在不失去现有用户的情况下以任何其他方式升级它?请建议。
这取决于您使用的是哪种软件运行
如果您有一个无会话的应用程序,那么在不同的 IP 上启动另一台服务器然后使用 route53 切换流量会很简单,两台服务器同时 运行
如果应用程序是有状态的,并且如果它在主机本地存储会话,那么问题就更大了
一种可能的方法是将弹性 ip 绑定到 运行 主机,重新配置您的软件以侦听所有地址(许多配置控件允许地址为 0.0.0.0)然后更改 DNS并逐渐看到流量迁移到弹性IP,同时两个地址都有效
一旦新地址被完全使用(取决于您的 TTL),通过重新分配 EIP 切换到新主机会变得更加容易
将此视为一个教训,了解为什么您应该使用负载平衡器和 DNS 条目,尤其是对于任何面向 public 的内容。如果实例失败,您打算怎么办?或者可用区宕机了?
就我个人而言,我会在负载均衡器后面启动一组新的更大的实例,创建一个指向负载均衡器的 Route53 DNS 条目,然后向指向该 DNS 条目的客户端发布更新。随着客户端更新,流量将逐渐转移到负载均衡器。尺寸过小的单例负载会下降,所以如果超载最终会return恢复正常。最终,您可以在 all/most 客户端升级后终止旧实例。
是否可以在不更改现有 public IP 地址的情况下升级 EC2 实例?我的移动应用程序是实时的,不幸的是我们没有在网络服务中使用弹性 IP。因此,如果我升级当前实例,它将生成新的 public IP,旧应用程序用户将无法使用移动应用程序。 有什么方法可以保持当前IP不变吗?或者在不失去现有用户的情况下以任何其他方式升级它?请建议。
这取决于您使用的是哪种软件运行
如果您有一个无会话的应用程序,那么在不同的 IP 上启动另一台服务器然后使用 route53 切换流量会很简单,两台服务器同时 运行
如果应用程序是有状态的,并且如果它在主机本地存储会话,那么问题就更大了
一种可能的方法是将弹性 ip 绑定到 运行 主机,重新配置您的软件以侦听所有地址(许多配置控件允许地址为 0.0.0.0)然后更改 DNS并逐渐看到流量迁移到弹性IP,同时两个地址都有效
一旦新地址被完全使用(取决于您的 TTL),通过重新分配 EIP 切换到新主机会变得更加容易
将此视为一个教训,了解为什么您应该使用负载平衡器和 DNS 条目,尤其是对于任何面向 public 的内容。如果实例失败,您打算怎么办?或者可用区宕机了?
就我个人而言,我会在负载均衡器后面启动一组新的更大的实例,创建一个指向负载均衡器的 Route53 DNS 条目,然后向指向该 DNS 条目的客户端发布更新。随着客户端更新,流量将逐渐转移到负载均衡器。尺寸过小的单例负载会下降,所以如果超载最终会return恢复正常。最终,您可以在 all/most 客户端升级后终止旧实例。