发布于:2020-12-19 18:08:10
0
439
0
在当前的大流行时期,学习管理系统(LMS)平台变得越来越重要,以使您无法再使用传统的教育系统时继续进行远程学习。
如果没有故障,拥有没有高可用性的LMS平台可能会成为问题,因为如果没有数据库始终可用,那么保持系统运行的所有努力就没有意义。
在此博客中,我们将看到一个流行的LMS应用程序,称为Canvas LMS,以及如何使用PostgreSQL和ClusterControl以高可用性方式进行部署。
什么是画布?
Canvas是基于Web的学习管理系统(LMS)。学习机构,教育工作者和学生使用它来访问和管理在线课程学习材料,并交流有关技能发展和学习成果的信息。
Canvas包括各种可自定义的课程创建和管理工具,课程和用户分析与统计信息以及内部通信工具。
Canvas LMS PostgreSQL数据库部署
首先,让我们部署一个PostgreSQL集群,Canvas LMS应用程序将使用它。为此,我们将使用ClusterControl部署3个PostgreSQL节点(1个主节点和2个备用节点),以及2个在其间配置了Keepalived的HAProxy负载均衡器。
HAProxy是一种负载平衡器,可将流量从一个来源分发到一个或多个目的地,并可以为此任务定义特定的规则和/或协议。如果任何目的地停止响应,则将其标记为脱机,并将流量发送到其余可用目的地。
Keepalived是一项服务,使您可以在主动/被动服务器组中配置虚拟IP地址。该虚拟IP地址已分配给活动服务器。如果该服务器发生故障,则IP地址将自动迁移到“辅助”被动服务器,使其能够以透明的方式继续使用相同的IP地址,对系统而言。
因此,让我们看看如何使用ClusterControl实现上述拓扑。
数据库部署
要从ClusterControl执行部署,只需选择选项“ Deploy”,然后按照出现的说明进行操作。
选择PostgreSQL时,必须指定用户,密钥或密码和端口以通过SSH连接到服务器。您还可以为新群集添加名称,如果您想让ClusterControl为您安装相应的软件和配置,也可以为其添加名称。
设置SSH访问信息后,您需要定义数据库凭据,版本和数据目录(可选)。您还可以指定要使用的存储库。
在下一步中,您需要使用IP地址或主机名将服务器添加到要创建的群集中。
在最后一步中,您可以选择复制是同步还是异步,然后按“部署”
任务完成后,您可以在ClusterControl主屏幕中看到新的PostgreSQL集群。
现在,您已经创建了集群,可以在其上执行多个任务,例如添加负载均衡器(HAProxy)或新副本。
负载均衡器部署
要执行负载平衡器部署,请在集群操作中选择选项“添加负载平衡器”,然后完成询问的信息。
您只需要添加IP或主机名,端口,策略以及要使用的节点。
持续部署
要执行Keepalived部署,请在集群操作中选择选项“添加负载均衡器”,然后转到Keepalived选项卡。
在这里,选择HAProxy节点,然后指定将用于访问数据库的虚拟IP地址。
目前,您应该具有以下拓扑:
现在,让我们将此环境连接到Canvas LMS以获得高可用性。
如何配置Canvas LMS
首先,您需要安装它。使用Docker上的自动设置,手动或什至使用不同的方法(例如QuickStart或面向生产的安装)来执行此操作的方式有多种。您可以查看官方文档以选择最适合您的方法。
一旦安装了Canvas LMS,就可以继续配置database.yml文件以使用刚部署的PostgreSQL HighAvailability环境。
1个 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
在这里,替换:
在Keepalived中配置的虚拟IP地址为VIRTUAL_IPADDRESS
CANVAS_USER用于Canvas数据库用户
CANVAS_PASSWD为Canvas数据库密码
确保可以使用虚拟IP地址作为主机访问数据库,并且在pg_hba.conf PostgreSQL配置文件中允许使用该数据库。您可以通过从应用程序服务器运行以下命令来对其进行测试:
1个 |
|
ClusterControl自动恢复功能
因此,问题是,除了部署过程之外,ClusterControl在这里的作用是什么?
如果发生故障,ClusterControl会将最高级的备用节点升级为主节点,并通知您该问题。它还会故障转移备用节点的其余部分,以从新的主服务器复制。
默认情况下,HAProxy配置有两个不同的端口:读写和只读。在读写端口中,主节点处于联机状态,其余节点处于脱机状态;在只读端口中,主节点和备用节点均处于联机状态。
当HAProxy检测到您的节点之一不可访问时,它将自动将其标记为脱机,并且不考虑将节点发送给它。通过部署时由ClusterControl配置的运行状况检查脚本来完成检测。这些命令检查实例是否启动,正在恢复还是只读。
当ClusterControl提升备用节点时,HAProxy将两个端口的旧主节点标记为脱机,并将提升后的节点置于读写端口中。
如果为主动HAProxy分配了系统要连接到的虚拟IP地址,该主动HAProxy失败,则Keepalived会自动将此IP地址迁移到被动HAProxy。这意味着您的系统随后可以继续正常运行。
结论
在此博客中,我们讨论了将高可用性PostgreSQL环境与Canvas LMS平台一起使用的重要性,以及ClusterControl如何帮助您完成部署和自动恢复任务。我们还提到了如何通过添加HAProxy和Keepalived来实现此环境,以实现高可用性。
作者介绍