安装Web,电子邮件和MySQL数据库群集在Debian 6.0使用ISPConfig 3

安装Web,电子邮件和MySQL数据库群集在Debian 6.0使用ISPConfig 3 本教程介绍如何安装集群Web

使用ISPConfig 3在Debian 6.0上安装Web,电子邮件和MySQL数据库集群

版本1.0
作者:Till Brehm <t [dot] brehm [at] ispconfig [dot] org>

本教程介绍了使用ISPConfig 3控制面板安装用于Debian 6的冗余,高可用性和负载平衡的群集Web,电子邮件,数据库和DNS服务器。 MySQL Master / Master复制将用于在服务器之间复制MySQL客户端数据库,Unison将用于同步/ var / www (网站)和/ var / vmail (电子邮件帐户数据)文件夹。

1设置两个基本系统

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

要安装群集设置,我们需要两台服务器,并安装Debian 6.0。 基本设置在以下教程的第1步 - 8中描述:

https://www.howtoing.com/perfect-server-debian-squeeze-with-bind-and-dovecot-ispconfig-3

仅安装完美服务器教程的第1步 - 8,而不是其他步骤,因为它们不同于集群设置!

在我的例子中,我使用以下两个服务器的主机名和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

...并确保您的/etc/apt/sources.list包含squeeze-updates存储库(这确保您始终获得ClamAV病毒扫描程序的最新更新) - 该项目经常发布发布,有时旧版本停止工作)。

[...]
deb http://ftp.de.debian.org/debian/ squeeze-updates main
[...]

apt-get update
apt-get upgrade

安装最新的更新(如果有的话)。

通过互联网将系统时钟与NTP( n etwork协议)服务器同步是个好主意。 只需运行

apt-get -y install ntp ntpdate

您的系统时间将始终保持同步。

在服务器1上:

现在我们在server1.example.tld上创建一个私钥/公钥对:

ssh-keygen -t dsa

root@server1:~# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): <-- ENTER
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): <-- ENTER
Enter same passphrase again: <-- ENTER
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
1b:95:bc:4a:f4:9f:d8:ea:24:31:0f:c9:72:d5:a7:80 root@server1.example.com
The key's randomart image is:
+--[ DSA 1024]----+
| |
| o o |
| E * . . |
| o = o o |
| . S o . |
| + O + . |
| + + + |
| o . |
| .o |
+-----------------+
root@server1:~#

重要的是,您不要输入密码,否则在没有人工交互的情况下镜像将无法正常工作,因此只需按ENTER键!

接下来,我们将公钥复制到server2.example.tld

ssh-copy-id -i $HOME/.ssh/id_dsa.pub root@192.168.0.106

root@server1:~# ssh-copy-id -i $HOME/.ssh/id_dsa.pub root@192.168.0.101
The authenticity of host '192.168.0.101 (192.168.0.101)' can't be established.
RSA key fingerprint is 25:d8:7a:ee:c2:4b:1d:92:a7:3d:16:26:95:56:62:4e.
Are you sure you want to continue connecting (yes/no)? <-- yes (you will see this only if this is the first time you connect to server2)
Warning: Permanently added '192.168.0.101' (RSA) to the list of known hosts.
root@192.168.0.101's password: <-- server2 root password
Now try logging into the machine, with "ssh 'root@192.168.0.101'", and check in:

.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

现在检查server2的 server1的公钥是否正确传输:

server2:

cat $HOME/.ssh/authorized_keys

ssh-dss AAAAB3NzaC1kc3MAAACBAPhiAexgEBexnw0rFG8lXwAuIsca/V+lhmv5lhF3BqUfAbL7e2sWlQlGhxZ8I2UnzZK8Ypffq6Ks+lp46yOs7MMXLqb7JBP9gkgqxyEWqOoUSt5hTE9ghupcCvE7rRMhefY5shLUnRkVH6hnCWe6yXSnH+Z8lHbcfp864GHkLDK1AAAAFQDddQckbfRG4C6LOQXTzRBpIiXzoQAAAIEAleevPHwi+a3fTDM2+Vm6EVqR5DkSLwDM7KVVNtFSkAY4GVCfhLFREsfuMkcBD9Bv2DrKF2Ay3OOh39269Z1rgYVk+/MFC6sYgB6apirMlHj3l4RR1g09LaM1OpRz7pc/GqIGsDt74D1ES2j0zrq5kslnX8wEWSHapPR0tziin6UAAACBAJHxgr+GKxAdWpxV5MkF+FTaKcxA2tWHJegjGFrYGU8BpzZ4VDFMiObuzBjZ+LrUs57BiwTGB/MQl9FKQEyEV4J+AgZCBxvg6n57YlVn6OEA0ukeJa29aFOcc0inEFfNhw2jAXt5LRyvuHD/C2gG78lwb6CxV02Z3sbTBdc43J6y root@server1.example.tld

用一个命令安装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 root用户的新密码。 您应该为这两个服务器选择相同的密码。 然后回答下面的问题:

一般配置类型? < - 互联网网站
邮件名称? < - server1.mydomain.tld
需要SSL证书 < - 好的

在第一台服务器上使用server1.example.tld,在第二台服务器上使用server2.example.tld。

我们希望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

现在我们为mysql master / master复制准备MySQL服务器。

在服务器1上:

在shell上登录MySQL

mysql -u root -p

...并输入您在mysql安装期间选择的MySQL根密码。 然后在MySQL shell上执行这个commnd:

GRANT REPLICATION SLAVE ON *.* TO 'slaveuser'@'%' IDENTIFIED BY 'slave_user_password';
FLUSH PRIVILEGES;
quit;

“slave_user_password”替换为要用于从站连接到主服务器的安全密码。 在随后的步骤中用您选择占位符出现位置的密码替换此占位符。

现在我们来配置我们的2个MySQL节点:

在服务器1上:

vi /etc/mysql/my.cnf

搜索以[mysqld]开头的部分,并在其中放入以下选项(注释掉所有现有的冲突选项):

[...]
[mysqld]
server-id = 1
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1
 
master-host = 192.168.0.106
master-user = slaveuser
master-password = slave_user_password
master-connect-retry = 60   
 
expire_logs_days        = 10
max_binlog_size         = 500M
log_bin                        = /var/log/mysql/mysql-bin.log  
[...]

然后停止MySQL:

/etc/init.d/mysql stop

现在在server2上几乎相同...

在服务器2上:

vi /etc/mysql/my.cnf

搜索以[mysqld]开头的部分,并在其中放入以下选项(注释掉所有现有的冲突选项):

[...]
[mysqld]
server-id = 2
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 2
   
master-host = 192.168.0.105
master-user = slaveuser
master-password = slave_user_password
master-connect-retry = 60
 
expire_logs_days        = 10
max_binlog_size         = 500M
log_bin                        = /var/log/mysql/mysql-bin.log  
[...]

然后停止MySQL:

/etc/init.d/mysql stop

现在我们必须同步两个mysql服务器。 我们通过将主数据库中的mysql数据目录复制到从属设备,以及包含debian-sys-maint用户的debian配置文件。 这可以在我们在两台服务器上停止mysql之前完成。

在服务器1上:

scp -pr /var/lib/mysql/* root@server2.example.tld:/var/lib/mysql/
scp -pr /etc/mysql/debian.cnf root@server2.example.tld:/etc/mysql/debian.cnf

现在我们再次在主服务器上启动MySQL:

/etc/init.d/mysql start

以root用户身份登录MySQL shell

mysql -u root -p

...并在MySQL shell中执行此命令...

SHOW MASTER STATUS;

...获取MySQL主控状态:

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 | 106 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

下一步需要的信息是binlog文件mysql-bin.000002和binlog位置106 。 稍后我们需要server2的相同细节。

现在在主机的MySQL shell中执行此命令将其连接到从站:

STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='192.168.0.106', MASTER_USER='slaveuser', MASTER_PASSWORD='slave_user_password', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=106;
START SLAVE;

然后检查从站状态:

SHOW SLAVE STATUS \G

Slave_IO_RunningSlave_SQL_Running在输出中都具有值Yes重要。

在服务器2上:

以root用户身份登录MySQL shell

mysql -u root -p

...并在MySQL shell中执行此命令:

STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='192.168.0.105', MASTER_USER='slaveuser', MASTER_PASSWORD='slave_user_password', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=106;
START SLAVE;

然后检查从站状态:

SHOW SLAVE STATUS \G

Slave_IO_RunningSlave_SQL_Running在输出中都具有值Yes重要

现在完成了mysql master / master复制的配置,我们继续安装其他软件包。