综合架构-架构网站负载均衡

本文详细介绍了Nginx的负载均衡配置,包括轮询、权重分配、故障转移等策略,并展示了如何根据用户访问的URI信息进行动静分离和终端类型显示不同页面。通过集群服务器部署、配置文件分发、反向代理等步骤,实现压力分担和高可用性。同时,负载均衡在企业实践中能提升网站服务安全性,简化管理操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

负载均衡的概念说明

  • 什么是集群
    完成相同任务或工作的一组服务器
  • 什么是负载均衡
  1. 实现用户访问请求进行调度分配
  2. 实现用户访问压力分担
  • 什么是反向代理
    反向代理:外网 ---->(ech0外网)代理服务器(eth1内网) ------>公司网站服务器(内网)
    正向代理:

准备负载均衡的环境

集群服务器部署:
PS:集群中每台服务器配置一模一样
企业中:

  1. 先部署好一台LNMP服务器,上传代码信息
  2. 进行访问测试
  3. 批量部署多台web服务器
  4. 将nginx配置文件进行分发
  5. 将站点目录分发给所有主机

虚拟环境中:
将web01作为模板主机克隆
修改IP和主机名

利用手动方式实现负载均衡
手动修改host文件中的IP访问不同web主机
使用NFS实现共享存储,将web的数据目录都挂载在存储服务器上的一个目录

负载均衡服务器部署:

  1. 安装部署nginx软件
  2. 编写nginx负载服务配置文件
    ngx_http_upstream_module ---- upstream 负载均衡
    ngx_http_proxy_module ---- proxy_pass 反向代理
    vim blog.conf
upstream xcn{
      192.168.168.128:80;
      192.168.168.129:80;
      192.168.168.130:80;
}
#定义可以将请求分配给哪些web服务器
server{
    listen 80;
    server_name www.xcnyunyun.com;
    location / {
       proxy_pass http://xcn;
    }
}
#将请求分配给指定的集群

负载均衡配置模块详细说明

  • ngx_http_upstream_module ---- upstream 负载均衡
    • 实现不用调度功能
    1. 轮询分配请求(平均)
    2. 权重分配请求(能力越强责任越重)
  upstream xcn{
      192.168.168.128:80 weight=3;
      192.168.168.129:80 weight=2;
      192.168.168.130:80 weight=1;
}

weight=分配权重,数字最大权重越大

  1. 实现热备功能
  upstream xcn{
      192.168.168.128:80;
      192.168.168.129:80;
      192.168.168.130:80 backup;
}

当192.168.168.128和192.168.168.129都坏了,才会访问192.168.168.130

  1. 定义最大失败次数
  upstream xcn{
      192.168.168.128:80 max_fails=5;
      192.168.168.129:80;
      192.168.168.130:80 backup;
}

定义192.168.168.128访问失败5次后不再访问

  1. 定义失败之后重发的间隔时间
    fail_timeout=10s
    当失败5次后10s后会给失败服务器一次机会,再过10s会再给次机会
  • 实现不同调度算法
    1. rr轮询调度算法
    2. wrr权重调度算法
    3. ip_hash算法(出现反复登录的时候)
    4. least_conn 根据服务器连接数分配资源
  • ngx_http_proxy_module ---- proxy_pass 反向代理
  1. 访问不同的网站地址,不能显示不同的网站页面
    proxy_set_header Host $host;
server{
    listen 80;
    server_name www.xcnyunyun.com;
    location / {
       proxy_pass http://xcn;
       proxy_set_header Host $host;
    }
}
  1. 访问网站用户地址信息无法进行分析统计
server{
    listen 80;
    server_name www.xcnyunyun.com;
    location / {
       proxy_pass http://xcn;
       proxy_set_header Host $host;
       proxy_set_header X-Forwarded-For $remote_addr;
    }
}

proxy_set_header X-Forwarded-For $remote_addr;使日志中有用户地址信息,因为对于web服务器中客户端时负载均衡服务器,所以只会记录负载均衡服务器的IP

  1. 访问负载均衡会出现错误页面,影响用户体验
server{
    listen 80;
    server_name www.xcnyunyun.com;
    location / {
       proxy_pass http://xcn;
       proxy_set_header Host $host;
       proxy_set_header X-Forwarded-For $remote_addr;
       proxy_next_upstream error timeout http_404 http_502 http_403;
    }
}

proxy_next_upstream error timeout http_404 http_502 http_403;
当访问到错误界面的节点自动跳过,不展示

负载均衡企业实践应用

根据用户访问的uri信息进行负载均衡(动静分离)

  1. 架构环境规划
    分一台upload服务器、动态访问服务器、静态访问服务器
    在upload服务器上操作
    mkdir /html/www/upload 创建上传目录
    echo ‘upload’ > /html/www/upload/xcn.html 写上首页文件
    其他服务器同理
  2. 编写负载均衡配置文件
upstream upload{
      192.168.168.128:80;
}
upstream static{
      192.168.168.129:80;
}
upstream default{
      192.168.168.130:80;
}
server{
    listen 80;
    server_name www.xcnyunyun.com;
    location / {
       proxy_pass http://default;
    }
    location /upload {
       proxy_pass http://upload;
    }
    location /static {
       proxy_pass http://static;
    }    
}

总结:实现网站集群动静分离

  1. 提高网站服务安全性
  2. 管理操作工作简化
  3. 可以换分不同人员管理不同集群服务器

根据用户访问的终端信息显示不同页面

  1. 准备架构环境
    一个移动端集群、一个web端集群、一个default端集群
    移动端集群机器配置
    echo ‘iphone 192.168.168.128’ > /html/www/oldboy.html
    web端集群机器配置
    echo ‘web 192.168.168.129’ > /html/www/oldboy.html
    default端集群机器配置
    echo ‘default 192.168.168.130’ > /html/www/oldboy.html
  2. 配置负载均衡配置文件
upstream iphone{
      192.168.168.128:80;
}
upstream web{
      192.168.168.129:80;
}
upstream default{
      192.168.168.130:80;
}
server{
    listen 80;
    server_name www.xcnyunyun.com;
    location / {
       if ($http_user-agent ~* iphone){
           proxy_pass http://iphone;
       }
       if ($http_user-agent ~* Chrome){
           proxy_pass http://web;
       }       
       proxy_pass http://default;
    }   
}

$http_user-agent判断用户用什么终端的变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值