如何使用PostgreSQL数据库集群部署高可用性Canvas LMS

发布于:2020-12-19 18:08:10

0

424

0

PostgreSQL 数据库集群 Canvas LMS

在当前的大流行时期,学习管理系统(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”,然后按照出现的说明进行操作。

Canvas LMS PostgreSQL数据库部署

选择PostgreSQL时,必须指定用户,密钥或密码和端口以通过SSH连接到服务器。您还可以为新群集添加名称,如果您想让ClusterControl为您安装相应的软件和配置,也可以为其添加名称。

Canvas LMS PostgreSQL数据库部署

设置SSH访问信息后,您需要定义数据库凭据,版本和数据目录(可选)。您还可以指定要使用的存储库。

在下一步中,您需要使用IP地址或主机名将服务器添加到要创建的群集中。

Canvas LMS PostgreSQL数据库部署

在最后一步中,您可以选择复制是同步还是异步,然后按“部署”

Canvas LMS PostgreSQL数据库部署

任务完成后,您可以在ClusterControl主屏幕中看到新的PostgreSQL集群。

Canvas LMS PostgreSQL数据库部署

现在,您已经创建了集群,可以在其上执行多个任务,例如添加负载均衡器(HAProxy)或新副本。

负载均衡器部署

要执行负载平衡器部署,请在集群操作中选择选项“添加负载平衡器”,然后完成询问的信息。

Canvas LMS PostgreSQL数据库负载均衡器部署

您只需要添加IP或主机名,端口,策略以及要使用的节点。

持续部署

要执行Keepalived部署,请在集群操作中选择选项“添加负载均衡器”,然后转到Keepalived选项卡。

Canvas LMS PostgreSQL数据库部署-Keepalived

在这里,选择HAProxy节点,然后指定将用于访问数据库的虚拟IP地址。

目前,您应该具有以下拓扑:

Canvas LMS PostgreSQL数据库部署

现在,让我们将此环境连接到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

$ cat config/database.yml<font></font>

<font></font>

production:<font></font>

<font></font>

  adapter: postgresql<font></font>

<font></font>

  encoding: utf8<font></font>

<font></font>

  database: canvas_production<font></font>

<font></font>

  host: VIRTUAL_IPADDRESS<font></font>

<font></font>

  username: CANVAS_USER<font></font>

<font></font>

  password: CANVAS_PASSWD<font></font>

<font></font>

  timeout: 5000

在这里,替换:

  • 在Keepalived中配置的虚拟IP地址为VIRTUAL_IPADDRESS

  • CANVAS_USER用于Canvas数据库用户

  • CANVAS_PASSWD为Canvas数据库密码

确保可以使用虚拟IP地址作为主机访问数据库,并且在pg_hba.conf PostgreSQL配置文件中允许使用该数据库。您可以通过从应用程序服务器运行以下命令来对其进行测试

1个

$ psql -h VIRTUAL_IPADDRESS -U CANVAS_USER canvas_production


ClusterControl自动恢复功能

因此,问题是,除了部署过程之外,ClusterControl在这里的作用是什么?

如果发生故障,ClusterControl会将最高级的备用节点升级为主节点,并通知您该问题。它还会故障转移备用节点的其余部分,以从新的主服务器复制。

默认情况下,HAProxy配置有两个不同的端口:读写和只读。在读写端口中,主节点处于联机状态,其余节点处于脱机状态;在只读端口中,主节点和备用节点均处于联机状态。

当HAProxy检测到您的节点之一不可访问时,它将自动将其标记为脱机,并且不考虑将节点发送给它。通过部署时由ClusterControl配置的运行状况检查脚本来完成检测。这些命令检查实例是否启动,正在恢复还是只读。

当ClusterControl提升备用节点时,HAProxy将两个端口的旧主节点标记为脱机,并将提升后的节点置于读写端口中。

如果为主动HAProxy分配了系统要连接到的虚拟IP地址,该主动HAProxy失败,则Keepalived会自动将此IP地址迁移到被动HAProxy。这意味着您的系统随后可以继续正常运行。

结论

在此博客中,我们讨论了将高可用性PostgreSQL环境与Canvas LMS平台一起使用的重要性,以及ClusterControl如何帮助您完成部署和自动恢复任务。我们还提到了如何通过添加HAProxy和Keepalived来实现此环境,以实现高可用性。