在LNMP(Linux, Nginx, MySQL, PHP)集群中实现负载均衡通常涉及以下几个步骤:
upstream
指令定义一个后端服务器组,包含多个服务器的地址。location
指令和proxy_pass
指令将请求转发到后端服务器组。例如,基本的Nginx负载均衡配置如下:
http {
upstream backend {
server 192.168.1.1:8000;
server 192.168.1.2:8000;
server 192.168.1.3:8000;
}
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;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
例如,基本的PHP-FPM配置如下:
[www]
listen = /var/run/php-fpm/php-fpm.sock
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
例如,基本的主从复制配置如下:
主服务器配置:
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = your_database
从服务器配置:
server-id = 2
relay_log = /var/log/mysql/mysql-relay-bin.log
log_slave_updates = 1
read_only = 1
relay_log_index = /var/log/mysql/mysql-relay-bin.index
例如,使用Keepalived和LVS的配置示例:
LVS1的keepalived配置文件:
global_defs {
router_id Cluster1
}
vrrp_instance Nginx {
state MASTER
interface ens36
virtual_router_id 51
priority 255
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.20/24
}
}
virtual_server 192.168.1.20 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
real_server 192.168.1.14 80 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 192.168.1.15 80 {
weight 2
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
LVS2的keepalived配置文件:
global_defs {
router_id Cluster2
}
vrrp_instance Nginx {
state BACKUP
interface ens36
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.20/24
}
}
通过上述配置,可以实现LNMP集群的负载均衡和高可用性。根据实际需求,可以进一步调整和优化配置,例如增加更多的后端服务器、调整负载均衡算法等。