null (五)Amazon Lightsail 部署LAMP应用程序之迁移到Amazon RDS实例 - K码农

迁移到您的Amazon RDS实例

在某些时候,您的应用程序需求可能需要在 Amazon Lightsail中找不到的功能。幸运的是,将应用程序的一个或所有部分移动到其他AWS服务中非常简单
您将数据库组件从 Amazon Lightsail迁移到 Amazon RDS
要迁移数据库,您需要:

①将Amazon Lightsail VPC的IP地址范围(无类別域间路由或CIDR,范围)添加到Amazon RDS安全组
②在Amazon Lightsail中启用VPC
③将您的数据从 Amazon Lightsail数据库迁移到 Amazon RDSA数据库
此过程将为前端在 Amazon Lightsail 实例上运行的体系结构,但该数据现在由 Amazon RDS管理

在这里插入图片描述

一、修改您的Amazon RDS安全组

1、修改您的Amazon RDS安全组:
将数据库组件迁移到 Amazon RDSE的第一步是确保允许来自 Amazon Lightsail VPC 的流量到达Amazon RDS。通过将 Amazon Lightsail VPC的IP地址范围(172.26.0.0/16)现有 Amazon RDS安全组来完成此步骤。

2、进入Amazon RDS数据库界面:
https://console.aws.amazon.com/rds/home#databases:

请确保您在之前部署实验室资源的同一区域中操作

3、从数据库列表中,单击 “task-db”,请确保其状态为 “可用(Available)”,否则以下操作均无效
在这里插入图片描述
4、在“连接和安全”的选项卡上,单击您的 “VPC安全组”
在这里插入图片描述
5、单击“入站选项卡”:
6、单击“编辑”
在这里插入图片描述
7、单击“添加规则”,然后进行配置
示例:
①键入:MYSQL/Aurora
②来源:定制:172.26.0.0/16
在这里插入图片描述
8、单击 “保存”

二、启用VPC对等

下一步是确保 Lightsail VPC可以与您的默认 AWS VPC进行通信。默认情况下,AWS中的服务无法访问在 Amazon Lightsail中运行的服务(反之亦然)。但是,可以通过使用称为VPC对等的功能来解決这种情況。VPC对等使某些AWS服务可以与 Amazon lightsail资源进行通信(在这种情况下, Amazon RDS数据库将与在Amazon Lightsail实例上运行的Web前端进行通信)。

1、进入Amazon Lightsail账户设置界面:
https://lightsail.aws.amazon.com/ls/webapp/account/profile

2、从水平菜单中,单击“Advanced(高级)”
向下滚动到 “VPC对等”部分
在部署Lightsail资源的区域旁边,选择 “启用VPC对等”
在这里插入图片描述

三、重新配置数据库连接:

在此任务中,您将再次更新应用程序配置文件(config.php)以指向Amazon RDS数据库
由于您当前的 Lightsail实例都在负载均衡器下运行,因此仅将其中一些实例重新配置为指向 Amazon RDS数据库是不明智的。这样做可能会导致负载均衡器显示连接lightsail数据库的一些前端以及连接到 Amazon RDS数据库的其他前端.
要避免这种情况,您将基于现有的快照部署新的PHP前端实例,然后修改实例:

1、进入Amazon Lightsail快照界面:
https://lightsail.aws.amazon.com/ls/webapp/home/snapshots
2、PHP-fe-1旁边:
①点击 > 实例快照
②点击在这里插入图片描述
③单击“创建新实例”

3、命令实例:PHP-fe-rds
4、滚动到屏幕底部,单击”在这里插入图片描述

请注意,实例创建成功后,您就可用使用新势力,可用将配置文件重新配置为指向Amazon RDS数据库

5、一旦您的PHP-fe-rds实例可用,请使用SSH对其进行连接
6、进入Amazon RDS数据库界面

请确保之前部署的资源在同一区域中

7、从数据库列表中,单击您之前按创建的Amazon RDS数据库名称(此数据库的名字为之前创建的 “task-db”)以访问数据库详细信息界面

8、从“连接和安全”选项卡中,将 “endpoint(端点)”复制

该端点类似于:tasks-db.cdihowyzznav.us-west-2.rds.amazonas.com

9、返回php-fe-rds实例的SSH会话界面
10、创建环境变量(RDS_ENDPOINT)以保存RDS数据库端点的值:
①粘贴” RDS_ENDPOINT='RDSENDPOINT' “
②用之前的数据库端点替换RDSENDPOINT
在这里插入图片描述

11、设置默认用户名(dbmasteruser)的环境变量和您之前创建的密码(taskstasks)
RDS_username=dbmasteruser && RDS_PASSWORD=taskstasks

12、验证环境变量是否设置正确,(以下命令的输出应与您为RDS端点设置的值,RDS用户名和RDS密码匹配):
echo "Endpoint = "$RDS_ENDPOINT && echo "username = "$RDS_username && echo "Password = "$RDS_PASSWORD

13、创建一个指向Amazon RDS数据库的新配置文件:
**

cat /opt/bitnami/apache2/configs/config.php.bak | \
    sed "s/<endpoint>/$RDS_ENDPOINT/; \
    s/<username>/$RDS_username/; \
    s/<password>/$RDS_PASSWORD/;" \
    > /opt/bitnami/apache2/configs/config.php.rds_db

**

14、通过将现有的config.php替换为指向Amazon RDS数据库的新创建的版本来激活配置:
cp /opt/bitnami/apache2/configs/config.php.rds_db /opt/bitnami/apache2/configs/config.php

15、验证是否已修改活动配置文件,以下命令的值应与Amazon RDS端点,用户名和密码的值相匹配:
cat /opt/bitnami/apache2/configs/config.php

16、在新的浏览器选项卡中:
①输入:
http://php-fe-rds/install.php
②将php-fe-rds替换为新的实例的公有IP地址
在这里插入图片描述
把Amazon Lightsail数据库中的数据迁移到Amazon RDS数据库中,这是通过使用几乎完全相同的过程完成的,该过程用于将本地MySQL数据库迁移到Amazon Lightsail数据库

17、在SSH窗口中创建一个(LS_ENDPOINT)的环境变量,已通过以下方式保存数据库端点的值:
①粘贴:LS_ENDPOINT='MYENDPOINT'
②将MYENDPOINT 替换为Lightsail数据库的端点

18、设置默认用户名(dbmasteruser)的环境变量和之前创建的密码(taskstasks)
LS_username=dbmasteruser && LS_PASSWORD=taskstasks

19、检查以确保正确设置环境变量(以下命令的输出应与您为LS端点设置的值,用户名和密码匹配)
echo "Endpoint = "$LS_ENDPOINT && echo "username = "$LS_username && echo "Password = "$RDS_PASSWORD

20、键入以下命令将数据库导出到文件(tasks.sql)
**

mysqldump -u $LS_username \
--host $LS_ENDPOINT \
--databases tasks \
--single-transaction \
--compress \
--order-by-primary  \
--set-gtid-purged=OFF \
-p$LS_PASSWORD  > tasks.sql

**

21、通过MySQL命令行工具访问您的Amazon RDS实例
**

mysql -u $RDS_username \
--port=3306 \
--host=$RDS_ENDPOINT \
-p$RDS_PASSWORD

**

22、将之前创建的数据库转储文件导入MySQL
source tasks.sql;

23、在浏览器选项卡中
①http://php-fe-rds
②将php-fe-rds替换为新的实例的公有IP地址

您应该可用看到您最初创建的任务现在存在于由Amazon RDS管理的数据库中

从这一点开始,您可用重复此步骤并从php-fe-rds实例创建新快照,从该新快照部署2个实例,并用您的三个新势力替换负载均衡其中的现有实例使用Amazon RDS

此过程将为您提供在Amazon Lightsail中运行的冗余Web前端,数据库在Amazon RDS中运行。