以下是Debian LAMP集群的部署步驟,包含基礎環境搭建與高可用性配置:
更新系統
sudo apt update && sudo apt upgrade -y
安裝Apache
sudo apt install apache2
sudo systemctl enable --now apache2
安裝MariaDB(MySQL替代)
sudo apt install mariadb-server
sudo mysql_secure_installation # 按提示設置root密碼及安全選項
CREATE DATABASE db_name;
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON db_name.* TO 'user'@'localhost';
FLUSH PRIVILEGES;
安裝PHP及擴展
sudo apt install php libapache2-mod-php php-mysql
sudo systemctl restart apache2
/var/www/html/info.php,內容為<?php phpinfo(); ?>,訪問確認PHP運行正常。方案1:Nginx反向代理
安裝Nginx并配置反向代理到多臺Apache服務器:
sudo apt install nginx
sudo nano /etc/nginx/sites-available/lamp_cluster
添加以下內容(替換server_ip1/2為實際服務器IP):
upstream apache_cluster {
server server_ip1:80;
server server_ip2:80;
}
server {
listen 80;
location / {
proxy_pass http://apache_cluster;
}
}
啟用配置并重啟Nginx:
sudo a2ensite lamp_cluster
sudo systemctl restart nginx
方案2:DNS輪詢
在DNS管理界面為域名添加多條A記錄,指向不同服務器IP,實現簡單負載。
主服務器配置(假設主服務器IP為master_ip):
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
添加以下內容:
[mysqld]
server-id=1
log-bin=mysql-bin
重啟MariaDB:
sudo systemctl restart mariadb
創建復制用戶:
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'repl_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
FLUSH PRIVILEGES;
從服務器配置:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
添加:
[mysqld]
server-id=2
重啟MariaDB后,執行復制命令:
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='repl_user',
MASTER_PASSWORD='repl_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
START SLAVE;
驗證復制狀態:
SHOW SLAVE STATUS\G
sudo apt install pacemaker corosync pcs
sudo systemctl enable --now corosync pcsd
sudo pcs cluster auth node1 node2 node3 -u hacluster -p your_password
sudo pcs cluster setup --name lamp_cluster node1 node2 node3
sudo pcs cluster start --all
sudo pcs cluster enable --all
sudo pcs resource create apache systemd:apache2 op monitor interval=30s
sudo pcs resource create mysql systemd:mariadb op monitor interval=30s
sudo pcs constraint colocation add mysql apache INFINITY
sudo pcs constraint order start mysql then start apache
sudo ufw allow 'Apache Full'
sudo ufw deny in on eth0 from any to any port 3306 # 限制數據庫端口僅允許可信IP
sudo tar -czvf /backup/lamp_backup_$(date +%F).tar.gz /var/www /etc/apache2 /etc/mysql
說明: