Сбой сервера и миграция

Итак, на сервере DigitalOcean, который хостит мой сайт на Discourse, возникла какая-то проблема, и DigitalOcean пытается перенести мой сайт на другой сервер. Я уже связался с ними по этому поводу, но хотел бы узнать, сталкивался ли кто-то из сообщества Discourse с подобной ситуацией ранее.

Есть ли у кого-нибудь советы по этому поводу? Обычно ли они уведомляют вас о завершении этого процесса? На мои письма они пока не ответили. Мой сайт уже несколько дней полностью недоступен, и это плохо для моего сообщества. Я не вносил никаких изменений в Discourse, поэтому знаю, что проблема возникла из-за сбоя на сервере DigitalOcean. Есть ли что-то конкретное, что мне следует сделать с моей стороны, или мне просто нужно подождать подольше?

Я выключил и включил дроплет, а также пересобрал Discourse с помощью команды ./launcher rebuild app. После пересборки я получаю эту ошибку:

Error response from daemon: driver failed programming external connectivity on endpoint app (fd1221330787160dee95f94a1256ca0dc8ddb8be2bc3c4d576ab54d3b768613a): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use.

письмо от DigitalOcean:

Мы обнаружили проблему на физическом сервере, на котором размещён один или несколько ваших дроплетов, перечисленных ниже. Чтобы минимизировать сбои, мы перенесём эти дроплеты на более исправный физический сервер. В течение всего процесса миграции операции через панель управления и API — включая выключение, изменение размера и попытки уничтожения дроплетов — не будут выполняться для затронутых дроплетов.

Чтобы минимизировать время простоя, мы постараемся выполнить живую миграцию во всех возможных случаях. Живая миграция не приведёт к простоям, но может вызвать незначительное снижение производительности дискового ввода-вывода и потерю пакетов в течение секунды или меньше при переключении сети на новый физический хост.

В случае, если мы не сможем выполнить живую миграцию дроплета, мы выполним офлайн-миграцию, в ходе которой дроплет будет выключен и перенесён в офлайн-режиме в течение отведённого окна.

Мне кажется, что проблема с Digital Ocean не связана с этим, и что у вас как-то установлен или запущен другой веб-сервер на вашем сервере. Установлен ли у вас Apache или Nginx? Загружается ли какой-либо веб-сервер на вашем сайте, даже если Discourse не запущен?

Я использовал автоматический установщик Discourse от DigitalOcean при первоначальной настройке всего; он использует Ubuntu и всё остальное, что входит в пакет. На этом дроплете у меня нет других веб-сайтов. Похоже, что nginx активен и работает. Статус Apache возвращает ошибку.

Вот что отображается на моём неработающем сайте при посещении через Firefox:

Error 521 Ray ID: 5c686964ad310d1a • 2020-08-22 00:17:35 UTC
Web server is down

Browser - Cloudflare - Host
Working - Working - Error

Я выполнил команду systemctl status apache2, чтобы проверить, запущен ли Apache, и она показала:

    ● apache2.service - The Apache HTTP Server
       Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset:
      Drop-In: /lib/systemd/system/apache2.service.d
               └─apache2-systemd.conf
       Active: failed (Result: exit-code) since Fri 2020-08-21 16:16:24 UTC; 7h ago
      Process: 912 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILUR
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 apachectl[912]: AH0055
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 apachectl[912]: (98)Ad
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 apachectl[912]: (98)Ad
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 apachectl[912]: no lis
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 apachectl[912]: AH0001
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 apachectl[912]: Action
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 apachectl[912]: The Ap
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 systemd[1]: apache2.se
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 systemd[1]: apache2.se
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 systemd[1]: Failed to 
lines 1-17/17 (END)

Я также выполнил команду systemctl status nginx, чтобы проверить nginx, и она показала:

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en
   Active: active (running) since Fri 2020-08-21 16:16:24 UTC; 8h ago
     Docs: man:nginx(8)
  Process: 972 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=
  Process: 917 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process o
 Main PID: 976 (nginx)
    Tasks: 2 (limit: 1108)
   CGroup: /system.slice/nginx.service
           ├─976 nginx: master process /usr/sbin/nginx -g daemon on; master_proc
           └─977 nginx: worker process

Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 systemd[1]: Starting A
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 systemd[1]: nginx.serv
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 systemd[1]: Started A
lines 1-15/15 (END)

Судя по этому письму, можно просто подождать и посмотреть, что они сделают. Но я бы обязательно сделал резервную копию вне сайта, на всякий случай!

В целом гораздо лучше использовать официальный метод установки. Если вы не используете этот дроплет для чего-то еще, помимо Discourse, я бы посоветовал воспользоваться этой возможностью, чтобы начать заново с нового дроплета и установить систему, следуя официальным поддерживаемым инструкциям здесь: discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub

Затем вы можете загрузить резервную копию со старого экземпляра и загрузить её на новый, и вы снова будете в строю с экземпляром, который официально поддерживается и за которым проще ухаживать.