Посмотрел на днях видео по существующим кластерам и их организации, наткнулся на упоминание/видеообзор утилиты clusterssh позволяющей удаленно с одного места управлять через защищенное соединение множеством контролируемых серверов, а по сути открывается несколько сессий и одновременно в них отправляются команды, выглядит впечатляюще.
Сейчас я покажу на практике как это выглядит.
ekzorchik@srv-serv:~$ apt-cache search clusterssh | head -n 1
clusterssh – administer multiple ssh or rsh shells simultaneously
Для разбора как работает данная утилита мне понадобиться еще 3 системы на оси Ubuntu 12.04.5 Server amd64 помимо основной (мой рабочий ноутбук: HP dv6-3080er – Ubuntu 12.04.5 Desktop amd64)
keiz@dv6:~$ ifconfig wlan0 | head -n 2 | grep ‘inet addr’
inet addr:192.168.1.48 Bcast:192.168.1.255 Mask:255.255.255.0
Ресурсы у систем одинаковые: CPU = 2,RAM=2,HDD=20Gb
- srv-cluster1 192.168.1.52
- srv-cluster2 192.168.1.53
- srv-cluster3 192.168.1.54
На данных системах установлен пакет: openssh-server (sudo apt-get install openssh-server)
В файл /etc/hosts вношу упоминания по 3 системам, просто у меня пока нет настроенного DNS сервиса:
keiz@dv6:~$ sudo nano /etc/hosts
192.168.1.52 srv-cluster1
192.168.1.53 srv-cluster2
192.168.1.54 srv-cluster3
Устанавливаю утилиту clusterssh на основную систему:
keiz@dv6:~$ sudo apt-get install clusterssh -y
keiz@dv6:~$ cssh -v
Version: 4.00_11
Теперь настраиваю кластер:
keiz@dv6:~$ sudo nano /etc/clusters
clusters = polygon
polygon = srv-cluster1 srv-cluster2 srv-cluster3
Подключаюсь к созданному кластеру: (если подключение происходит впервые, то понадобиться ответить положительно на вопрос что да действительно хотим подключиться)
keiz@dv6:~$ sudo cssh -l ekzorchik polygon
Инициализировав подключение к узлам кластера передо мной открылись 3 консоли где мне предлагается согласиться на предмет получения публичного ключа ssh для авторизации на серверах(е), этого бы не было если бы было бы настроена авторизация на основе ключей, как в заметке:
Поэтому сперва настрою аутентификацю по ключам:
keiz@dv6:~$ ssh-keygen -t rsa -b 2048
Копирую публичный ключ на ноды srv-cluster[1,2,3]:
keiz@dv6:~$ cat ~/.ssh/id_rsa.pub | ssh -p 22 ekzorchik@srv-cluster1 ‘umask 077;test -d .ssh | mkdir .ssh ; cat >> .ssh/authorized_keys’
keiz@dv6:~$ cat ~/.ssh/id_rsa.pub | ssh -p 22 ekzorchik@srv-cluster2 ‘umask 077;test -d .ssh | mkdir .ssh ; cat >> .ssh/authorized_keys’
keiz@dv6:~$ cat ~/.ssh/id_rsa.pub | ssh -p 22 ekzorchik@srv-cluster3 ‘umask 077;test -d .ssh | mkdir .ssh ; cat >> .ssh/authorized_keys’
а теперь снова ввожу команду: – и подключаюсь введя только пароль на учетную запись (хотя вроде этого не должно было быть, а не должно, я же не поправил полностью настройки по указанной заметки выше.
keiz@dv6:~$ sudo cssh -l ekzorchik polygon
Что теперь. Теперь я могу устанавливать, просматривать, редактировать файлы как будто я нахожусь за одной консолью единовременно, вот к примеру установлю пакет наглядного наблюдения за ресурсами: (если выделить какую-то одну консоль, то она станет в данный момент активной и работа будет идти только с ней, если же пакет уже где-то установлен то ничего страшного он будет установлен только там где его нет)
sudo apt-get install htop -y
Отобразить статус работы ресурсов систем(ы):
htop
- Чтобы вернуться в единое управление всеми подключенными сеансами, то просто находим окно и щелкаем по нему сделав фокус этого окна активным и теперь просто вводим команды:
Но как видно — это не совсем кластер, это просто мультиинтерактивное видеонаблюдение за работой с визуализацией открытых консолей и действий производимых на удаленных системах.
Если нужно закрыть какое-либо подключение, то можно переключиться в определенную консоль и набрать exit или sudo poweroff или в окне выше “CSSH [3]”, где [3] – число систем в кластере к которым осуществлено подключение перейти по меню: Hosts – снимаем отметку с хоста для исключения из сеанса единого исполнения команд, а если же надо закрыть все активные подключения к кластеру, то Hosts – Toogle active statе или еще раз чтобы вернуть.
Также в рассматриваемых примерах у меня везде одна учетная запись — ekzorchik. Просто я стараюсь все сервисы поднимать используя ее, а потому у Вас же может быть различные учетные данные и использование данной утилиты, как clusterssh не подойдет, а может и подойдет, справка Вам в помощь. Мне же понравилась та часть разобранной работы с данной утилитой. Потому, как в дальнейшем я уже внедрив ее сделаю все как надо.
DNS + DHCP = dnsmasq
Системы развернуты на ESXi посредством подготовки систем через pupplet (в скором времени я выложу подробную заметку, как этого добиться)
Если очень хочется, то можно создать единые настройки соединения которые будут применены к подключаемым узлам кластера:
keiz@dv6:~$ sudo su - -c "cssh -u > ~/.csshrc"
Есть еще замечание при работе с данной утилитой, если в качестве центра управления кластером используется не Desktop версия системы, а Server (т. е. Без установленной графической оболочки), то попытка подключения к нодам кластера заканчивается ошибкой:
ekzorchik@srv-serv:~$ sudo cssh -l ekzorchik polygon
sudo: unable to resolve host srv-serv
Can’t find DISPLAY — guessing `unix:0′ at /usr/share/perl5/App/ClusterSSH.pm line 2113
Can’t connect to display `unix:0′: No such file or directory at /usr/share/perl5/X11/Protocol.pm line 2264
ekzorchik@srv-serv:~$ DISPLAY=:0.0
ekzorchik@srv-serv:~$ export DISPLAY
ekzorchik@srv-serv:~$ echo $DISPLAY
:0.0
ekzorchik@srv-serv:~$ sudo cssh -l ekzorchik polygon sudo: unable to resolve host srv-serv
Can’t connect to display `unix:0′: No such file or directory at /usr/share/perl5/X11/Protocol.pm line 2264
ekzorchik@srv-serv:~$ grep X /etc/ssh/sshd_config
X11Forwarding yes
X11DisplayOffset 10
Почему так и что надо для этого я пока не разобрал, может как-нибудь в дальнейшем разберусь. А пока на этом заканчиваю разбор работы с утилитой clusterssh, по мне это больше как для показухи, что мол смотрите как я могу управлять всеми обслуживаемыми системами из одного места, запустив какое-либо средством на подобии htop чтобы воочию наблюдать с одного места за системами. Возможно я просто пока не вижу в этом какой либо надобности. Но эта заметка просто задел на будующее, до встречи с уважением автор блога — ekzorchik.