NGINX 负载平衡

admin 2024-03-22 697 阅读 0评论

什么是负载均衡?

负载均衡是一种策略,涉及将工作任务或网络流量均匀地分配到多个计算资源或服务器上,以实现更高效的整体性能。其核心目的在于确保所有资源得到充分利用,同时优化响应时间,防止单个节点过载而其他节点闲置。

负载均衡的重要性

随着应用程序的发布和普及,用户数量可能会迅速增加。这种增长往往伴随着对服务器资源需求的激增,可能导致服务器过载甚至瘫痪。特别是在处理大量并发请求时,如果没有适当的负载均衡机制,服务器可能无法有效地处理这些请求。

因此,负载均衡器的引入变得至关重要。它不仅可以帮助分析和优化系统性能,还能有效地分配请求,确保每个服务器都能承受适量的负载,从而避免单点故障,提升整体的系统可用性和可扩展性。

负载均衡方案

实施负载均衡

在使用 Docker 的场景中,为了实现负载均衡,我精心配置了 docker-compose.yml 文件。

接下来,我将详细展示我的 Docker 配置:

version: '3'

services:
  php1:
    build:
      context: .
      dockerfile: php/Dockerfile
    image: php
    container_name: php1
    restart: unless-stopped
    volumes:
      - ./php:/var/www/app/
    environment:
      - SERVICE_ID=1
      - PORT=8000
    networks:
      - app_net

  php2:
    build:
      context: .
      dockerfile: php/Dockerfile
    image: php
    container_name: php2
    restart: unless-stopped
    volumes:
      - ./php:/var/www/app/
    environment:
      - SERVICE_ID=2
      - PORT=8001
    networks:
      - app_net

  nginx-php:
    build:
      context: .
      dockerfile: nginx/Dockerfile
    image: nginx:alpine
    container_name: nginx-php
    restart: unless-stopped
    volumes:
      - ./php:/var/www/app/
      - ./nginx/conf/:/etc/nginx/conf.d/
    networks:
      - app_net
    ports:
      - 80:80
    depends_on:
      - php1

networks:
   app_net:
    driver: bridge

在此配置中,我利用了两个 PHP 容器来全面测试 Nginx 的负载均衡能力。

以下是我的 php.Dockerfile 配置详情:
FROM php:8.1-cli

COPY . /var/www/app/start.sh

WORKDIR /var/www/app

RUN chmod +x ./start.shchmod +x ./start.sh

CMD ["sh""./start.sh"]
以下是我的 start.sh 配置详情:
#!/bin/bash

set -e;

php -S 0.0.0.0:$PORT ./routes.php;

那么这个配置最重要的就是nginx

以下是我的 Nginx.Dockerfile 配置详情:
FROM nginx:1.23.1-alpine

RUN rm /etc/nginx/conf.d/default.confrm /etc/nginx/conf.d/default.conf
以下是我的 default.conf 配置详情:
# docker-basic-lb/proxy/default.conf.conf

upstream gateway {
  server php1:8000;
  server php2:8001;
}

server {
  location / {
    proxy_pass http://gateway;
  }
}

所以结构就变成了这样:

C:.
├───nginx
│   └───conf
└───php

测试结果

首次命中/产品端点

第二次点击/产品端点

通过测试结果,我们可以观察到,当第一台服务器处于繁忙状态时,请求会被智能地重定向到负载较轻的服务器上。这种负载均衡机制确保了请求不会仅仅堆积在一台服务器上,从而提高了系统的整体响应能力和稳定性。这种设计不仅优化了用户体验,还降低了单点故障的风险,为产品提供了更加可靠的服务。

喜欢就支持以下吧
点赞 0

发表评论

快捷回复: 表情:
aoman baiyan bishi bizui cahan ciya dabing daku deyi doge fadai fanu fendou ganga guzhang haixiu hanxiao zuohengheng zhuakuang zhouma zhemo zhayanjian zaijian yun youhengheng yiwen yinxian xu xieyanxiao xiaoku xiaojiujie xia wunai wozuimei weixiao weiqu tuosai tu touxiao tiaopi shui se saorao qiudale qinqin qiaoda piezui penxue nanguo liulei liuhan lenghan leiben kun kuaikule ku koubi kelian keai jingya jingxi jingkong jie huaixiao haqian aini OK qiang quantou shengli woshou gouyin baoquan aixin bangbangtang xiaoyanger xigua hexie pijiu lanqiu juhua hecai haobang caidao baojin chi dan kulou shuai shouqiang yangtuo youling
提交
评论列表 (有 0 条评论, 697人围观)

最近发表

热门文章

最新留言

热门推荐

标签列表