分布式Rails应用-如何配置?

时间:2018-09-20 21:01:19

标签: ruby-on-rails high-availability puma

我有一个非常简单的Rails应用程序,可以在puma上运行。在单个节点上-很棒,而且完全可以按照我的要求来工作。

我一直很难找到什么-被要求在两个节点上部署此应用程序。如果您连接到一个节点并执行影响数据库的事务-该更改也应反映在另一节点上。我找不到任何简单的方法来做到这一点/不知道该怎么做。

现在-我的情况是该应用程序已部署在两个节点上-我将其压缩,解压缩,捆绑安装,rails。在任何一个节点上都可以正常工作-,但是两个节点是完全独立的,并且具有自己的mysql数据库。我想统一它们,以便一个节点上的动作反映在另一个节点上。有点...两个节点之间的某种关系,以便它们能够彼此交谈。

使用Rails完成此任务的常用工具或方法有哪些?我的首选是集成尽可能少的软件系统/安装尽可能少的gem-但是,当然,如果可行,我必须考虑一下。

1 个答案:

答案 0 :(得分:1)

作为简单的设置,您可以在单个服务器上运行数据库。我们将该服务器称为database.application.rails。一旦具有运行数据库和DNS的单个服务器并指向该服务器的主机条目,就需要更新Rails config/database.yml文件以指向该单个数据库,例如:

production:
  adapter: mysql2
  host: database.application.rails
  username: <%= ENV["DB_USER_NAME"] %>
  password: <%= ENV["DB_PASSWORD"] %>
  database: application_prod

以上配置还假设您将用户名和密码存储为环境变量-最佳做法是不要将其存储在代码库中。

现在,当您启动Rails应用程序时,您将要使用bundle exec rails s -e production

这不是高可用性设置,因为您是手动启动服务器,而puma服务器前没有单个Web服务器。

要进行更复杂的部署,请使用capistrano部署应用程序,并将nginx配置为指向两个后端puma服务器。