ubuntu

Ubuntu LNMP如何进行负载均衡

小樊
42
2025-10-31 02:04:39
栏目: 云计算

Ubuntu LNMP实现负载均衡的完整步骤

一、基础环境准备

在开始配置前,需确保所有服务器(负载均衡器+后端服务器)均满足以下条件:

二、配置Nginx作为负载均衡器

Nginx是LNMP架构中最常用的负载均衡器,通过upstream模块定义后端服务器组,并将请求分发至各服务器。

1. 安装Nginx(若未安装)

sudo apt update
sudo apt install nginx

2. 编辑Nginx负载均衡配置

打开Nginx配置文件(通常为/etc/nginx/sites-available/default/etc/nginx/nginx.conf),在http块中添加upstream模块,定义后端服务器组:

http {
    # 定义后端服务器组(示例为3台服务器)
    upstream backend {
        server 192.168.1.101:80;  # 后端服务器1
        server 192.168.1.102:80;  # 后端服务器2
        server 192.168.1.103:80;  # 后端服务器3
    }

    # 配置负载均衡服务器
    server {
        listen 80;
        server_name yourdomain.com;  # 替换为你的域名或IP

        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;
        }
    }
}

3. 选择负载均衡算法(可选)

Nginx支持多种负载均衡算法,默认为轮询(Round Robin)(按顺序分发请求)。可根据业务需求调整:

4. 测试并重启Nginx

保存配置文件后,测试语法是否正确:

sudo nginx -t

若输出syntax is ok,则重启Nginx使配置生效:

sudo systemctl restart nginx

三、配置后端服务器(PHP-FPM)

若后端服务器运行PHP应用(如WordPress、Laravel),需确保PHP-FPM已正确配置,能接收Nginx转发的请求。

1. 安装PHP-FPM

sudo apt install php-fpm php-mysql

2. 编辑PHP-FPM配置

打开PHP-FPM池配置文件(通常为/etc/php/8.1/fpm/pool.d/www.conf,版本号根据实际安装调整):

[www]
listen = /run/php/php8.1-fpm.sock  # 监听Unix套接字(推荐)或端口(如127.0.0.1:9000)
listen.owner = www-data
listen.group = www-data
pm = dynamic  # 动态调整进程数
pm.max_children = 10  # 最大子进程数(根据服务器内存调整)
pm.start_servers = 2  # 启动时的子进程数
pm.min_spare_servers = 1  # 最小空闲子进程数
pm.max_spare_servers = 3  # 最大空闲子进程数

3. 重启PHP-FPM

sudo systemctl restart php8.1-fpm

四、配置MySQL主从复制(可选,数据库层面负载均衡)

若应用需要处理大量数据库请求,可通过MySQL主从复制实现读写分离,减轻主库压力。

1. 主服务器配置

编辑主服务器MySQL配置文件(/etc/mysql/mysql.conf.d/mysqld.cnf):

[mysqld]
server-id = 1  # 主库ID(唯一)
log_bin = /var/log/mysql/mysql-bin.log  # 开启二进制日志
binlog_do_db = your_database  # 需要同步的数据库名

重启MySQL:

sudo systemctl restart mysql

创建复制用户并授权:

CREATE USER 'replicator'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;

查看主库二进制日志位置(用于从库配置):

SHOW MASTER STATUS;

记录File(如mysql-bin.000001)和Position(如154)的值。

2. 从服务器配置

编辑从服务器MySQL配置文件:

[mysqld]
server-id = 2  # 从库ID(唯一,不能与主库重复)
relay_log = /var/log/mysql/mysql-relay-bin.log  # 开启中继日志
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = your_database
read_only = 1  # 设置为只读(防止误操作)

重启MySQL:

sudo systemctl restart mysql

配置从库连接主库:

CHANGE MASTER TO
MASTER_HOST='主库IP',
MASTER_USER='replicator',
MASTER_PASSWORD='your_password',
MASTER_LOG_FILE='mysql-bin.000001',  # 主库记录的File值
MASTER_LOG_POS=154;  # 主库记录的Position值
START SLAVE;  # 启动复制

检查复制状态(Slave_IO_RunningSlave_SQL_Running应为Yes):

SHOW SLAVE STATUS\G;

五、测试负载均衡

通过浏览器或命令行工具(如curl)访问负载均衡器的IP或域名,观察请求是否被分发至不同后端服务器:

curl http://yourdomain.com

若后端服务器配置了不同的页面内容(如index.php中输出服务器IP),可通过多次请求确认请求被分发至不同服务器。

六、高级优化(可选)

0
看了该问题的人还看了