在 CentOS 上做 Apache 集群,通常有三种常见目标与方案,我按“从简单到生产级”给你讲清楚,并给出示例配置。
适合:多台 Web/应用服务器,统一入口
Client
|
Load Balancer (Apache)
|---> Web1 (Apache/PHP)
|---> Web2 (Apache/PHP)
安装 Apache:
yum install httpd -y
启用模块:
httpd -M | grep proxy
确保有以下模块:
proxyproxy_httpproxy_balancerlbmethod_byrequests启用:
vim /etc/httpd/conf.modules.d/00-proxy.conf
取消注释:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
vim /etc/httpd/conf.d/balancer.conf
<VirtualHost *:80>
ServerName example.com
<Proxy "balancer://mycluster">
BalancerMember "http://192.168.1.11:80"
BalancerMember "http://192.168.1.12:80"
</Proxy>
ProxyPass "/" "balancer://mycluster/"
ProxyPassReverse "/" "balancer://mycluster/"
</VirtualHost>
启动:
systemctl start httpd
systemctl enable httpd
防止负载均衡单点故障
VIP (192.168.1.100)
|-- Master LB
|-- Backup LB
yum install keepalived -y
vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100
}
}
Backup 只需改:
state BACKUP
priority 100
如果是纯静态网站,可以:
如果是 PHP 集群:
PHP 示例(Redis):
session.save_handler = redis
session.save_path = "tcp://192.168.1.20:6379"
Client
↓
Keepalived VIP
↓
Apache LB (2台)
↓
Apache Web (多台)
↓
Redis / MySQL / NFS
如果你愿意,可以告诉我:
我可以直接给你一套 可复制的完整配置。