使用ISPConfig 3在Debian 5.0上安装Web,电子邮件和MySQL数据库集群(镜像)
版本1.0
作者:Till Brehm <t [dot] brehm [at] projektfarm [dot] com>
本教程介绍了使用ISPConfig 3控制面板安装用于Debian 5的冗余,高可用性和负载平衡的群集Web,电子邮件,数据库和DNS服务器。 GlusterFS将用于镜像服务器和ISPConfig之间的数据以镜像配置文件。 我将使用两台服务器进行设置,以进行演示,但是可以通过GlusterFS配置文件进行微小的修改来扩展到更多的服务器。
目前在MySQL集群设置中有一个限制。 在第二台服务器启动时,MySQL守护程序在初始innodb检查期间有锁定问题。 我在这里使用的当前解决方法是仅使用myisam启动MySQL。 我发现有几个关于在GlusterFS上使用innodb运行MySQL服务器的报告,所以必须使用GlusterFS和/或MySQL配置文件的一些功能来使用innodb。 我将尝试为锁定问题找到解决方案并更新本教程。 如果有人知道GlusterFS上的innodb解决方案,请与我联系。 如果您只想使用第二台服务器作为热备份系统,那么只要在第一台服务器断开连接时,只需在第二台服务器上启动MySQL就可以使用innodb。
这是目前的概念设置证明,所以没有经验,这种设置如何在生产系统中扩展。 可能导致问题的唯一部分是共享的MySQL数据目录。 同时从多个服务器访问MySQL数据库的另一个解决方案是使用MySQL集群设置( http://www.mysql.com/products/database/cluster/ )或MySQL主/主复制( http://www.youcl .com / mysql_master_master_replication )。
为了学习如何使用ISPConfig 3,我强烈建议您下载ISPConfig 3手册 。
在近300页上,它涵盖了ISPConfig(管理员,经销商,客户端)背后的概念,介绍了如何安装和更新ISPConfig 3,为ISPConfig中的所有表单和表单域提供了一个参考,并附有有效输入的示例,并提供了这是ISPConfig 3中最常见的任务。它还排除了如何使服务器更安全,并在最后添加了故障排除部分。
1设置两个基本系统
在此设置中,将有一个主服务器(运行ISPConfig控制面板界面)和一个从服务器,它们反映主服务器的Web(apache),电子邮件(Postfix和dovecot)和数据库(MySQL)服务。
要安装群集设置,我们需要两台使用Debian 5.0最低安装的服务器。 基本设置在以下教程中在第1步 - 6中描述:
https://www.youcl.com/info/5128
仅安装完美服务器教程的第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 # The following lines are desirable for IPv6 capable hosts ::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易失性存储库获得ClamAV防病毒软件和SpamAssassin的更新pacakges,第二个是用于包含当前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
...安装backports存储库密钥并更新apt包数据库; 然后运行...
apt-get upgrade
...安装最新的更新(如果有的话)。
通过互联网将系统时钟与NTP( n etwork协议)服务器同步是个好主意。 只需运行...
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的新密码,并回答下列问题:
创建基于Web的管理目录?
< - 不 一般配置类型?
< - 互联网网站 邮件名称?
< - server1.mydomain.tld 需要SSL证书
< - 好的
我们希望MySQL在所有接口上监听,而不仅仅是localhost,因此我们编辑/etc/mysql/my.cnf
并注释掉bind-address = 127.0.0.1
:
vi /etc/mysql/my.cnf
[...] # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. #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
您将看到以下问题:
Web服务器自动重新配置:
< - apache2
然后运行以下命令启用Apache模块suexec,重写,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: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> 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:仅当您希望chroot SSH用户时才需要Jailkit。它可以安装如下(重要: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和保险丝:
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
# Configuration for the mysql server volume 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 # Configuration for the vmail server volume 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 # Configuration for the www server volume 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 # export all volumes volume server type protocol/server option transport-type tcp subvolumes brick-mysql brick-vmail brick-www # authentication options for the mysql volume 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 # Authentification options for the vmail volume 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 # authentification options for 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
在my.cnf
文件的[mysqld]
部分。
当您设置从服务器时,在再次启动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