在开始搭建前,需完成以下准备工作:
sudo apt update && sudo apt upgrade -y,升级至最新稳定版本。LAMP(Linux、Apache、MySQL/MariaDB、PHP)是集群的核心组件,需在每台服务器上安装对应组件。
在所有Web服务器上执行以下命令安装Apache:
sudo apt update
sudo apt install apache2 -y
安装完成后,启动Apache并设置开机自启:
sudo systemctl start apache2
sudo systemctl enable apache2
验证安装:通过浏览器访问服务器IP,若出现Apache默认欢迎页面则说明安装成功。
在数据库服务器上安装MariaDB(MySQL的替代品,兼容性更好):
sudo apt update
sudo apt install mariadb-server -y
安装完成后,启动MariaDB并设置开机自启:
sudo systemctl start mariadb
sudo systemctl enable mariadb
安全加固:执行sudo mysql_secure_installation,设置root密码、移除匿名用户、禁止root远程登录、删除测试数据库。
在所有Web服务器上安装PHP及常用扩展(如MySQL、GD、CURL):
sudo apt install php libapache2-mod-php php-mysql php-gd php-curl php-mbstring -y
安装完成后,重启Apache以加载PHP模块:
sudo systemctl restart apache2
验证PHP:在/var/www/html目录下创建info.php文件,内容为<?php phpinfo(); ?>,通过浏览器访问http://服务器IP/info.php,若显示PHP信息页面则说明配置成功。
为实现流量分发,需部署Nginx负载均衡器(或在其中一台Web服务器上配置):
sudo apt update
sudo apt install nginx -y
/etc/nginx/nginx.conf,在http块中添加upstream定义后端Web服务器:http {
upstream backend {
server web1_ip:80; # Web服务器1 IP
server web2_ip:80; # Web服务器2 IP
# 可添加更多服务器
}
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
sudo systemctl restart nginx
负载均衡算法选择:
weight参数分配权重(如server web1_ip:80 weight=3;),适用于性能差异大的服务器;least_conn,适用于长连接应用(如文件上传)。为实现数据库冗余,需配置MariaDB主从复制:
主服务器配置(master):
编辑/etc/mysql/mariadb.conf.d/50-server.cnf,添加以下内容:
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = your_database_name # 需同步的数据库名
重启MariaDB:sudo systemctl restart mariadb。
创建复制用户:
CREATE USER 'replicator'@'%' IDENTIFIED BY 'strong_password';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;
查看主服务器状态(记录File和Position,后续从服务器需要):
SHOW MASTER STATUS;
从服务器配置(slave):
编辑/etc/mysql/mariadb.conf.d/50-server.cnf,添加以下内容:
[mysqld]
server-id = 2 # 必须唯一,不能与主服务器相同
relay_log = /var/log/mysql/mysql-relay-bin.log
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = your_database_name
read_only = 1 # 设置为只读(可选,增强安全性)
重启MariaDB:sudo systemctl restart mariadb。
配置主从同步:
CHANGE MASTER TO
MASTER_HOST = 'master_ip',
MASTER_USER = 'replicator',
MASTER_PASSWORD = 'strong_password',
MASTER_LOG_FILE = 'mysql-bin.000001', # 主服务器记录的File值
MASTER_LOG_POS = 107; # 主服务器记录的Position值
START SLAVE;
验证同步状态:
SHOW SLAVE STATUS\G;
若Slave_IO_Running和Slave_SQL_Running均为Yes,则说明同步成功。
使用Monit监控服务状态,实现自动重启:
sudo apt install monit -y
/etc/monit/conf.d/apache2):check process apache2 with pidfile /var/run/apache2/apache2.pid
start program = "/etc/init.d/apache2 start"
stop program = "/etc/init.d/apache2 stop"
if failed host 127.0.0.1 port 80 protocol http then restart
if 5 restarts within 5 cycles then timeout
sudo systemctl start monit
sudo systemctl enable monit
对于更高级的高可用需求,可使用Pacemaker+Corosync搭建集群:
sudo apt install pacemaker corosync -y
/etc/corosync/corosync.conf),定义集群节点和资源;sudo systemctl start corosync
sudo systemctl start pacemaker
使用Prometheus+Grafana搭建监控平台:
集中收集日志,便于故障排查:
定期备份数据库和Web数据:
mysqldump命令(如mysqldump -u root -p your_database_name > backup.sql);rsync或tar命令备份/var/www/html目录;使用ufw限制非必要端口访问:
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS(若有SSL)
sudo ufw enable
保持系统和软件最新,修复安全漏洞:
sudo apt update && sudo apt upgrade -y
REPLICATION SLAVE权限);755,文件权限设置为644,避免使用root用户运行Web应用。通过以上步骤,可搭建一个具备高可用性、负载均衡能力的Debian LAMP服务器集群,满足中小型企业的应用需求。实际部署中,可根据业务规模调整服务器数量和配置(如增加缓存服务器、CDN加速等)。