Примечание
Ищете serf.io? Сайт SERF был закрыт 10/02/2024. Документы ранее обслуживались с serf.io можно найти https://github.com/hashicorp/serf/blob/master/docs/index.html.markdown
SERF - это децентрализованное решение для обнаружения услуг и оркестровки, которое является легким, очень доступным и устойчивым к разлому.
SERF работает на Linux, Mac OS X и Windows. Эффективный и легкий протокол сплетен используется для общения с другими узлами. SERF может обнаружить сбои узлов и уведомить остальную часть кластера. Система событий строится на вершине SERF, позволяя вам использовать протокол сплетен SERF, чтобы распространять события, такие как развертывания, изменения конфигурации и т. Д. SERF полностью бездельничает без единой точки отказа.
Вот некоторые примеры вариантов использования SERF, хотя есть много других:
Во -первых, загрузите предварительно построенный двоичный файл Serf для вашей операционной системы, сами компилируйте Serf или установите с помощью go get -u github.com/hashicorp/serf/cmd/serf
.
Далее, давайте начнем пару агентов Serf. Агенты бегают, пока им нерутся бросить и справиться с передачей задач обслуживания SERF. В реальной настройке SERF каждый узел в вашей системе будет запускать один или несколько агентов SERF (он может запускать несколько агентов, если вы запускаете несколько типов кластеров. Например, веб -серверы против Memcached Servers).
Запустите каждый агент SERF в отдельном сеансе терминала, чтобы мы могли увидеть выход каждого. Начните первого агента:
$ serf agent -node=foo -bind=127.0.0.1:5000 -rpc-addr=127.0.0.1:7373
...
Запустите второй агент в другом сеансе терминала (в то время как первый все еще работает):
$ serf agent -node=bar -bind=127.0.0.1:5001 -rpc-addr=127.0.0.1:7374
...
В этот момент два агента SERF работают независимо, но все еще не знают друг друга. Теперь давайте сообщим, что первый агент присоединился к существующему кластеру (второму агенту). При запуске агента SERF вы должны присоединиться к существующему кластеру, указав хотя бы один существующий член. После этого сплетни сплетни и оставшаяся часть кластера узнают о соединении. Запустите следующие команды в третьем сеансе терминала.
$ serf join 127.0.0.1:5001
...
Если вы смотрите на свои терминалы, вы должны увидеть, как оба агента -приповедника узнают о присоединении. Вы можете доказать это, запустив serf members
чтобы увидеть членов кластера SERF:
$ serf members
foo 127.0.0.1:5000 alive
bar 127.0.0.1:5001 alive
...
На этом этапе вы можете CTRL-C или Force убить любого агента SERF, и они будут обновлять свои списки членства соответствующим образом. Если вы CTRL-C, агент SERF, он изящно уйдет, уведомив кластер о своем намерении уйти. Если вы заставите убить агента, он в конечном итоге (обычно в течение нескольких секунд) будет обнаружен другим членом кластера, который уведомит кластер отказа узела.
Полная, комплексная документация доступна для просмотра на веб -сайте SERF:
https://github.com/hashicorp/serf/tree/master/docs
Если вы хотите поработать над самим SERF, вам сначала нужно будет установить (версия 1.10+ требуется ). Убедитесь, что вы правильно установили, в том числе настройка гопата.
Затем клонируйте этот репозиторий в $GOPATH/src/github.com/hashicorp/serf
, а затем просто введите make
. Через несколько мгновений у вас будет исполняемый файл рабочего serf
:
$ make
...
$ bin/serf
...
Примечание: make
также поместит копию исполняемого файла под $GOPATH/bin/
SERF-это в первую очередь библиотека с интерфейсом командной строки, serf
. Библиотека SERF не зависит от агента командной строки, serf
. Двоичный файл serf
расположен под cmd/serf
и может быть установлен в одиночестве, выпустив команду go get -u github.com/hashicorp/serf/cmd/serf
. Приложения, использующие библиотеку SERF, должны только включать github.com/hashicorp/serf
.
Тесты могут быть запускаются путем набора make test
.
Если вы внесете какие -либо изменения в код, запустите make format
, чтобы автоматически форматировать код в соответствии со стандартами GO.