Как лучше всего работать с серверами HA Gearman - PullRequest
10 голосов
/ 05 октября 2011

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

Наш вопрос заключается в том, что происходит с теми заданиями, которые находятся в очереди на сервере заданий, который умер?Каков наилучший метод обеспечения высокой доступности этих серверов, чтобы убедиться, что задания не прерываются при сбое?

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

enter image description here

Источник

1 Ответ

2 голосов
/ 17 октября 2011

Насколько я знаю, в настоящий момент нет правильного способа справиться с этим, но пока вы запускаете оба сервера заданий с постоянными очередями (используя MySQL или другое хранилище данных - просто не используйте одну и ту же действительную очередь для обоихсерверов), вы можете просто перезапустить сервер заданий, и он загрузит свою очередь из базы данных.Это позволит отправлять все поставленные в очередь задачи доступным работникам, даже после того, как сервер умер.

Однако нет никакого автоматического способа сделать это, когда сервер заданий выходит из строя, так что если и сервер заданий, ихранилище данных выйдет из строя (сервер, работающий как локально, так и выйдет из строя) оставит задачи в подвешенном состоянии до тех пор, пока не вернется в оперативное состояние.

Постоянная очередь читается только при запуске (и вставляется / удаляется с момента отправки задач изавершено).

Я не уверен в сложности, необходимой для добавления такой функциональности в gearmand, и в том, требуется ли она на самом деле, но просто «задача добавлена, задача выполнена, задача выполнена» - уведомления между серверами не должныбыло слишком сложно справиться.

...