要实现高可用的Web集群,通常需要以下组件: 1. 多台Web服务器(应用服务器) 2. Nginx作为负载均衡器 3. 高可用机制(如Keepalived) 4. 共享存储或数据同步机制
在Nginx配置文件中(http块或单独配置文件中)添加:
upstream backend {
# 定义服务器组
server 192.168.1.101:80 weight=5; # 权重5
server 192.168.1.102:80;
server 192.168.1.103:80 backup; # 备用服务器
# 负载均衡算法
# least_conn; # 最少连接
# ip_hash; # IP哈希
}
server {
listen 80;
server_name example.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;
}
}
upstream backend {
server 192.168.1.101:80 max_fails=3 fail_timeout=30s;
server 192.168.1.102:80 max_fails=3 fail_timeout=30s;
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
check_http_send "HEAD / HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;
}
主服务器配置(/etc/keepalived/keepalived.conf
):
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100/24 dev eth0
}
}
备用服务器配置:
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100/24 dev eth0
}
}
upstream backend {
ip_hash;
server 192.168.1.101;
server 192.168.1.102;
}
upstream backend {
server 192.168.1.101;
server 192.168.1.102;
sticky cookie srv_id expires=1h domain=.example.com path=/;
}
Nginx状态监控:
location /nginx_status {
stub_status on;
access_log off;
allow 192.168.1.0/24;
deny all;
}
日志分析:
性能调优:
worker_processes auto;
worker_rlimit_nofile 100000;
events {
worker_connections 4000;
use epoll;
multi_accept on;
}
动态扩容:
安全加固:
缓存优化:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
location / {
proxy_cache my_cache;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
}
通过以上配置和方案,可以构建一个高可用、高性能的Web集群系统,能够应对大流量访问并保证服务的持续可用性。