Приложение Distributed Rails - как настроить? - PullRequest
0 голосов
/ 21 сентября 2018

У меня довольно простое приложение Rails, которое работает на Puma.На одном узле - это здорово и работает именно так, как я хочу.

То, что мне было очень трудно найти - меня просят развернуть это приложение на двух узлах.Если вы подключаетесь к одному узлу и выполняете транзакцию, которая влияет на базу данных - это изменение также должно отразиться на другом узле.Я не могу найти какой-либо простой способ сделать это / я не знаю, как это сделать.

Прямо сейчас - моя ситуация заключается в том, что приложение развернуто на двух узлах - я заархивировал его, разархивировал, установил пакет, rails s,Отлично работает на любом узле - , но оба узла полностью независимы и имеют свои собственные базы данных mysql .Я хотел бы объединить их так, чтобы действие на одном узле отражалось на другом.Что-то вроде ... некоторой взаимосвязи между двумя узлами, так что они могут общаться друг с другом.

Каковы общие инструменты или способы достижения этого с помощью Rails?Я предпочитаю интегрировать как можно меньше программных систем / установить как можно меньше гемов - но, конечно, если это работает, я должен рассмотреть это.

1 Ответ

0 голосов
/ 21 сентября 2018

В качестве простой настройки вы можете запустить свою базу данных на одном сервере.Давайте назовем этот сервер 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.

Для более сложного развертыванияиспользуйте capistrano для развертывания приложения и настройте nginx для указания на оба ваших внутренних сервера puma.

...