如何降级DigitalOceanDroplet

缩小以最少的停机时间Droplet

介绍

要缩小Droplet的CPU,RAM,磁盘或整体计划,请按照以下步骤操作。

当你创建和使用你的Droplet,你可能会发现,你选择了任何给定的Droplet的计划,这是在你的需要,在这个时候,缩小是适当的。 本指南将帮助您快速完成此操作,并保持您的数据完整。 我们不通过我们的接口提供此功能,因为数据完整性,大小和Droplet之间的身份验证可能很复杂。

先决条件

您希望缩小的一个源Droplet(此处标记为111.111.111.111)

第一步 - 创建一个新的小Droplet

登录到您的DigitalOcean控制面板并创建一个目标Droplet,您需要的较小的大小和区域,您可以从较大的源Droplet传输数据。 您应该确保操作系统保持相同,因为密钥文件,应用程序和资源的位置必须一致,才能使数据在源Droplet和目标Droplet之间正确移动。 如果您以前的Droplet使用了我们的一键式应用程序,也选择该应用程序。 此外,请记住选择SSH密钥或提供更新的root密码。

创建Droplet菜单

对于本指南的其余部分,我们将使用IP地址222.222.222.222来引用此Droplet。

第二步 - 授权你的Droplet

在此步骤中,我们将在222.222.222.222上生成的SSH密钥添加到111.111.111.111的root用户的授权密钥或sudo用户。

登录到您的目标Droplet在222.222.222.222并运行以下命令,生成一个新的SSH密钥。 然后,您可以在111.111.111.111的源Droplet上安装它,以准备数据传输。

ssh-keygen -t rsa

您将被询问一系列问题,在此期间您可以修改保存SSH密钥的文件夹,或提供密码以保护SSH密钥。 Enter在每个问题不使用密码进行,并接受SSH密钥文件的默认位置。

您可能需要密码保护密钥以添加另一层身份验证和安全性,因为这将防止拥有SSH密钥文件的任何人在没有密码的情况下使用它们。 但是,为了每次使用SSH密钥,需要进行身份验证可能很麻烦:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/demo/.ssh/id_rsa.
Your public key has been saved in /home/demo/.ssh/id_rsa.pub.

一旦完成,您可以复制的SSH密钥您111.111.111.111的authorized_keys文件:

ssh-copy-id sammy@111.111.111.111

此命令运行后,您应该会看到以下输出:

The authenticity of host '111.111.111.111 (123.45.57.89)' can't be established.
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '111.111.111.111' (RSA) to the list of known hosts.
user@111.111.111.111's password:
Now try logging into the machine, with "ssh 'user@111.111.111.111'", and check in:

  ~/.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

尝试登录到您的较大的源Droplet一次从较小的目的地Droplet使用SSH确认此工作,而不请求密码。

第三步 - 使用rsync复制文件

rsync是可用于在两个服务器之间复制文件的工具。 在这种情况下,您可以使用它将您的文件从111.111.111.111移动到222.222.222.222。

从222.222.222.222运行此命令,首先使用ssh连接到您的Droplet:

ssh sammy@222.222.222.222

然后继续执行下一个命令。

这是一个长命令,所以确保你已经滚动到所有的方式,并复制了整个事情! 此命令使用归档和详细模式的参数,这些参数保留符号链接,设备,权限和所有权,修改时间,访问控制列表和扩展属性。 您还将看到传输文件的详细列表,其中包括/ var,/ etc等文件夹和您的主文件夹。 此命令排除的内容是您的目标Droplet已包含的临时或特定于Droplet的信息。

sudo rsync -aAXvP --exclude={/boot/,/dev/,/etc/fstab,/etc/modprobe*,/etc/modules/,/lost+found/,/etc/mtab,/etc/network*,/etc/sysconfig/ip*,/etc/sysconfig/kernel,/etc/sysconfig/network*,/lib/modules/,/media/,/mnt/,/proc/,/run/,/sys/,/tmp/,/var/lib/lxcfs/,/var/lock/} root@111.111.111.111:/ /

运行此rsync命令后,您的大源Droplet信息现在应迁移到您的小目标Droplet。 您可能需要浏览目标Droplet,以确保您期望的内容到位,并确认任何应用或网站都能正常运行。

(可选)第四步 - 更改A记录

如果您当前使用DigitalOcean控制面板为您的Droplet设置A记录,此步骤将指导您更改该记录,以适当反映您的新Droplet的222.222.222.222 IP地址。

现在我们需要进入DigitalOcean控制面板。
从左侧导航菜单DNS然后单击以前配置为你的大DropletA记录IP段,并与新的小Droplet的IP地址替换它。 点击*保存 ,你的Droplet现在将连接到您的域名。 这可能需要很短的时间传播,在此期间,你会想要离开你的大Droplet运行。

创建Droplet菜单

一旦你确认你的域解析到新的222.222.222.222 Droplet的IP,并且你的应用程序,数据库或服务正常运行,你可以销毁你的源码111.111.111.111 Droplet。

DigitalOcean不保留IP地址,因此您需要更新用于您的较大Droplet的IP地址的任何引用到您的DNS记录,链接或应用程序中较小的Droplet使用的IP地址。

结论

按照本教程,您已成功将Droplet缩小到适当的大小,将数据移动到新的Droplet,并将您的DNS A记录连接到新的IP。

感谢数字海洋用户社区的Reid为本指南的以前版本。