首页/发现新知
视界 · 深度阅读

centos lamp如何做负载

在 CentOS 上搭建 LAMP(Linux + Apache + MySQL + PHP)并实现“负载”,通常有两种理解:

  1. 负载均衡(多台服务器分担访问压力)
  2. 单机 LAMP 性能调优(提高并发处理能力)

下面我分别说明,最常见的是 LAMP + 负载均衡架构。


一、LAMP 负载均衡常见架构

用户
 ↓
负载均衡器(Nginx / HAProxy / LVS)
 ↓ ↓ ↓
Web 服务器1  Web 服务器2  Web 服务器3(Apache + PHP)
 ↓
数据库(MySQL 主从 / 集群)

二、CentOS LAMP 负载均衡方案

方案 1:Nginx 做负载均衡(最常用)

1️⃣ 后端 Apache(LAMP)服务器

每台 CentOS 上安装:

yum install httpd php php-mysql mariadb-server -y
systemctl start httpd
systemctl enable httpd

确保每台 Web 服务器内容一致(可用 rsync / NFS / Git)。


2️⃣ 前端 Nginx 负载均衡服务器

yum install nginx -y

编辑配置:

vi /etc/nginx/nginx.conf
http {
    upstream lamp {
        server 192.168.1.11:80;
        server 192.168.1.12:80;
        server 192.168.1.13:80;
    }

    server {
        listen 80;
        location / {
            proxy_pass http://lamp;
        }
    }
}
systemctl start nginx

✅ 支持:

  • 轮询(默认)
  • ip_hash(会话保持)
  • weight(权重)

方案 2:HAProxy 负载均衡(更稳定)

yum install haproxy -y
vi /etc/haproxy/haproxy.cfg
frontend http
    bind *:80
    default_backend lamp

backend lamp
    balance roundrobin
    server web1 192.168.1.11:80
    server web2 192.168.1.12:80
systemctl start haproxy

三、Session 问题(非常重要)

LAMP 负载后,PHP Session 不能只存本地。

解决方式:

  1. Session 存 Redis(推荐)
yum install redis php-pecl-redis -y

php.ini:

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
  1. 或使用 ip_hash 绑定用户

四、数据库负载(MySQL)

推荐方式

  • MySQL 主从复制
  • 写主库,读从库
  • PHP 使用读写分离中间件(如 ProxySQL)

五、单机 LAMP 提高负载能力(不扩服务器)

如果你只是想让一台 CentOS 扛更多请求:

Apache 调优

vi /etc/httpd/conf/httpd.conf
  • 使用 prefork → worker / event
  • 增加 MaxClients
  • 开启 KeepAlive

PHP

  • 使用 OPcache
yum install php-opcache -y

数据库

  • 加索引
  • 调 innodb_buffer_pool_size

六、总结建议

场景 方案
小网站 单机 LAMP 调优
中大型 Nginx + 多台 Apache
高并发 HAProxy + Redis + MySQL 主从
云环境 可直接用 SLB / ALB

如果你愿意,可以告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • 访问量级别
  • 是否上云

我可以给你一套可直接用的配置方案。

读到这里,发现更多一点。探索更多内容 ↗