温馨提示×

Debian LAMP集群如何部署

小樊
63
2025-08-22 00:02:46
栏目: 智能运维

以下是Debian LAMP集群的部署步骤,包含基础环境搭建与高可用性配置:

一、基础LAMP环境部署

  1. 更新系统

    sudo apt update && sudo apt upgrade -y  
    
  2. 安装Apache

    sudo apt install apache2  
    sudo systemctl enable --now apache2  
    
    • 验证:访问服务器IP,若显示Apache默认页面则成功。
  3. 安装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;  
      
  4. 安装PHP及扩展

    sudo apt install php libapache2-mod-php php-mysql  
    sudo systemctl restart apache2  
    
    • 验证:创建/var/www/html/info.php,内容为<?php phpinfo(); ?>,访问确认PHP运行正常。

二、高可用性配置

1. 负载均衡(流量分发)

  • 方案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,实现简单负载。

2. 数据库主从复制(故障转移)

  • 主服务器配置(假设主服务器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  
    

3. 集群管理与故障转移

  • 使用Pacemaker+Corosync(需至少3台服务器):
    1. 安装集群工具:
      sudo apt install pacemaker corosync pcs  
      sudo systemctl enable --now corosync pcsd  
      
    2. 配置集群节点(在所有节点执行):
      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  
      
    3. 将Apache和MariaDB服务加入集群:
      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  
      

4. 监控与安全

  • 监控工具
    • 安装Prometheus+Grafana监控服务器状态:
    • 使用Nagios监控服务进程:
  • 安全加固
    • 配置防火墙(ufw)限制端口:
      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  
      

三、验证集群功能

  1. 访问负载均衡器IP,确认流量分发到多台Apache服务器。
  2. 模拟主服务器故障(如关闭主节点),观察从节点是否自动接管数据库服务。

说明

  • 小规模集群可简化配置,仅使用Nginx负载均衡+MariaDB主从复制;
  • 大规模生产环境建议采用Pacemaker集群管理,结合云存储实现数据冗余。

0