我有一个非常简单的Rails应用程序,可以在puma上运行。在单个节点上-很棒,而且完全可以按照我的要求来工作。
我一直很难找到什么-被要求在两个节点上部署此应用程序。如果您连接到一个节点并执行影响数据库的事务-该更改也应反映在另一节点上。我找不到任何简单的方法来做到这一点/不知道该怎么做。
现在-我的情况是该应用程序已部署在两个节点上-我将其压缩,解压缩,捆绑安装,rails。在任何一个节点上都可以正常工作-,但是两个节点是完全独立的,并且具有自己的mysql数据库。我想统一它们,以便一个节点上的动作反映在另一个节点上。有点...两个节点之间的某种关系,以便它们能够彼此交谈。
使用Rails完成此任务的常用工具或方法有哪些?我的首选是集成尽可能少的软件系统/安装尽可能少的gem-但是,当然,如果可行,我必须考虑一下。
答案 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
服务器。