Note
Vous cherchez Serf.io? Le site Web Serf a été fermé le 10/02/2024. Les documents précédemment desservis à partir de serf.io peuvent être trouvés https://github.com/hashicorp/serf/blob/master/docs/index.html.markdown
Le serf est une solution décentralisée pour la découverte de services et l'orchestration qui est légère, hautement disponible et tolérante aux pannes.
Serf s'exécute sur Linux, Mac OS X et Windows. Un protocole de potins efficace et léger est utilisé pour communiquer avec d'autres nœuds. Serf peut détecter les défaillances du nœud et informer le reste du cluster. Un système d'événements est construit au-dessus de Serf, vous permettant d'utiliser le protocole de potins de Serf pour propager des événements tels que les déploiements, les modifications de configuration, etc. Serf est complètement sans maîtrise sans point de défaillance unique.
Voici quelques exemples de cas d'utilisation de Serf, bien qu'il y en ait beaucoup d'autres:
Tout d'abord, téléchargez un binaire serf pré-construit pour votre système d'exploitation, compilez vous-même serf ou installez en utilisant go get -u github.com/hashicorp/serf/cmd/serf
.
Ensuite, commençons quelques agents Serf. Les agents se déroulent jusqu'à ce qu'on leur dise d'arrêter et de gérer la communication des tâches de maintenance du Serf. Dans une véritable configuration du serf, chaque nœud de votre système exécutera un ou plusieurs agents serf (il peut exécuter plusieurs agents si vous exécutez plusieurs types de cluster. EG serveurs Web par rapport aux serveurs memcached).
Démarrez chaque agent serf dans une session de terminal séparée afin que nous puissions voir la sortie de chacun. Démarrez le premier agent:
$ serf agent -node=foo -bind=127.0.0.1:5000 -rpc-addr=127.0.0.1:7373
...
Démarrez le deuxième agent dans une autre session de terminal (tandis que le premier est toujours en cours d'exécution):
$ serf agent -node=bar -bind=127.0.0.1:5001 -rpc-addr=127.0.0.1:7374
...
À ce stade, deux agents du serf fonctionnent indépendamment mais ne sont toujours pas conscients les uns des autres. Disons maintenant au premier agent de rejoindre un cluster existant (le deuxième agent). Lorsque vous démarrez un agent serf, vous devez rejoindre un cluster existant en spécifiant au moins un membre existant. Après cela, les potins du serf et le reste du cluster prennent conscience de la jointure. Exécutez les commandes suivantes dans une troisième session de terminal.
$ serf join 127.0.0.1:5001
...
Si vous regardez vos terminaux, vous devriez voir les deux agents du serf prendre conscience de la jointure. Vous pouvez le prouver en exécutant serf members
pour voir les membres du cluster Serf:
$ serf members
foo 127.0.0.1:5000 alive
bar 127.0.0.1:5001 alive
...
À ce stade, vous pouvez CTRL-C ou forcer à tuer l'un ou l'autre agent Serf, et ils mettront à jour leurs listes d'adhésion de manière appropriée. Si vous ctrl-c un agent serf, il partira gracieusement en informant le cluster de son intention de partir. Si vous forcez à tuer un agent, il finira par être détecté (généralement en quelques secondes) par un autre membre du cluster qui informera le cluster de la défaillance du nœud.
La documentation complète et complète est visible sur le site Web du Serf:
https://github.com/hashicorp/serf/tree/master/docs
Si vous souhaitez travailler sur Serf lui-même, vous devrez d'abord être installé (la version 1.10+ est requise ). Assurez-vous que vous avez correctement installé, y compris la configuration de votre Gopath.
Ensuite, clonez ce référentiel dans $GOPATH/src/github.com/hashicorp/serf
, puis tapez simplement make
. En quelques instants, vous aurez un exécutable serf
fonctionnel:
$ make
...
$ bin/serf
...
Remarque: make
placera également une copie de l'exécutable sous $GOPATH/bin/
Serf est d'abord et avant tout une bibliothèque avec une interface de ligne de commande, serf
. La bibliothèque Serf est indépendante de l'agent de ligne de commande, serf
. Le binaire serf
est situé sous cmd/serf
et peut être installé autonome en émettant la commande go get -u github.com/hashicorp/serf/cmd/serf
. Les applications utilisant la bibliothèque Serf ne doivent avoir besoin que d'inclure github.com/hashicorp/serf
.
Les tests peuvent être effectués en tapant make test
.
Si vous apportez des modifications au code, exécutez make format
afin de formater automatiquement le code selon les normes GO.