om du är en Linux-systemadministratör är chansen att du har mer än en maskin som du ansvarar för dagligen. Du kan till och med ha en bank med maskiner som du upprätthåller som liknar — till exempel en gård med webbservrar. Om du behöver skriva samma kommando i flera maskiner samtidigt kan du logga in på var och en med SSH och göra det seriellt, eller så kan du spara mycket tid och ansträngning och använda ett verktyg som ClusterSSH.
ClusterSSH är ett TK/Perl-omslag runt vanliga Linux-verktyg som XTerm och SSH. Som sådan kommer det att köras på nästan alla POSIX-Kompatibla operativsystem där biblioteken finns-jag har kört det på Linux, Solaris och Mac OS X. Det kräver Perl-biblioteken Tk (perl-tk
på Debian eller Ubuntu) och X11::Protocol (libx11-protocol-perl
på Debian eller Ubuntu), förutom xterm och OpenSSH.
Installation
installera ClusterSSH på ett Debian — eller Ubuntu-system är trivialt-en enkel sudo apt-get install clusterssh
installerar den och dess beroenden. Det är också förpackat för användning med Fedora, och det kan installeras via ports-systemet på FreeBSD. Det finns också en MacPorts-version för användning med Mac OS X, om du använder en Apple-maskin. Naturligtvis kan det också sammanställas från källan.
konfiguration
ClusterSSH kan konfigureras antingen via sin globala konfigurationsfil — /etc/clusters
eller via en fil i användarens hemkatalog som heter .csshrc
. Jag tenderar att gynna användarnivåkonfigurationen eftersom det låter flera personer på samma system ställa in sin ClusterSSH-klient som de väljer. Konfigurationen är enkel i båda fallen, eftersom filformatet är detsamma. ClusterSSH definierar ett” kluster ” som en grupp maskiner som du vill styra via ett gränssnitt. Med det i åtanke räknar du upp dina kluster högst upp i filen i ett ”kluster” – block och beskriver sedan varje kluster i ett separat avsnitt nedan.
till exempel, låt oss säga att jag har två kluster, var och en består av två maskiner. ”Cluster1 ”har maskinerna” Test1 ”och” Test2 ”i den, och” Cluster2 ”har maskinerna” Test3 ”och” Test4 ” i den. Kontrollfilen ~.csshrc
(eller /etc/clusters
) skulle se ut så här:
clusters = cluster1 cluster2
cluster1 = test1 test2
cluster2 = test3 test4
du kan också göra meta-kluster — kluster som hänvisar till kluster. Om du ville skapa ett kluster som heter ”allt” som omfattade alla maskiner, kan du definiera det på två sätt. Först kan du helt enkelt skapa ett kluster som innehöll alla maskiner, som följande:
clusters = cluster1 cluster2 all
cluster1 = test1 test2
cluster2 = test3 test4
all = test1 test2 test3 test4
min föredragna metod är dock att använda ett meta-kluster som omfattar de andra klustren:
clusters = cluster1 cluster2 all
cluster1 = test1 test2
cluster2 = test3 test4
all = cluster1 cluster2
genom att ringa ut” alla ”- klustret som innehåller cluster1 och cluster2, om någon av dessa kluster någonsin ändras, fångas ändringen automatiskt så att du inte behöver uppdatera definitionen” alla”. Detta kommer att spara tid och huvudvärk om din .cssrc-filen växer någonsin i storlek.
använda ClusterSSH
använda ClusterSSH liknar att starta SSH av sig själv. Att bara köra cssh -l <username> <clustername>
startar ClusterSSH och loggar in dig som önskad användare på det klustret. I figuren nedan kan du se att jag har loggat in på ”cluster1” som mig själv. Det lilla fönstret märkt ”CSSH” är Cluster SSH-konsolfönstret. Allt jag skriver in i det lilla fönstret blir echoed till alla maskiner i klustret — i det här fallet maskiner ”test1” och ”test2”. I en nypa kan du också logga in på maskiner som inte finns i din .cssrc-fil, helt enkelt genom att köra cssh -l <username> <machinename1> <machinename2> <machinename3>
.
om jag vill skicka något till en av terminalerna kan jag helt enkelt byta fokus genom att klicka på önskad XTerm och bara skriva in det fönstret som jag vanligtvis skulle göra. ClusterSSH har några menyalternativ som verkligen hjälper när det handlar om en blandning av maskiner. Enligt figuren nedan, i menyn” värdar ” i ClusterSSH-konsolen finns det flera alternativ som är praktiska.
”Retile Windows” gör just det om du manuellt har ändrat storlek eller flyttat något. ”Lägg till värd (er) eller kluster(er)” är bra om du vill lägga till en annan uppsättning maskiner eller ett annat kluster till den löpande ClusterSSH-sessionen. Slutligen ser du varje värd listad längst ner på menyn” värdar”. Genom att markera eller avmarkera rutorna bredvid varje värdnamn kan du välja vilka värdar ClusterSSH-konsolen ska echo kommandon till. Detta är praktiskt om du vill utesluta en värd eller två av en enstaka eller särskild anledning. Det sista menyalternativet som är trevligt att ha är under menyn ”Skicka”, kallad ”värdnamn”. Detta ekar helt enkelt varje maskins värdnamn till kommandoraden, vilket kan vara praktiskt om du bygger något värdspecifikt över ditt kluster.
varningar med ClusterSSH
liksom många UNIX-verktyg har ClusterSSH potential att gå hemskt fel om du inte är mycket försiktig med användningen. Jag har sett ClusterSSH-misstag ta ut en hel nivå av webbservrar helt enkelt genom att sprida ett typsnitt i en Apache-konfiguration. Att ha tillgång till flera maskiner samtidigt, eventuellt som en privilegierad användare, innebär att misstag kommer till en stor kostnad. Var försiktig och dubbelkolla vad du gör innan du stansar den Enter-tangenten.
slutsats
ClusterSSH är inte en ersättning för att ha ETT konfigurationshanteringssystem eller någon av de andra bästa metoderna när man hanterar ett antal maskiner. Men om du behöver göra något i en nypa utanför din vanliga verktygsuppsättning eller process, eller om du gör prototyparbete, är ClusterSSH oumbärligt. Det kan spara mycket tid när du gör uppgifter som behöver göras på mer än en maskin, men som alla elverktyg kan det orsaka mycket skada om det används slumpmässigt.