Установка серверов · 9 min read · Sep 26, 2025

Установка кластера веб-сервера, электронной почты и базы данных MySQL (зеркало) на Debian 5.0 с ISPConfig 3

Установка кластера веб-сервера, электронной почты и базы данных MySQL (зеркало) на Debian 5.0 с ISPConfig 3

Версия 1.0
Автор: Тилл Брем

Это руководство описывает установку кластерного веб-сервера, сервера электронной почты, базы данных и DNS, который будет использоваться для резервирования, высокой доступности и балансировки нагрузки на Debian 5 с панелью управления ISPConfig 3. GlusterFS будет использоваться для зеркалирования данных между серверами, а ISPConfig для зеркалирования конфигурационных файлов. Я буду использовать настройку из двух серверов здесь для демонстрационных целей, но настройка может быть масштабирована на большее количество серверов с лишь незначительными изменениями в конфигурационных файлах GlusterFS.

В настоящее время существует одно ограничение в настройке кластера MySQL. Демон MySQL имеет проблемы с блокировкой во время начальной проверки innodb, когда второй сервер запускается. Текущий обходной путь, который я использую здесь, - это запуск MySQL только с myisam. Я нашел несколько отчетов о успешной работе серверов MySQL с innodb на GlusterFS, так что это должно быть возможно с некоторой настройкой конфигурационного файла GlusterFS и / или MySQL для использования innodb также. Я постараюсь найти решение для проблем с блокировкой и обновить это руководство. Если кто-то знает решение для innodb на GlusterFS, пожалуйста, свяжитесь со мной. Если вы хотите использовать второй сервер только как горячую резервную систему, то вы должны иметь возможность использовать innodb, если вы запускаете MySQL на втором сервере только тогда, когда первый сервер отключен.

Это в настоящее время установка концепции, поэтому пока нет опыта, как эта установка масштабируется в производственных системах. Единственная часть, которая может вызвать проблемы, - это общий каталог данных MySQL. Другим решением для доступа к базам данных MySQL с нескольких серверов одновременно является использование настройки кластера MySQL (http://www.mysql.com/products/database/cluster/) или репликации MySQL master / master (https://www.howtoforge.com/mysql_master_master_replication).

Чтобы узнать, как использовать ISPConfig 3, я настоятельно рекомендую скачать руководство ISPConfig 3.

На почти 300 страницах оно охватывает концепцию, стоящую за ISPConfig (администраторы, реселлеры, клиенты), объясняет, как установить и обновить ISPConfig 3, включает справочник для всех форм и полей форм в ISPConfig вместе с примерами допустимых вводов и предоставляет руководства для самых распространенных задач в ISPConfig 3. Оно также описывает, как сделать ваш сервер более безопасным и включает раздел по устранению неполадок в конце.

1 Настройка двух базовых систем

В этой настройке будет один главный сервер (который запускает интерфейс панели управления ISPConfig) и один ведомый сервер, который зеркалирует веб (apache), электронную почту (postfix и dovecot) и базы данных (MySQL) услуги главного сервера.

Чтобы установить кластерную настройку, нам нужны два сервера с минимальной установкой Debian 5.0. Базовая настройка описана в следующем руководстве в шагах 1 - 6:

https://www.howtoforge.com/perfect-server-debian-lenny-ispconfig3

Установите только шаги 1 - 6 руководства по идеальному серверу и не устанавливайте другие шаги, так как они отличаются для кластерной настройки!

В моем примере я использую следующие имена хостов и IP-адреса для двух серверов:

Главный сервер

Имя хоста: server1.example.tld
IP-адрес: 192.168.0.105

Ведомый сервер

Имя хоста: server2.example.tld
IP-адрес: 192.168.0.106

Где бы эти имена хостов или IP-адреса ни встречались в следующих шагах установки, вам нужно будет изменить их, чтобы они соответствовали IP-адресам и именам хостов ваших серверов.

2 Установка двух серверов

Следующие шаги должны быть выполнены на главном и на ведомом сервере. Если конкретный шаг предназначен только для главного или ведомого, то я добавил примечание в описании красным цветом.

vi /etc/hosts
127.0.0.1       localhost
192.168.0.105   server1.example.tld
192.168.0.106   server2.example.tld
# Следующие строки желательны для хостов, поддерживающих IPv6
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Установите имя хоста сервера:

echo server1.example.tld > /etc/hostname
/etc/init.d/hostname.sh start

Используйте server1.example.tld на первом сервере и server2.example.tld на втором сервере.

Отредактируйте файл sources.list…

vi /etc/apt/sources.list 

… и убедитесь, что он содержит следующие две строки. Первая предназначена для репозитория debian volatile для получения обновленных пакетов для антивирусного программного обеспечения ClamAV и SpamAssassin, а вторая - для репозитория backports, который содержит текущие пакеты GlusterFS.

deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
deb http://www.backports.org/debian/ lenny-backports main contrib non-free

Запустите…

apt-get install debian-backports-keyring
apt-get update

… чтобы установить ключ репозитория backports и обновить базу данных пакетов apt; затем выполните…

apt-get upgrade

… чтобы установить последние обновления (если они есть).

Хорошей идеей будет синхронизировать системные часы с сервером NTP ( n etwork t ime p rotocol) через Интернет. Просто выполните…

apt-get -y install ntp ntpdate

… и ваше системное время всегда будет синхронизировано.

Установите postfix, dovecot и mysql одной командой:

apt-get -y install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d sudo

Введите новый пароль для mysql, когда установщик запросит, и ответьте на следующие вопросы, как описано ниже:

Создать каталоги для веб-администрирования? <– Нет
Общий тип конфигурации? <– Интернет-сайт
Имя почты? <– server1.mydomain.tld
Требуется SSL-сертификат? <– Ок

Мы хотим, чтобы MySQL слушал на всех интерфейсах, а не только на localhost, поэтому мы редактируем /etc/mysql/my.cnf и закомментируем строку bind-address = 127.0.0.1:

vi /etc/mysql/my.cnf
[...]  
# Вместо skip-networking по умолчанию теперь слушает только на  
# localhost, что более совместимо и не менее безопасно.  
#bind-address           = 127.0.0.1  
[...]  

Затем перезапустите MySQL:

/etc/init.d/mysql restart

Чтобы установить amavisd-new, SpamAssassin и ClamAV, мы выполняем:

apt-get -y install amavisd-new spamassassin clamav   clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract   apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon   libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip   libnet-dns-perl 

Затем установите Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear и mcrypt следующим образом:

apt-get -y install apache2 apache2.2-common apache2-doc   apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5   php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli   php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth   php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libopenssl-ruby libapache2-mod-ruby sudo 

Вы увидите следующий вопрос:

Веб-сервер для автоматической переустановки: <– apache2

Затем выполните следующую команду, чтобы включить модули Apache suexec, rewrite, ssl, actions и include:

a2enmod suexec rewrite ssl actions include ruby dav_fs dav auth_digest

PureFTPd и quota можно установить с помощью следующей команды:

apt-get -y install pure-ftpd-common pure-ftpd-mysql quota quotatool

Отредактируйте /etc/fstab. Мой выглядит так (я добавил,usrquota,grpquota к разделу с точкой монтирования /):

vi /etc/fstab
# /etc/fstab: статическая информация о файловой системе.  
#  
# <файловая система> <точка монтирования>   <тип>  <опции>       <дамп>  <передача>  
proc            /proc           proc    defaults        0       0  
/dev/sda1       /               ext3    errors=remount-ro,usrquota,grpquota 0       1  
/dev/sda5       none            swap    sw              0       0  /dev/hda        
/media/cdrom0   udf,iso9660 user,noauto     0       0  
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

Чтобы включить квоты, выполните эти команды:

touch /quota.user /quota.group
chmod 600 /quota.*
mount -o remount /

quotacheck -avugm
quotaon -avug

Установите сервер DNS BIND:

apt-get -y install bind9 dnsutils

Установите vlogger и webalizer и awstats:

apt-get -y install vlogger webalizer awstats 

Установите Jailkit: Jailkit нужен только в том случае, если вы хотите chroot SSH пользователей. Его можно установить следующим образом (важно: Jailkit должен быть установлен до ISPConfig - его нельзя установить позже!):

apt-get -y install build-essential autoconf automake1.9 libtool flex bison

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.11.tar.gz
tar xvfz jailkit-2.11.tar.gz
cd jailkit-2.11
./configure
make
make install
cd ..
rm -rf jailkit-2.11*

Установите fail2ban: Это необязательно, но рекомендуется, потому что монитор ISPConfig пытается показать журнал:

apt-get install fail2ban

Установите GlusterFS и Fuse:

apt-get -y –force-yes -t lenny-backports install fuse-utils
apt-get -y –force-yes install glusterfs-server glusterfs-client

Удалите пример конфигурационных файлов GlusterFS:

rm -f /etc/glusterfs/*.vol 

Создайте каталоги данных для томов GlusterFS:

mkdir /data/
mkdir /data/export-mysql
mkdir /data/export-mysql-ns
mkdir /data/export-vmail
mkdir /data/export-vmail-ns
mkdir /data/export-www
mkdir /data/export-www-ns

Создайте файл конфигурации сервера GlusterFS:

vi /etc/glusterfs/glusterfsd.vol
# Конфигурация для тома сервера mysql
volume posix-mysql
  type storage/posix
  option directory /data/export-mysql
  option background-unlink yes
end-volume
volume locks-mysql
  type features/locks
  option mandatory-locks on
  subvolumes posix-mysql
end-volume
volume brick-mysql
  type performance/io-threads
  option thread-count 8
  subvolumes locks-mysql
end-volume
# Конфигурация для тома сервера vmail
volume posix-vmail
  type storage/posix
  option directory /data/export-vmail
end-volume
volume locks-vmail
  type features/locks
  subvolumes posix-vmail
end-volume
volume brick-vmail
  type performance/io-threads
  option thread-count 8
  subvolumes locks-vmail
end-volume
# Конфигурация для тома сервера www
volume posix-www
  type storage/posix
  option directory /data/export-www
end-volume
volume locks-www
  type features/locks
  subvolumes posix-www
end-volume
volume brick-www
  type performance/io-threads
  option thread-count 8
  subvolumes locks-www
end-volume
# экспорт всех томов
volume server
  type protocol/server
  option transport-type tcp
  subvolumes brick-mysql brick-vmail brick-www
  
  # параметры аутентификации для тома mysql
  option auth.addr.brick-mysql.allow 192.168.0.105,192.168.0.106
  option auth.login.brick-mysql.allow user-mysql
  option auth.login.user-mysql.password 7wQav7ExkFg6eW
  
  # параметры аутентификации для тома vmail
  option auth.addr.brick-vmail.allow 192.168.0.105,192.168.0.106
  option auth.login.brick-vmail.allow user-vmail
  option auth.login.user-vmail.password 7wQav7ExkFg6eW
  
  # параметры аутентификации для www
  option auth.addr.brick-www.allow 192.168.0.105,192.168.0.106
  option auth.login.brick-www.allow user-www
  option auth.login.user-www.password 7wQav7ExkFg6eW
  
end-volume

Замените IP-адреса на IP-адреса ваших серверов и замените пароль 7wQav7ExkFg6eW на пароль по вашему выбору.

Запустите сервер GlusterFS:

/etc/init.d/glusterfs-server start 

Теперь мы создаем три файла томов клиента, которые нам нужны для монтирования файловых систем GlusterFS.

vi /etc/glusterfs/glusterfs-mysql.vol
volume remote1-mysql
  type protocol/client
  option transport-type tcp
  option remote-host 192.168.0.105
  option remote-subvolume brick-mysql
  option username user-mysql
  option password 7wQav7ExkFg6eW
end-volume
volume remote2-mysql
  type protocol/client
  option transport-type tcp
  option remote-host 192.168.0.106
  option remote-subvolume brick-mysql
  option username user-mysql
  option password 7wQav7ExkFg6eW
end-volume
volume replicate-mysql
  type cluster/replicate
  subvolumes remote1-mysql remote2-mysql
end-volume
volume cache-mysql
  type performance/io-cache
  option cache-size 25MB
  subvolumes replicate-mysql
end-volume
vi /etc/glusterfs/glusterfs-vmail.vol
volume remote1-vmail
  type protocol/client
  option transport-type tcp
  option remote-host 192.168.0.105
  option remote-subvolume brick-vmail
  option username user-vmail
  option password 7wQav7ExkFg6eW
end-volume
volume remote2-vmail
  type protocol/client
  option transport-type tcp
  option remote-host 192.168.0.106
  option remote-subvolume brick-vmail
  option username user-vmail
  option password 7wQav7ExkFg6eW
end-volume
volume replicate-vmail
  type cluster/replicate
  subvolumes remote1-vmail remote2-vmail
end-volume
volume writebehind-vmail
  type performance/write-behind
  option window-size 1MB
  subvolumes replicate-vmail
end-volume
volume cache-vmail
  type performance/io-cache
  option cache-size 256MB
  subvolumes writebehind-vmail
end-volume
vi /etc/glusterfs/glusterfs-www.vol
volume remote1-www
  type protocol/client
  option transport-type tcp
  option remote-host 192.168.0.105
  option remote-subvolume brick-www
  option username user-www
  option password 7wQav7ExkFg6eW
end-volume
volume remote2-www
  type protocol/client
  option transport-type tcp
  option remote-host 192.168.0.106
  option remote-subvolume brick-www
  option username user-www
  option password 7wQav7ExkFg6eW
end-volume
volume replicate-www
  type cluster/replicate
  subvolumes remote1-www remote2-www
end-volume
volume writebehind-www
  type performance/write-behind
  option window-size 1MB
  subvolumes replicate-www
end-volume
volume cache-www
  type performance/io-cache
  option cache-size 256MB
  subvolumes writebehind-www
end-volume

Перед тем как смонтировать наши тома в каталоги, нам нужно будет остановить некоторые службы и сделать резервную копию текущих данных:

/etc/init.d/mysql stop
/etc/init.d/apache2 stop
/etc/init.d/postfix stop
/etc/init.d/dovecot stop

mv /var/lib/mysql /var/lib/mysql_bak
mv /var/www /var/www_bak

mkdir /var/lib/mysql
mkdir /var/www
mkdir /var/vmail

vi /etc/fstab

Добавьте строки:

/etc/glusterfs/glusterfs-mysql.vol  /var/lib/mysql  glusterfs  defaults  0  0
/etc/glusterfs/glusterfs-vmail.vol  /var/vmail  glusterfs  defaults  0  0
/etc/glusterfs/glusterfs-www.vol  /var/www  glusterfs  defaults  0  0

Теперь смонтируйте диски, выполнив:

mount -a

Смените владельца каталога mysql на пользователя и группу mysql:

chown mysql:mysql /var/lib/mysql

Скопируйте данные mysql и www обратно.

cp -prf /var/lib/mysql_bak/ /var/lib/mysql/
cp -prf /var/www_bak/
/var/www/

Скопируйте данные обратно (только на главном сервере! Пропустите этот шаг на ведомом!).

Выключите innodb, так как это вызывает проблемы с блокировкой при запуске MySQL.

vi /etc/mysql/my.cnf

Измените строку:

#skip-innodb

на:

skip-innodb   

и добавьте строку

innodb_file_per_table  

в секцию [mysqld] файла my.cnf.

Когда вы настраиваете ведомый сервер, скопируйте файл /etc/mysql/debian.cnf с главного сервера на ведомый сервер перед тем, как снова запустить MySQL!

Теперь снова запустите службы:

/etc/init.d/mysql start
/etc/init.d/apache2 start
/etc/init.d/postfix start
/etc/init.d/dovecot start

Измените порядок загрузки GlusterFS, чтобы убедиться, что сервер GlusterFS всегда запускается перед MySQL.

mv /etc/rc2.d/S20glusterfs-server /etc/rc2.d/S19glusterfs-server
mv /etc/rc3.d/S20glusterfs-server /etc/rc3.d/S16glusterfs-server
mv /etc/rc4.d/S20glusterfs-server /etc/rc4.d/S16glusterfs-server
mv /etc/rc5.d/S20glusterfs-server /etc/rc5.d/S16glusterfs-server

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.