Ebben a cikkben elmondom, hogyan kell egy Linux kiszolgálók nagy flottáját kezelni az egyik kiszolgáló konzoljáról, távolról végrehajtani a parancsokat más kiszolgálókon, és megkapni azok eredményeit, ellenőrizni a kiszolgálók állapotát, és hasonló munkákat végezni párhuzamosan a segédprogram segítségével pdsh. Meg fogjuk érteni, hogyan kell telepíteni, konfigurálni és futtatni a parancsokat több kiszolgálón párhuzamosan.
PDSH (párhuzamosan elosztott héj) - nagy teljesítményű segédprogram parancsok párhuzamos futtatásához nagyszámú Linux-kiszolgálón az ssh-n keresztül. Alapértelmezés szerint az pdsh lehetővé teszi 32 párhuzamos kapcsolat támogatását a kezelt szerverekkel. Számos hasznos bővítőmodul létezik az pdsh számára, amelyeket ebben a cikkben is tárgyalunk..
Az pdsh segítségével:
- Frissítsen szoftvert a szerverekre;
- Telepítse a szükséges modulokat vagy segédprogramokat;
- Futtasson néhány bash szkriptet;
- Keressen frissítéseket és így tovább.
Tartalom:
- Telepítse a PDSH és a kiegészítő modulokat
- Az pdsh felügyeleti kiszolgáló és a kezelt Linux szerverek konfigurálása.
- Példák az pdsh használatára a parancsok futtatásához több szerveren
Telepítse a PDSH és a kiegészítő modulokat
Először telepítenie kell az pdsh segédprogramot és a szükséges modulokat. A CentOS rendszeren a telepítés a yum csomagkezelőn keresztül történik:
yum install epel-release -y
- csatlakoztassa az Epel tárolót
yum install pdsh pdsh-mod-genders -y
- telepítse az pdsh-t és a nemek modult.
Általában nincs szükség másra az pdsh konfigurálásához. Telepítettük maga az pdsh-t, és telepítettünk egy kiegészítő modult is pdsh-mod-nemben, amiről később beszélni fogok, amikor továbbmegyünk a távoli szerverek parancsaira.
Az pdsh felügyeleti kiszolgáló és a kezelt Linux szerverek konfigurálása.
Annak érdekében, hogy ne adjon meg jelszavakat a távoli kiszolgálókhoz való kapcsolódáshoz, előállítjuk az ssh kulcsot a felügyeleti kiszolgálón, pdsh telepítve, és hozzáadjuk a kezelt kiszolgálókhoz..
ssh-keygen -q
Írja be azt a fájlt, amelybe menti a kulcsot (/ root /.ssh/id_rsa): Írja be a jelmondatot (üres, ha nincs jelmondat): Írja be újra ugyanazt a jelmondatot:
A parancs futtatása ssh-keygen -q
minden kérdéshez csak nyomja meg az Enter billentyűt. A kulcs kész, most már másolni kell a kezelt Linux-kiszolgálókra. Példaként 2 szervert vettem fel a Linux CentOS segítségével.
A kezelt szervereknél hozzon létre egy könyvtárat az ssh kulcshoz (ha nincs ilyen):
mkdir /root/.ssh/
Másolja a kulcsot ebbe a könyvtárba, visszhang segítségével:
echo -e "a kulcs a /root/.ssh/id_rsa.pub fájlból" >> /root/.ssh/authorized_keys
A kulcs hozzáadva volt, ellenőriznie kell, hogy az pdsh-kiszolgálóról való kapcsolat megy át:
ssh szerver1
Jól van.
Példák az pdsh használatára a parancsok futtatásához több szerveren
Mivel számos kiszolgáló különbözhet gazdagépnévben, készítettem magamnak egy ilyen PDSH konfigurációs sémát. A felügyeleti kiszolgáló pdsh fájljában lévő hosts fájlba hozzáadom az egyes kezelt kiszolgálókat, és megadom nekem a nekem megfelelő kényelmet, például:
macska / stb / házigazdák
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 :: 1 localhost localhost.localdomain localhost6 localhost6.localdomain6 *. *. *. * Server1 *. *. *. * Server2
Ahol csillagok helyett meg kell adnia az IP célkiszolgálókat.
Annak érdekében, hogy az pdsh csatlakozhasson a fájlban szereplő megadott szervernevekhez / root / ssh / ismert_szellemek az egyes kezelt szerverek kulcsaival elválasztva, vesszővel elválasztva adja hozzá a kívánt kiszolgáló nevét, amelyet az / etc / hosts könyvtárban adtunk meg. Például:
Ezután képes lesz csatlakozni a kényelme érdekében kiválasztott gazdagépnévvel. Hasznos lesz számunkra, ha 100500 szerverünk van, amelyeket másként nevezünk el.
Parancs futtatásához egy távoli kiszolgálón pdsh-n keresztül, használja a következő konstrukciót:
pdsh -w server1 'parancs'
- Mindig azt tanácsolom, hogy idézze a futó parancsokat, mert ha speciális karaktereket használ, akkor a bash a kiszolgálón az pdsh-vel végrehajtja a parancsot a speciális karakter után helyben.
Például a távoli szerverek idejének megismeréséhez mindegyikhez futtathat egy parancsot.
pdsh -w server1 'date'
server1: szeptember 14, szombat 12:27:16 +06 2019
pdsh -w server2 'date'
server2: szeptember 14, szombat 12:27:21 +06 2019
Vagy azonnal végezzen egy parancsot a kiszolgálók listájához:
pdsh -w szerver1, szerver2 'dátum'
szerver1: szeptember 14 szeptember 12:36:20 +06 2019 server2: szeptember 14 szeptember 12:36:20 +06 2019
Ha parancsot kell végrehajtania 10 kiszolgálón, meglehetősen hosszú parancsot kap, amely felsorolja az összes kiszolgálót, ami kényelmetlen. mert saját kiszolgálónevet állítunk be a kiszolgálókhoz, és az pdsh megérti ezt, amikor az pdsh meghívásakor megadhat konkrét kiszolgálókat vagy kiszolgálócsoportokat szögletes zárójelben:
pdsh -w szerver [1-2] 'date'
- az én esetemben a kiszolgálók tartománya 2 szerver. 1 és 20 között lehet, így néz ki: pdsh -w szerver [1-20] „dátum”
pdsh -w szerver [1,2] 'date'
- specifikus 1. és 2. szerver, választhat például 3-4 szervert, és a parancs így néz ki: pdsh -w szerver [1,2,7,9] „dátum”
A kényelmesebb formázás érdekében a távoli szerverekből származó parancs eredmények kimenete felhasználható a konstrukcióval:
pdsh -w szerver [1-20] 'uptime' | sort -n
Vegye figyelembe egy korábban telepített modult pdsh-mod-gendors. Használatához maga hozza létre a fájlt:
érintse meg az / etc / nemeket
Miért van rá szükség? A Genders egy natív szintaxisfájl az pdsh szerepkörök leírására. Hogyan lehet alkalmazni a munkában? Például:
- 10 szerver van az Ubuntu-val. Egyesítjük őket egy Ubuntu csoportba, legyen az ubuntu1-10 gazdaneveik.
Az / etc / genders fájlban a következő sorokat írjuk:ubuntu [1-10] ubuntu
- 10 szerver van Centos és hasonló gazdanevekkel - centos1-10:
centos [1-10] centos
- Van még egy kiszolgálók csoportja a fejlesztők számára - web1-10:
web [1-10] web
- Ha van egy kiszolgálócsoport, különböző névvel, például sys [1-5] és adm [4-8]:
sys [1-5] mi adm [4-8] mi
Ie az / etc / genders fájlban különféle csoportokat hozhat létre Linux kiszolgálókkal. Annak érdekében, hogy az pdsh elolvassa az adatokat a nemek fájljáról indításkor, a -w kapcsoló helyett meg kell adnia -g.
Az én esetemben még mindig van két szerver, de ez semmit sem változtat:
[root @ szerver stb.] # pdsh -g centos 'dátum'
szerver1: szeptember 14 szeptember 12:49:59 +06 2019 server2: szeptember 14 szeptember 12:50:00 +06 2019
Ez sokkal kényelmesebb, és a parancs a csoport összes szerverén végrehajtásra kerül..
Alapértelmezés szerint az pdsh lehetővé teszi, hogy akár 32 egyidejű munkamenetet futtasson különféle szerverekön. A gombbal jelzi az egyidejűleg futó parancsok számát -f. Például mikor -f 1
mindaddig, amíg a parancsot nem hajtják végre az első szerveren, a másodikra nem megy.
Csapatunk példaként való felhasználása így néz ki:
pdsh -g ubuntu 'date' -f 1
Kulcsokat is alkalmazhat -t és -u:
-t
- állítsa be a kapcsolat időkorlátját másodpercben;-u
- a távoli parancs végrehajtásának időkorlátja.
Végezetül szeretnék néhány példát mutatni arra, hogyan lehet az pdsh-t használni Linux szervercsoportok kezelésekor.
A következő parancs az összes megadott kiszolgálón eljut az általunk megadott könyvtárba, és tölti le a Centos 7 iso képet:
pdsh -w szerver [1,2] 'cd / root && wget http://mirror.yandex.ru/centos/7.7.1908/isos/x86_64/CentOS-7-x86_64-Minimal-1908.iso'
Gyorsan ellenőrizni szeretné, hogy melyik tároló van telepítve a kezelt szerverekre?
pdsh -w szerver [1,2] 'yum repolist'
kiszolgáló2: betöltött beépülő modulok: leggyorsabb tükörkiszolgáló2: tükör sebességének betöltése a gyorsítótárazott hostfájlkiszolgálón2: * alap: repo.centos.ru szerver2: * extrák: repo.centos.ru szerver2: * frissítések: repo.centos.ru szerver2: repo id repo név status server2: base / 7 / x86_64 CentOS-7 - Base 10 019 server2: extras / 7 / x86_64 CentOS-7 - Extrák 435 server2: frissítések / 7 / x86_64 CentOS-7 - Frissítések 2500 server2: repolist: 12,954 server1: Loaded plugins: leggyorsabb tükör szerver1: Tükör sebesség betöltése a gyorsítótárba helyezett host fájl fájl szerverről1: * alap: repo.centos.ru szerver1: * extrák: repo.centos.ru szerver1: * frissítések: repo.centos.ru szerver1: repo id repo név státusz szerver1: alap / 7 / x86_64 CentOS-7 - Base 10 019 szerver1: extrák / 7 / x86_64 CentOS-7 - Extrák 435 szerver1: frissítések / 7 / x86_64 CentOS-7 - Frissítések 2500 szerver1: újratelepítő: 12 954
pdsh -w szerver [1,2] 'yum install httpd -y'
- az apache telepítése mindkét szerverre
És ellenőrizze, hogy valóban telepítve van-e:
Vagyis bármilyen parancsot egyszerre végrehajthat több távoli szerveren. Ha valamilyen bash szkriptet szeretne futtatni, azt javasolom, hogy tegye hozzá egy fájlhoz, és másolja át a szükséges szerverekre, majd indítsa el..
Talán ennyi is, remélem, az információ hasznos lesz az Ön számára, és megkönnyíti a több Linux szerver kezelésének rutin feladatait.