使用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.youcl.com/info/6346
仅安装完美服务器教程的第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_Running
和Slave_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_Running
和Slave_SQL_Running
在输出中都具有值Yes
重要
现在完成了mysql master / master复制的配置,我们继续安装其他软件包。