安装Web,电子邮件和MySQL数据库集群(镜像)在Debian 5.0使用ISPConfig 3

安装Web,电子邮件和MySQL数据库集群(镜像)在Debian 5.0上 使用ISPConfig 3 本教程介绍如何安装clustere ...

使用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.howtoing .com / mysql_master_master_replication )。

1设置两个基本系统

在此设置中,将有一个主服务器(运行ISPConfig控制面板界面)和一个从服务器,它们反映主服务器的Web(apache),电子邮件(Postfix和dovecot)和数据库(MySQL)服务。

要安装群集设置,我们需要两台使用Debian 5.0最低安装的服务器。 基本设置在以下教程中在第1步 - 6中描述:

https://www.howtoing.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
# 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

复制mysqlwww数据。

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