Date: 1月 5, 2023
在 AWS 中创建 HA Oracle 数据库服务器集群
介绍作为一名负责为需要 Oracle 高可用性 (HA) 实例的关键业务应用程序创建 POC 的开发人员,我需要在 AWS EC2 中设置一个 Oracle EC2 HA 集群。你从哪里开始?如果您像我们大多数人一样,您将花费无尽的时间在谷歌上搜索您的下一个任务、阅读文章、安装指南、文档和关于堆栈溢出的问题。 您会发现很多几乎正确的答案,但它们永远不会完全适合您的版本或环境。 更糟糕的是,您掉进了一个兔子洞,最终浪费了数天时间来构建一个无法正常工作的环境。
我将构建一系列博客,这些博客专注于设置 HA 环境以使用各种SIOS HA 解决方案例如:DataKeeper、LifeKeeper 和 SIOS Protection Suite。 如果您有我尚未涵盖的即时需求,请告诉我,我会将您的配置移到我的待办事项列表中。
谢谢您阅读此篇。我希望它能让你的生活更轻松。 我在下面有一个任务列表,如果您已经熟悉如何完成这些任务,您可以直接完成这些任务。 下面是执行每项任务的分步指南。
AWS HA Oracle 数据库 SIOS Protection Suite for Linux
- 在 Linux 上启动 2 个 Oracle 实例
- 让 Xwindows 工作
- 连接到实例并安装额外的磁盘
- 安装 AWS 命令行工具包
- 配置安全/访问
- 为虚拟 IP 创建路由条目
- 禁用 ENI 的源/目标检查
- 编辑/etc/hosts
- 使用 VIP 主机名配置侦听器
- 禁用 SELinux
- 安装适用于 Linux 的 SIOS 保护套件
- 启动 LifeKeeper
- 连接到第二台服务器
- 建立沟通路径
- 创建 DataKeeper 资源
- 使用虚拟 IP 资源创建层次结构
- 创建 Oracle 侦听器资源
- 使用 Oracle 数据库创建层次结构
- 使用 EC2 创建层次结构
- 更改关机行为
- 测试故障转移
1. 在 Linux 上启动 2 个 Oracle 实例
在第一篇博客中,我们将使用 SIOS LifeKeeper for Linux 在 AWS 中为 Oracle 集群设置 HA 环境。这意味着排除所有先决条件。 我将在 Oracle Linux 8 AMI 上使用 aws-marketplace/Oracle 数据库 19.8.0 企业版。这些经常变化,很难找到适合您需要的正确的。这个 AMI 是我的第 3 次尝试,因为由于存储库、许可、注册和安全问题,在云中安装任何东西,尤其是 Oracle 之类的东西都非常困难。这个 AMI 实际上可以工作,因为 Oracle 已经安装在映像上。确保操作系统版本和 Oracle DB 版本受 SIOS 支持。可以检查这里.
我的实例有:
- 单一专有网络
- 单一区域
- 每个服务器的不同可用区
- 用于数据库存储的附加驱动器
- 2 不同子网中每个实例的网络接口
- 创建 2 个弹性 IP 地址并为每个服务器附加一个
我将一个额外的磁盘附加到数据库实例,并为冗余通信路径附加一个 NIC。确保两个 NIC 位于不同的子网上。这也意味着您必须手动创建和分配弹性 IP 地址才能连接到实例。
连接到实例并安装附加磁盘。 我正在使用 Putty 和 Xming 连接我的实例。如果使用 Xming,请确保在尝试建立连接之前运行 Xlaunch。
启动实例后,您需要对新磁盘进行分区。最容易找到[ ls /dev/disk/by-path ]:

现在你需要分区磁盘磁盘:

接下来在新分区上创建文件系统mkfs.xfs :

我们现在将挂载文件系统山:

最后,我们将在 fstab 中添加自动挂载磁盘的条目:

请务必注意,您不需要为 Oracle 运行安装。AMI 已经做到了这一点,并为您创建了一个数据库。我删除了使用此 AMI 预先配置的数据库,并使用 DBCA 在 /data 磁盘上创建了一个新数据库。我启动了数据库并创建了一个模式并使用 SQLPLUS 添加了数据。这一切都需要您让 Xwindows 正常工作。
2. 让 Xwindows 工作
可以使用 Xming for Windows 设置使用 Putty 的 Xdisplay。先安装Xming。然后确保开启了X11转发,在x显示位置输入localhost:0.0,在x权限文件中输入路径和xming.exe可执行文件进行本地显示:

这解决了 Windows 方面的问题,但您仍然需要修复 Linux 方面。首先编辑 /etc/ssh/sshd_config 并取消注释“X11Forwarding yes”。接下来是查找正确的密钥并将其添加到 Xauthority。如果您进行了任何用户切换,您可能必须开始一个新会话。以 ec2-user 身份登录后运行xauth列表这将为您提供您需要添加到 Xauthority 文件中的十六进制密钥。切换到oracle用户:苏 – 甲骨文。然后运行xauth 添加 $DISPLAY 。 <从 xauth 列表复制的 hexkey> 。这会将信息存储到 /home/oracle/.Xauthority 文件中。出口回到 ec2-user。
3.连接到实例并挂载额外的磁盘
我正在使用 Putty 和 Xming 连接我的实例。如果使用 Xming,请确保在尝试建立连接之前运行 Xlaunch。
启动实例后,您需要对新磁盘进行分区。最容易找到[ ls /dev/disk/by-path ]:

现在你需要分区磁盘磁盘:

接下来我们在新分区上创建文件系统mkfs.xfs :

此时我们想将 /u01 重命名为 /oracle 目录,以便我们可以将新文件系统挂载到 /u01 上,这是我们使用 AMI 构建的服务器上 Oracle 所在的位置。

使用 mkdir /u01 创建安装点并使用 mount 安装卷。使用 mv /oracle /u01 将文件移动到新磁盘。这将需要一些时间,因为它大约是 11GB 的数据。


最后,我们将在 fstab 中添加自动挂载磁盘的条目:

请务必注意,您不需要为 Oracle 运行安装。AMI 已经做到了这一点,并为您创建了一个数据库。我启动了数据库,创建了一个模式,并使用 SQLPLUS 添加了数据。
4. 安装 AWS cli 工具包
我们需要 awscli 套件;所以,当我们是 root 下载文件时卷曲“https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip”-o“awscliv2.zip”

解压文件解压 awscliv2.zip

安装应用程序须藤./aws/安装

接下来通过单击控制台右上角的帐户在 AWS 中设置访问密钥,然后选择安全凭证

单击创建访问密钥:

然后单击下载 .csv 文件:

将此文件传输到您的服务器上,并使用您的 csv 文件中的密钥 ID 和访问密钥配置 AWS aws配置命令:

测试它是否正在使用类似的东西: aws –no-paginate –no-cli-pager ec2 描述实例
5.配置安全/访问
首先,我将 Oracle 用户添加到 root 和 wheel 组,赋予它伪特权( Usermod -aG wheel oracle) .这将使 Oracle 帐户成为 lkadmin 帐户,使生活变得轻松。我将 sps.img 和许可证文件下载到两台服务器上。
在安装软件之前,还需要完成一些先决条件步骤。首先为服务器配置安全组,使它们可以通过开放TCP端口5900-59010进行通信。同时打开 TCP 端口 81 和 82。 还要确保端口已为虚拟 IP 打开。

6.为虚拟IP创建路由条目
路由表需要更新才能使集群的虚拟 IP 正常工作。在此多子网集群配置中,虚拟 IP 需要位于分配给您的 VPC 的 CIDR 范围之外。定义一个新路由,将流量定向到集群的虚拟 IP (172.30.0.101) 到主集群节点 (Oracle1) 从 VPC 仪表板中,选择路由表,单击编辑。添加“172.30.0.101/32”的路由,目标是主服务器上的主弹性网络接口 (ENI):
7. 禁用 ENI 的源/目标检查
在 Network Interfaces 下,一次选择一个接口,然后在 Actions 下选择 change source/dest。
只要您没有收到身份验证错误,就说明它已正确安装和配置。

取消勾选使能够盒子:

对所有接口重复。
8.编辑/etc/hosts
除非您已经设置了 DNS 服务器,否则您需要在两台服务器上创建主机文件条目,以便它们可以正确地按名称相互解析。

9. 使用 VIP 主机名配置监听器
编辑或创建 $ORACLE_HOME/network/admin/listener.ora 文件以指向 oracle-vip:

10. 禁用 SELinux
编辑 /etc/sysconfig/selinux 文件并设置“SELINUX=disabled”

重新启动服务器。如果此时服务器没有恢复,则可能是您将 SELINUX 设置保留为允许并将 SELINUXTYPE 设置为禁用,这将使实例变砖。只需取消 AWS 中的卷与您的实例的关联并将其挂载到mount -o rw, nouuid {设备} {挂载目录}命令到新的或现有的工作实例。编辑/{挂载目录]/etc/sysconfig/selinux文件,修改错误。保存文件,卸载并取消卷与此实例的关联,然后将其重新附加到旧实例。
11. 为 Linux 安装 SIOS 保护套件
接下来,我以 root 身份通过安装映像文件来安装 SIOS 保护套件mount /home/ec2-user/sps.img /mnt/ -t iso9660 -o loop . 运行安装程序/mnt/设置:


在 LifeKeeper 身份验证下,我向下滚动到 lkadmin 组,按回车键并将 oracle 添加到“lkadmin”组:

选择“确定”,然后选择“完成”并按回车键。下一步滚动到安装许可证密钥文件并按回车键:

从这里输入您的许可证文件的位置和名称:

接下来,我选择 Recovery Kit Selection Menu 并按下回车键:

这里我选择网络:

按空格键选择 LifeKeeper Recovery Kit for EC2。 Tab 到 Done 并回车。接下来我选择数据库菜单,向下滚动并在 LifeKeeper Oracle RDBMS 恢复工具包上点击空格键:

Tab 到 Done 或按 D 并向下滚动到 Storage 并按 Enter。接下来我按下空格键并选择 DataKeeper for Linux:

Tab 到 Done 并按回车键或按 d 退出恢复工具包选择,然后按 Tab 键到 Done 或按 D 退出 Main Configuration 菜单:

确保 LifeKeeper Startup After Install 被选中,然后最后一个选项卡完成或点击 d,我们会看到安装确认屏幕:

在这里按 enter 或 y,安装将开始。
12.启动LifeKeeper
使用以下命令启动 LifeKeeper GUI /opt/LifeKeeper/bin/lkGUIapp如果失败,可能是因为您没有登录 .Xauthority 文件的帐户的幻数。我以 oracle 身份登录,然后做了一个须藤-我扎根。因此,如果我的 gui 未加载,我会将 /home/oracle/.Xauthority 文件复制到 /root :

在这里我以 oracle 身份登录:

13.连接到第二个服务器
然后单击 Cluster Connect 按钮

以 oracle 身份登录:

14.建立沟通渠道
单击“创建通信路径”按钮:


如果出现故障,请确保禁用防火墙和 iptables。下一步:

下一步:

选择您的第一个 IP 地址并点击下一步:

选择远程IP:

下一步:

点击创建:

下一步:

现在点击完成:接下来我们需要通过使用辅助地址重复步骤 14 来创建第二个通信路径。

成功建立两条路径后,服务器应变为绿色。
15. 创建 DataKeeper 资源
单击“创建资源层次结构”按钮:

选择数据复制并点击下一步:

点击下一步(智能意味着在故障转移后您需要手动故障回复):

下一步:

选择您的主服务器并点击下一步:

选择复制现有文件系统并点击下一步:

选择现有的挂载点并点击下一步:

创建一个数据复制资源标签并点击下一步:


为获得最佳性能,位图文件应放置在临时卷上。 出于测试目的,可以将位图放置在 OS 磁盘上,如上所示。 选择位图文件位置并点击下一步:

为启用异步复制选择否,然后单击下一步:

选择目标服务器并点击下一步:

选择 Switchback 类型并点击下一步:

选择模板优先级并点击下一步:

选择目标优先级并点击下一步:

下一步:

选择目标磁盘并点击下一步:

下一步:

下一步:


选择要用于复制的网络端点并点击下一步:

选择挂载点,点击下一步:

选择资源标签并点击下一步:

点击完成:

点击完成:

如果您单击 /u01,您将看到音量同步:

16. 使用虚拟 IP 资源创建层次结构
单击创建资源按钮:

选择IP并点击下一步:

选择 Switchback 类型并点击下一步:

选择主服务器并点击下一步:

输入第 6 步中的虚拟 IP 地址,然后点击下一步:

输入 VIP 的子网掩码并点击下一步:

进入网络界面,点击下一步

输入资源标签并点击下一步:

创建成功后点击下一步:

选择目标服务器并点击下一步:

选择 switchback 类型并点击下一步:

选择优先级并点击下一步:

选择优先级并点击下一步:

完成后点击下一步:

下一步:

选择适当的网络掩码并点击下一步:

选择接口并点击下一步:

选择资源标签并点击扩展:

成功完成后点击完成:

验证后点击完成。

17. 创建 Oracle Listener 资源
在尝试在 LifeKeeper 中配置这些资源之前,请确保数据库和侦听器正在运行。单击创建资源按钮:

选择 Oracle Database Listener 并点击下一步:

选择主服务器并点击下一步:


输入监听器配置文件路径和文件名,然后点击下一步:

下一步:

输入侦听器可执行文件的路径并点击下一步:

选择保护级别并点击下一步:

选择恢复级别并点击下一步:

如果需要,选择与侦听器关联的 IP 地址,然后点击下一步:

输入侦听器标签名称并点击创建:

下一步:

点击接受默认值以在第二台服务器上构建资源:

点击完成:

单击完成并展开 LSNR 和 /u01:

18. 使用 Oracle 数据库创建层次结构
单击“创建资源层次结构”按钮:

选择 Oracle 数据库并点击下一步:

选择 Switchback 类型并点击下一步:

选择服务器并点击下一步:

选择数据库名称并点击下一步(如果出现无法找到主目录的错误,请确保数据库正在运行):

输入 sysdba 用户名并点击下一步:

输入该帐户的密码,然后点击下一步:

选择 Oracle 监听器并点击下一步:

点击创建:

创建成功后选择下一步:

选择接受默认值:

选择完成:

点击完成:扩展树以查看所有资源:

19. 使用 EC2 创建层次结构
单击“创建资源层次结构”按钮:

选择 Amazon EC2 并点击 Next>

选择智能并点击下一步>

选择您的主服务器并点击 Next>

选择 EC2 资源类型(我们在此示例中使用后端集群)并点击 Next>

选择 IP 资源并选择 Next>

选择 EC2 资源标签名称并点击创建

成功创建资源后,点击 Next> 几秒钟后,预扩展向导将弹出。点击接受默认值:

检查成功完成后,再次点击接受默认值:

点击完成,验证后点击完成:

配置完成。现在我们可以测试故障转移。
20. 改变关机行为
默认情况下,LifeKeeper 不会故障转移如果您只是关闭或重新启动服务器,则资源不足。 如果您想在关闭服务器之前移动工作负载,您应该在关闭活动节点之前手动将资源移动到备用服务器。 但是,您可能希望更改默认行为以方便测试。 这是通过更改关机策略来控制的,如下所示。

右键单击您的主服务器并选择属性:

在 General 选项卡下,将 Shutdown Strategy 更改为 Switchover Resources,然后点击 Apply:

接下来从服务器下拉菜单中选择辅助服务器并验证设置更改:点击确定:

21. 测试故障转移
我正在从辅助服务器运行 lkGUIapp。如果您在主服务器上,退出 LifeKeeper GUI 并从辅助服务器运行它。

展开所有资源层次结构并打开与主服务器的 SSH 会话。
我也在运行 ping -i 5 到 oracle-vip:


关闭主服务器:

在我的案例中,您可以看到 IP 停止响应的时间 < 25 秒。我以 5 秒的间隔错过了 4 次 20-23 次。现在一切都在备份服务器上处于活动状态。因为我们的主节点仍然关闭,所以我们在层次结构上收到警告。

如果您将切回切换为智能,一旦启动主服务器,您将必须手动在主服务器上启动该服务。在尝试将其投入使用之前,请确保主服务器处于 InSync 状态:


右键单击 cdb1 的 StandBy 按钮并选择 In Service…

点击服务

点击完成。

磁盘重新同步需要几分钟时间,但最终会完成。

恢复所有内容后,我们现在在 AWS 中拥有一个可用于开发的高可用性 Oracle 数据库。
经许可转载自信息系统