centos 负载均衡搭建

CentOS 作为一款稳定可靠的 Linux 发行版,常被用于企业级服务器的搭建,负载均衡作为提升服务可用性和处理能力的关键技术,在 CentOS 系统上的实现有着成熟的方案,本文将详细介绍如何在 CentOS 系统上搭建基于 Nginx 的负载均衡环境,包括环境准备、软件安装、配置优化及测试验证等步骤,帮助读者快速掌握负载均衡的搭建方法。

centos 负载均衡搭建

环境准备与系统初始化

在开始搭建负载均衡之前,需做好充分的环境准备,建议选择 CentOS 7 或更高版本,确保系统内核稳定且支持所需的功能,准备至少三台服务器:一台作为负载均衡器(LB),两台作为后端 Web 服务器(Node1 和 Node2),所有服务器的网络需互通,建议配置在同一内网段,LB 使用 192.168.1.10,Node1 使用 192.168.1.20,Node2 使用 192.168.1.30。

对每台服务器进行基础初始化,关闭防火墙和 SELinux,避免权限问题影响服务运行:

systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

更新系统软件包并安装必要的依赖工具:

yum update -y && yum install -y wget vim gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

确保所有服务器时间同步,可通过 NTP 服务或 ntpdate 命令校准时间,避免因时间差异导致日志或证书问题。

Nginx 的安装与编译

负载均衡器选择 Nginx,因其具有高性能、稳定性和丰富的负载均衡算法,Nginx 官方未提供 CentOS 的直接 RPM 包,需通过编译安装,在负载均衡器服务器上下载 Nginx 源码包:

wget http://nginx.org/download/nginx-1.22.1.tar.gz
tar -zxvf nginx-1.22.1.tar.gz && cd nginx-1.22.1

编译安装时,需指定安装路径及常用模块支持:

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream
make && make install

安装完成后,创建 Nginx 服务脚本并设置为开机自启:

vim /usr/lib/systemd/system/nginx.service

在脚本中配置 Nginx 的启动路径、进程管理等参数,然后执行:

systemctl daemon-reload && systemctl start nginx && systemctl enable nginx

访问负载均衡器的 IP 地址(http://192.168.1.10),若出现 Nginx 欢迎页面,则安装成功。

centos 负载均衡搭建

负载均衡配置详解

Nginx 的负载均衡配置核心在于 upstream 模块和 proxy_pass 指令,编辑 Nginx 主配置文件 /usr/local/nginx/conf/nginx.conf,在 http 块中定义后端服务器池及负载策略:

定义 upstream 服务器池

http 块内添加如下配置:

upstream backend_servers {
    server 192.168.1.20:80 weight=1;  # Node1,权重为1
    server 192.168.1.30:80 weight=2;  # Node2,权重为2
    # 可选参数:max_fails=3 fail_timeout=30s backup(备份服务器)
}
  • weight:权重值越高,分配的请求越多;
  • max_fails:最大失败次数,超过则标记为不可用;
  • backup:标记为备份服务器,仅在其他服务器不可用时启用。

配置虚拟主机与负载策略

server 块中配置代理转发,使用 proxy_pass 指向 upstream 池:

server {
    listen 80;
    server_name 192.168.1.10;
    location / {
        proxy_pass http://backend_servers;
        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:用于传递客户端真实 IP 和请求头,便于后端服务器识别访问来源。

负载均衡算法选择

Nginx 支持多种负载均衡算法,可通过修改 upstream 配置实现:

  • 轮询(默认):按顺序分配请求,适用于服务器性能相近的场景;
  • 加权轮询:根据权重分配,如上述配置中 Node2 的请求量是 Node1 的两倍;
  • IP 哈希:基于客户端 IP 计算哈希值,确保同一用户请求始终分配到同一服务器,适用于会话保持场景:
    upstream backend_servers {
        ip_hash;
        server 192.168.1.20:80;
        server 192.168.1.30:80;
    }
  • 最少连接:优先分配给活跃连接数最少的服务器,需添加 least_conn 指令:
    upstream backend_servers {
        least_conn;
        server 192.168.1.20:80;
        server 192.168.1.30:80;
    }

后端服务器配置与测试

为验证负载均衡效果,需在后端 Web 服务器(Node1 和 Node2)上部署测试页面,在 Node1 上执行:

echo "Node1 Server: 192.168.1.20" > /usr/share/nginx/html/index.html
systemctl start nginx && systemctl enable nginx

在 Node2 上执行:

echo "Node2 Server: 192.168.1.30" > /usr/share/nginx/html/index.html
systemctl start nginx && systemctl enable nginx

完成后,在负载均衡器上重新加载 Nginx 配置:

/usr/local/nginx/sbin/nginx -s reload

通过浏览器访问 http://192.168.1.10,多次刷新页面,应交替显示 Node1 和 Node2 的内容,若配置了加权轮询,Node2 的出现频率约为 Node1 的两倍,验证负载均衡生效。

可通过 ab 工具进行压力测试,检查服务器响应状态和负载分配情况:

centos 负载均衡搭建

yum install -y httpd-tools
ab -n 1000 -c 100 http://192.168.1.10/

观察测试结果中的请求分布情况,确保负载均衡策略按预期执行。

健康检查与高可用扩展

生产环境中,需配置健康检查以自动剔除故障服务器,在 upstream 配置中添加 max_failsfail_timeout 参数:

upstream backend_servers {
    server 192.168.1.20:80 weight=1 max_fails=3 fail_timeout=30s;
    server 192.168.1.30:80 weight=2 max_fails=3 fail_timeout=30s;
}

当某台服务器连续 3 次请求失败(30 秒内),Nginx 将暂时停止向其转发请求,直至恢复。

为进一步提升可用性,可结合 Keepalived 实现负载均衡器的高可用,部署两台负载均衡器(主备模式),通过虚拟 IP(VIP)对外提供服务,当主节点故障时,备用节点自动接管,具体步骤包括安装 Keepalived、配置 keepalived.conf 文件,并编写健康检查脚本,确保服务无缝切换。

相关问答 FAQs

Q1:负载均衡配置中,proxy_set_header 的作用是什么?
A1:proxy_set_header 用于将客户端请求的头部信息传递给后端服务器。

  • Host $host:保留原始请求的主机名,确保后端服务器获取正确的域名信息;
  • X-Real-IP $remote_addr:传递客户端真实 IP,避免后端服务器将负载均衡器 IP 认为是客户端 IP;
  • X-Forwarded-For $proxy_add_x_forwarded_for:记录请求的转发路径,便于追踪请求链路。

若未配置这些参数,后端服务器可能无法获取客户端的真实信息,导致日志记录或业务逻辑异常。

Q2:如何解决负载均衡下的会话丢失问题?
A2:会话丢失通常是由于客户端请求被分配到不同的后端服务器导致的,解决方法包括:

  1. IP 哈希算法:在 upstream 中使用 ip_hash,确保同一 IP 的请求始终访问同一服务器;
  2. 会话粘滞:通过 sticky 模块(需安装 nginx-sticky-module)基于 Cookie 实现会话绑定;
  3. 集中式会话存储:使用 Redis 或 Memcached 存储会话数据,所有后端服务器共享会话,避免依赖单台服务器。
    IP 哈希实现简单,但可能负载不均;集中式会话存储扩展性更好,适合大规模集群。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-12-20 18:27
下一篇 2025-12-20 18:46

相关推荐

  • 发版后cdn缓存更新_源站静态文件更新后,能否自动刷新CDN缓存?

    通常情况下,CDN缓存不会自动刷新,需要手动清除或设置缓存策略。但部分CDN服务商提供文件更改后自动刷新缓存的功能,需查看具体服务商的设置。

    2024-07-24
    0015
  • vmware centos修改ip后无法联网怎么办?

    在VMware虚拟化环境中,CentOS系统的IP地址配置是日常运维的基础操作,无论是为了满足网络服务需求,还是解决网络连接问题,掌握正确的修改方法至关重要,本文将详细介绍在VMware中为CentOS系统修改IP地址的多种方式,涵盖图形界面、命令行配置以及网络服务管理,帮助用户根据实际场景灵活选择操作方法,V……

    2025-12-12
    005
  • CentOS增加用户权限后如何验证是否生效?

    在CentOS系统中,管理用户权限是系统管理员的核心任务之一,确保系统安全与资源合理分配的关键,本文将详细介绍如何在CentOS中为用户增加权限,涵盖从基础用户创建到权限配置的完整流程,并结合实际场景说明不同权限模型的适用性,用户与用户组的基础概念在Linux系统中,权限管理基于用户(User)和用户组(Gro……

    2025-11-12
    004
  • centos如何修改默认启动内核版本?

    在CentOS系统中,内核作为操作系统的核心组件,直接影响系统的稳定性、性能及兼容性,默认情况下,CentOS安装后会加载多个内核版本,这些版本可能包括原始安装内核、后续更新的内核以及调试或故障恢复用的内核,了解和管理这些默认启动内核,对于系统优化、问题排查和安全维护至关重要,CentOS默认启动内核的机制Ce……

    2025-11-14
    005

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信