Izvršenje PDSH istodobne naredbe na više Linux poslužitelja

U ovom članku ću vam reći kako upravljati velikom flotom Linux poslužitelja s konzole jednog poslužitelja, daljinsko izvršavanje naredbi na drugim poslužiteljima i dobivanje njihovih rezultata, provjeravanje statusa poslužitelja i obavljanje sličnih poslova paralelno pomoću uslužnog programa pdsh. Razumjet ćemo kako to instalirati, konfigurirati i pokrenuti naredbe na nekoliko poslužitelja paralelno.

PDSH (paralelno distribuirana školjka) - visoko performansni program za paralelno pokretanje naredbi na velikom broju Linux poslužitelja putem ssh-a. Podrazumijevano, pdsh vam omogućuje podršku 32 istodobne veze s upravljanim poslužiteljima. Postoji nekoliko korisnih modula za proširenje za pdsh, o čemu ćemo također govoriti u ovom članku..

S pdsh-om možete:

  • Ažuriranje softvera na poslužiteljima;
  • Ugradite potrebne module ili uslužne programe;
  • Pokrenite neku bash skriptu;
  • Provjerite ima li ažuriranja i još mnogo toga.

sadržaj:

  • Instalirajte PDSH i dodatne module
  • Konfiguriranje poslužitelja za upravljanje pdsh i upravljanih Linux poslužitelja.
  • Primjeri upotrebe pdsh-a za pokretanje naredbi na više poslužitelja

Instalirajte PDSH i dodatne module

Najprije morate instalirati uslužni program pdsh i potrebne module. U CentOS-u se instalacija vrši preko yum paketa za upravljanje:

yum instalirati epel-release -y - povežite spremište Epel

yum instalirati pdsh pdsh-mod-spolovi -y - instalirajte pdsh i modul spolova za to.

Općenito, ništa drugo nije potrebno za konfiguriranje pdsh-a. Instalirali smo sam pdsh, a ujedno instalirali i dodatni modul pdsh-mod-spolovi, o čemu ću govoriti kasnije, kada pređemo na pokretanje naredbi na udaljenim poslužiteljima.

Konfiguriranje poslužitelja za upravljanje pdsh i upravljanih Linux poslužitelja.

Kako ne bismo svaki put unijeli lozinke za povezivanje s udaljenim poslužiteljima, generirat ćemo ssh ključ na upravljačkom poslužitelju s instaliranim pdsh-om i dodati ga na upravljane poslužitelje.

ssh-keygen -q

Unesite datoteku u koju želite spremiti ključ (/root/.ssh/id_rsa): Unesite zaporku (prazna za nema lozinku): ponovo unesite istu zaporku: 

Izvođenje naredbe ssh-keygen -q za sva pitanja samo pritisnite Enter. Ključ je spreman, preostaje ga kopirati na upravljane Linux-poslužitelje. Kao primjer uzeo sam 2 poslužitelja s Linux CentOS-om.

Na upravljanim poslužiteljima stvorite direktorij za ssh ključ (ako ga nema):

mkdir /root/.ssh/

Kopirajte ključ u ovu mapu, i to učinim kroz odjek:

odjekuje -e "vaš ključ iz datoteke /root/.ssh/id_rsa.pub" >> /root/.ssh/authorized_keys

Ključ je dodan, morate provjeriti prolazi li veza s pdsh poslužitelja:

ssh server1

U redu je.

Primjeri upotrebe pdsh-a za pokretanje naredbi na više poslužitelja

Budući da se broj poslužitelja može razlikovati u nazivu računala, napravio sam za sebe takvu shemu konfiguracije PDSH. U datoteku s hostima na poslužitelju za upravljanje s pdsh-om dodajem svaki upravljani poslužitelj i dodijelim mu ime koje je meni prikladno, na primjer:

mačka / itd / domaćini

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 :: 1 localhost localhost.localdomain localhost6 localhost6.localdomain6 *. *. *. *. * Server1 *. *. *. * Server2 

Gdje umjesto zvjezdica trebate odrediti IP odredišne ​​poslužitelje.

Tako da se pdsh može povezati s datim imenima poslužitelja, u datoteci / root / ssh / known_hosts na ključ svakog upravljanog poslužitelja, odvojen zarezom, dodajte željeno ime poslužitelja, koje smo odredili u / etc / hosts. Na primjer:

Nakon toga, moći ćete se povezati koristeći ime hosta koje ste odabrali radi praktičnosti. Bilo bi nam korisno ako imamo 100500 poslužitelja, koji su različito imenovani.

Za pokretanje naredbe na udaljenom poslužitelju putem pdsh-a, koristi se sljedeća konstrukcija:

pdsh -w server1 'naredba' - Uvijek vam savjetujem da navodite naredne naredbe, jer ako koristite posebne znakove, bash na poslužitelju s pdsh će naredbu izvršiti nakon posebnog znaka lokalno.

Na primjer, da biste saznali vrijeme na udaljenim poslužiteljima, možete pokrenuti naredbu za svaki od njih.

pdsh -w server1 'datum'

server1: sub ruj 14 12:27:16 +06 2019

pdsh -w server2 'datum'

server2: sub ruj 14 12:27:21 +06 2019

Ili odmah izvedite jednu naredbu za popis poslužitelja:

pdsh -w server1, server2 'datum'

server1: sub ruj 14 12:36:20 +06 2019 server2: sub ruj 14 12:36:20 +06 2019

Ako trebate izvršiti naredbu na 10 poslužitelja, dobit ćete prilično dugu naredbu s popisom svih poslužitelja, što je nezgodno. jer postavili smo vlastito ime računala za poslužitelje, a pdsh to razumije, kad zovete pdsh, možete odrediti određene poslužitelje ili niz poslužitelja u uglatim zagradama:

pdsh -w server [1-2] 'datum' - raspon poslužitelja u mom slučaju je 2 poslužitelja. Može biti od 1 do 20, izgledat će ovako: pdsh -w server [1-20] 'datum'

pdsh -w server [1,2] 'datum' - specifičnih poslužitelja 1 i 2, možete odabrati na primjer 3-4 poslužitelja i naredba će izgledati ovako: pdsh -w server [1,2,7,9] 'datum'

Za pogodnije oblikovanje, izlaz naredbi s udaljenih poslužitelja može se upotrijebiti s konstrukcijom:

pdsh -w server [1-20] 'produženje rada' | sortirati -n

Razmotrite prethodno instalirani modul pdsh-mod-gendors. Da biste ga koristili, napravite samu datoteku:

dodir / etc / spolovi

Zašto je to potrebno? Spol je izvorna sintaksička datoteka za opisivanje pdsh uloga. Kako se može primijeniti u radu? Na primjer:

  1. Imate 10 poslužitelja s Ubuntuom. Kombinirat ćemo ih u jednu Ubuntu grupu, neka njihova imena hobu budu ubuntu1-10.
    U datoteku / etc / spolove pišemo sljedeće retke:

    ubuntu [1-10] ubuntu
  2. Imate 10 poslužitelja s Centosima i sličnim imenima hostova - centos1-10:
    centos [1-10] centos
  3. Tu je i skupina poslužitelja za programere - web1-10:
    web [1-10] web
  4. Ako postoji skupina poslužitelja s različitim imenima, na primjer sys [1-5] i adm [4-8]:
    sys [1-5] naš adm [4-8] naš 

tj u datoteci / etc / sponders možete stvoriti različite grupe Linux poslužitelja. Da bi pdsh prilikom pokretanja mogao čitati podatke iz rodne datoteke, morate navesti umjesto prekidača -w -g.

U mom slučaju postoje još dva poslužitelja, ali to ne mijenja ništa:

[root @ server itd.] # pdsh -g centos 'date'

server1: sub ruj 14 12:49:59 +06 2019 server2: sub ruj 14 12:50:00 +06 2019 

To je mnogo prikladnije i naredba se izvršava na svim poslužiteljima u grupi..
Pdsh po zadanom omogućuje pokretanje do 32 istodobne sesije na različitim poslužiteljima. Broj tipki koji se istovremeno izvršavaju prikazan je tipkom -f. Na primjer, kada -f 1 dok se naredba ne izvrši na prvom poslužitelju, neće preći na drugi.

Koristeći svoj tim kao primjer, izgleda ovako:

pdsh -g ubuntu 'datum' -f 1

Također možete primijeniti tipke -t i -u:

  • -t - podešavanje vremena veze u sekundi;
  • -u - postavite vremensko ograničenje za daljinsko izvršavanje naredbi.

I na kraju, želio bih navesti nekoliko primjera kako možete koristiti pdsh za upravljanje Linux server grupe.

Sljedeća naredba na svim navedenim poslužiteljima otići će u navedeni direktorij i u nju preuzeti Centos 7 iso sliku:

pdsh -w server [1,2] 'cd / root && wget http://mirror.yandex.ru/centos/7.7.1908/isos/x86_64/CentOS-7-x86_64-Minimal-1908.iso'

Želite brzo provjeriti koja su spremišta instalirana na upravljanim poslužiteljima?

pdsh -w server [1,2] 'yum repolist'

server2: Učitani dodaci: fastestmirror server2: Učitavanje brzina zrcala s predmemoriranog poslužitelja server2: * baza: repo.centos.ru server2: * dodaci: repo.centos.ru server2: * ažuriranja: repo.centos.ru server2: repo id repo ime status server2: baza / 7 / x86_64 CentOS-7 - baza 10.019 server2: dodaci / 7 / x86_64 CentOS-7 - dodaci 435 server2: ažuriranja / 7 / x86_64 CentOS-7 - ažuriranja 2.500 server2: repolist: 12.954 server1: učitani dodaci: fasttestmirror server1: Učitavanje brzina zrcala iz predmemoriranog poslužitelja host1: * baza: repo.centos.ru server1: * dodaci: repo.centos.ru server1: * ažuriranja: repo.centos.ru server1: repo id repo ime statusa server1: baza / 7 / x86_64 CentOS-7 - Baza 10.019 server1: dodaci / 7 / x86_64 CentOS-7 - Dodaci 435 server1: ažuriranja / 7 / x86_64 CentOS-7 - Ažuriranja 2.500 server1: repolist: 12.954

pdsh -w server [1,2] 'yum install httpd -y' - instaliranje apache na oba poslužitelja

I provjerite je li stvarno instaliran:

Odnosno, bilo koju naredbu možete izvršiti odjednom na nekoliko udaljenih poslužitelja. Ako želite pokrenuti neku vrstu bash skripte, savjetujem vam da je dodate u neku datoteku i kopirate na potrebne poslužitelje, a zatim je pokrenete..

Možda je to sve, nadam se da će ove informacije biti korisne za vas i olakšat će rutinske zadatke upravljanja više Linux poslužitelja.