Использование cPanel (WHM) для управления кластером


WHM - неплохой инструмент управления сервером. Хоть он и платный, но разработчки постарались на славу. Довольно распространенным является установка WHM/cPanel на один сервер, который будет содержать и базы данных, и файлы сайтов, и учетные записи пользователей. Но что же делать, если у Вас есть несколько серверов и отдельный сервер для баз данных?
На первый взгляд все до безобразия просто - поставить WHM/cPanel на несколько серверов и радоваться жизни. Но это только на первый взгляд.В этой статье хочу описать подход к настройке кластера серверов, в котором используется WHM/cPanel для управления конфигурацией.

На первом /главном сервере выполняем следующие манипуляции:
Устанавливаем cPanel на главный сервер.
Настраиваем на нем nfs server
Монтируем папки home и /usr/local/apache/conf на второй сервер.

Генерируем ключи ssh на первом сервере для пользователя root используя ssh-keygen

Копируем его публичную часть на второй сервер:

scp ~/.ssh/id_rsa.pub root@remote_ip:~/.ssh/

Теперь наш главный сервер может подключаться ко второму без пароля.

Теперь нужно подправить шаблон хоста для apache на первом/главном сервере:

nano /var/cpanel/templates/apache2_2/vhost.default
nano /var/cpanel/templates/apache2_2/ssl_vhost.default

В самой первой строке добавляем следующее сразу же после [% ipblock.ip %]:[% ipblock.port %]

*:[% ipblock.port %]

В результате первая строка файла будет выглядеть следующим образом:

<VirtualHost[% FOREACH ipblock IN vhost.ips %] [% ipblock.ip %]:[% ipblock.port %] *:[% ipblock.port %][% END %]>

Копируем файлы на второй сервер

rsync -Hogva /opt/* root@remote_ip:/opt/
rsync -Hogva /usr/local/cpanel root@remote_ip:/usr/local/
rsync -Hogva /var/cpanel root@remote_ip:/var/
rsync -Hogva /usr/local/apache root@remote_ip:/usr/local/
scp /etc/init.d/httpd root@remote_ip:/etc/init.d/
scp /usr/bin/php* root@remote_ip:/usr/bin/

Создаем файлы /usr/local/cpanel/scripts/postkillacct и /usr/local/cpanel/scripts/postwwwacctuser со следующим содержанием:

#!/bin/bash
scp /etc/passwd root@remote_ip:/etc/
scp /etc/group root@remote_ip:/etc/

ssh root@remote_ip '/etc/init.d/httpd restart'

Делаем их исполняемыми:

chmod +x /usr/local/cpanel/scripts/postwwwacctuser
chmod +x /usr/local/cpanel/scripts/postkillacct

Создаем хук, который будет запускаться перед выполнениеь easyapache:

nano /usr/local/cpanel/scripts/preeasyapache

Вносим в него следующие строки:

#!/bin/bash
cp /etc/init.d/httpd /root/httpd_$(date %d-%m-%Y).bak

Создаем хук, который будет запускаться после выполнения easyapache:

nano /usr/local/cpanel/scripts/posteasyapache

Вносим в него следующие строки:

#!/bin/bash
rsync -Hogva /opt root@remote_ip:/
rsync -Hogva /usr/local/cpanel root@remote_ip:/usr/local/
rsync -Hogva /var/cpanel root@remote_ip:/var/
rsync -Hogva /usr/local/apache --exclude=conf --exclude=conf.d --exclude=logs --exclude=domlogs root@remote_ip:/usr/local/
scp /usr/bin/php* root@remote_ip:/usr/bin/
mv /root/httpd_$(date %d-%m-%Y).bak /etc/init.d/httpd

Делаем их исполняемыми:

chmod +x /usr/local/cpanel/scripts/posteasyapache
chmod +x /usr/local/cpanel/scripts/preeasyapache

Осталось создать кастомный хук, который будет дергать апач на удаленном сервере (я решил сильно не заморачиваться. Буду тупо перезапускать его):

nano /usr/local/cpanel/scripts/postrestartsrv_httpd

#!/bin/bash
ssh root@remote_ip '/etc/init.d/httpd restart'

Ставим флаг Х:

сhmod +x /usr/local/cpanel/scripts/postrestartsrv_httpd

Осталось сказать WHMу, что этот хук нужно выполнять. Редактируем /usr/local/cpanel/scripts/restartsrv_apache следующей строкой:

exec '/usr/local/cpanel/scripts/postrestartsrv_httpd'

Нужно добавить ip адреса всех серверов в список дополнительных хостов mysql
Screenshot from 2014-09-12 15:09:02

На втором сервере
Создаем симлинки:

ln -s /usr/lib64/mysql/libmysqlclient.so.16.0.0 /usr/lib64/libmysqlclient.so.18
ln -s /usr/local/apache/bin/apachectl /usr/sbin/apachectl

Устанавливаем нужные пакеты:

yum install libtool-ltdl mysql mysql-libs remote_ip libXpm libpng libjpeg-turbo freetype aspell

Если используете ImageMagic:

yum install lcms-libs

ln -s /usr/local/cpanel/3rdparty/bin/convert /usr/local/bin/convert

Перезапускаем apache. На этом все. Добавление 3-го, 4-го и т.д серверов делается по аналогии. Довольно важно подредактировать все хуки, что бы при внесении изменений на главном сервере, они реплицировались на зависимые.

Share Button
(Visited 173 times, 1 visits today)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *