서버 설치 · 8 min read · Sep 27, 2025

Debian 5.0에서 ISPConfig 3으로 웹, 이메일 및 MySQL 데이터베이스 클러스터(미러) 설치하기

Debian 5.0에서 ISPConfig 3으로 웹, 이메일 및 MySQL 데이터베이스 클러스터(미러) 설치하기

버전 1.0
저자: Till Brehm

이 튜토리얼은 Debian 5에서 ISPConfig 3 제어판을 사용하여 중복성, 고가용성 및 로드 밸런싱을 위해 사용될 클러스터형 웹, 이메일, 데이터베이스 및 DNS 서버의 설치를 설명합니다. GlusterFS는 서버 간 데이터 미러링에 사용되며 ISPConfig는 구성 파일 미러링에 사용됩니다. 여기서는 데모 목적으로 두 대의 서버 설정을 사용할 것이지만, GlusterFS 구성 파일에서 약간의 수정만으로 더 많은 서버로 확장할 수 있습니다.

현재 MySQL 클러스터 설정에는 하나의 제한 사항이 있습니다. MySQL 데몬은 두 번째 서버가 시작될 때 초기 innodb 검사 중에 잠금 문제를 겪습니다. 제가 사용하는 현재의 우회 방법은 MySQL을 myisam만으로 시작하는 것입니다. GlusterFS에서 innodb로 MySQL 서버를 성공적으로 실행한 여러 보고서를 찾았으므로, GlusterFS 및/또는 MySQL 구성 파일의 미세 조정을 통해 innodb를 사용할 수 있어야 합니다. 잠금 문제에 대한 해결책을 찾고 이 튜토리얼을 업데이트하도록 하겠습니다. GlusterFS에서 innodb에 대한 해결책을 아는 분은 저에게 연락해 주시기 바랍니다. 두 번째 서버를 핫 스탠바이 시스템으로만 사용하려는 경우, 첫 번째 서버가 연결이 끊어졌을 때만 두 번째 서버에서 MySQL을 시작하면 innodb를 사용할 수 있어야 합니다.

현재 이것은 개념 증명 설정이므로 이 설정이 생산 시스템에서 어떻게 확장되는지에 대한 경험이 없습니다. 문제가 발생할 수 있는 유일한 부분은 공유 MySQL 데이터 디렉토리입니다. 여러 서버에서 동시에 MySQL 데이터베이스에 접근하기 위한 또 다른 솔루션은 MySQL 클러스터 설정( http://www.mysql.com/products/database/cluster/) 또는 MySQL 마스터/마스터 복제를 사용하는 것입니다( 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 

… 다음 두 줄이 포함되어 있는지 확인합니다. 첫 번째 줄은 ClamAV 안티바이러스 소프트웨어와 SpamAssassin의 업데이트된 패키지를 가져오기 위한 debian volatile 리포지토리용이며, 두 번째 줄은 현재 GlusterFS 패키지가 포함된 backports 리포지토리용입니다.

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

… 백포트 리포지토리 키를 설치하고 apt 패키지 데이터베이스를 업데이트합니다. 그런 다음…

apt-get upgrade

… 최신 업데이트를 설치합니다(있는 경우).

NTP(network time protocol) 서버와 함께 시스템 시계를 동기화하는 것이 좋습니다. 다음 명령을 실행하기만 하면 됩니다…

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 및 쿼타는 다음 명령으로 설치할 수 있습니다:

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

BIND DNS 서버 설치:

apt-get -y install bind9 dnsutils

vlogger 및 webalizer 및 awstats 설치:

apt-get -y install vlogger webalizer awstats 

Jailkit 설치: Jailkit은 SSH 사용자를 chroot하려는 경우에만 필요합니다. 다음과 같이 설치할 수 있습니다(중요: 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   

그리고 my.cnf 파일의 [mysqld] 섹션에 다음 줄을 추가합니다:

innodb_file_per_table  

슬레이브 서버를 설정할 때, MySQL을 다시 시작하기 전에 마스터 서버에서 /etc/mysql/debian.cnf 파일을 슬레이브 서버로 복사하십시오!

이제 서비스를 다시 시작합니다:

/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

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.