Ruby on rails 分布式Rails应用程序-如何配置?

Ruby on rails 分布式Rails应用程序-如何配置?,ruby-on-rails,high-availability,puma,Ruby On Rails,High Availability,Puma,我有一个相当直接的Rails应用程序,运行在puma上。在一个节点上-它非常棒,并且完全按照我的要求工作 我一直很难找到的是——我被要求跨两个节点部署这个应用程序。如果连接到一个节点并执行影响数据库的事务,则该更改也应反映在另一个节点上。我找不到任何直接的方法来做这件事/我不知道怎么做 现在-我的情况是应用程序部署在两个节点上-我将其压缩、解压缩、捆绑安装、rails s。在任何一个节点上都可以正常工作,但这两个节点完全独立,并且有自己的mysql数据库。我希望将它们统一起来,这样一个节点上的操

我有一个相当直接的Rails应用程序,运行在puma上。在一个节点上-它非常棒,并且完全按照我的要求工作

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

现在-我的情况是应用程序部署在两个节点上-我将其压缩、解压缩、捆绑安装、rails s。在任何一个节点上都可以正常工作,但这两个节点完全独立,并且有自己的mysql数据库。我希望将它们统一起来,这样一个节点上的操作会反映在另一个节点上。某种程度上。。。两个节点之间的某种关系,使它们能够相互通信


使用Rails实现这一点的常用工具或方法有哪些?我的首选是集成很少的软件系统/安装尽可能少的宝石-但是,当然,如果它工作,我必须考虑它。< /P> < P>作为一个简单的设置,你可以在一个服务器上运行你的数据库。让我们称之为服务器
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
生产:
适配器:mysql2
主机:database.application.rails
用户名:
密码:
数据库:应用程序\产品
上面的配置还假设您将用户名和密码存储为环境变量—这是一种最佳做法,而不是将它们存储在代码库中

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

这并不完全是一个高可用性设置,因为您正在手动启动服务器,并且在
puma
服务器前面没有一个web服务器


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

用户现在如何访问应用程序?不同的URL?@MikeGorski正确。有两个不同的URL-分别是两个不同的节点。如果您无法共享数据库,也许您可以尝试将它们配置为主机到主机复制?@R.Sierra我将尝试这一点,以及Mike G.的建议。没有想过使用MySQL配置来摆脱它。