zoukankan      html  css  js  c++  java
  • Nginx实现负载均衡

    nginx.png

    上篇文章讲了nginx的常见模块,这边文章将为大家讲一下nginx的负载均衡。

    1.准备工作

    这里我用三台服务器来做演示:

    1. Nginx负载均衡:192.168.10.22:80
    2. Nginx Web1:192.168.10.23:80
    3. Nginx Web1:192.168.10.24:80
      为了方便演示我这里用默认的80端口

    为了验证效果我们写一个简单html主页:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>这是服务器1</title> 
    </head>
    <body>
        <center>
            <h1>这是服务器1</h1>
        </center>
    </body>
    </html>
    

    将以上代码复制两份命名为index.html ,注意将第二份<title>这是服务器1</title> 改成2。

    2.配置Web服务器

    首先将index.html文件上传到两台服务器上服务器上

    $ mkdir /data
    $ mkdir /data/www
    # 创建web目录
    

    创建nginx配置文件/etc/nginx/conf.d/web.conf
    Nginx的安装请参考上一篇文章

    $ vim /etc/nginx/conf.d/web.conf
    # 复制下面配置文件
    server  {
            listen  80;
            server_name     localhost; 
            location / {
            root /data/www;  # index.html文件的目录
            index   index.html;
            }
            error_page 404  /404.html;
            error_page 500 502 503 504 /50x.html;
            location = /50x.html {
            root /usr/share/nginx/html;
            }
    }
    # 检查配置文件
    $ nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    # 重新加载nginx配置
    $ nginx -s reload
    

    打开浏览器输入<ip地址>可以看到以下页面,说明web服务器配置成功。
    10.23.png
    第二台web配置和第一台一样

    3.配置nginx负载均衡

    首先我们创建配置文件/etc/nginx/conf.d/1.conf

    $ vim /etc/nginx/conf.d/1.conf
    # 写入下面的配置文件
    server  {
            listen  80;
            server_name     localhost;
            location / {
            proxy_pass http://www;
            # 这里的www是自己设置的负载均衡池的名称
            }
            error_page 404  /404.html;
            error_page 500 502 503 504 /50x.html;
            location = /50x.html {
            root /usr/share/nginx/html;
            }
    }
    # 负载均衡池,这里我用的轮询模式
    upstream  www {
         server    192.168.10.23;
         server    192.168.10.24;
    }
    # 检查nginx配置文件
    $ nignx -t
    $ nginx -s reload
    

    在浏览器里输入<192.168.10.22>我们可以看到页面正常显示。
    1.png
    我们再次刷新一下页面:
    image.png
    可以看到访问顺序是:服务器1>服务器2>服务器1>服务器2,说明负载均衡配置成功。

    3.Nginx负载均衡模式

    1.轮询
    轮询方式是Nginx负载默认的方式,顾名思义,所有请求都按照时间顺序分配到不同的服务上,如果服务Down掉,可以自动剔除,如下配置后轮训10.23服务和10.24服务。

    upstream  www {
         server    192.168.10.23;
         server    192.168.10.24;
    }
    

    2.权重
    指定每个服务的权重比例,weight和访问比率成正比,通常用于后端服务机器性能不统一,将性能好的分配权重高来发挥服务器最大性能,如下配置后10.23服务的访问比率会是10.24服务的二倍。

    upstream  dalaoyang-server {
         server    192.168.10.23  weight=1;
         server    192.168.10.24  weight=2;
    }
    

    3.iphash
    每个请求都根据访问ip的hash结果分配,经过这样的处理,每个访客固定访问一个后端服务,如下配置(ip_hash可以和weight配合使用)。

    upstream  dalaoyang-server {
           ip_hash; 
           server    192.168.10.23 weight=1;
           server    192.168.10.24 weight=2;
    }
    

    4.最少连接
    将请求分配到连接数最少的服务上。

    upstream  dalaoyang-server {
           least_conn;
           server    192.168.10.23 weight=1;
           server    192.168.10.24 weight=2;
    }
    

    5.fair
    按后端服务器的响应时间来分配请求,响应时间短的优先分配。

    upstream  dalaoyang-server {
           server    192.168.10.23 weight=1;
           server    192.168.10.24 weight=2;
           fair;
    }
    
  • 相关阅读:
    玩游戏 学Flex布局
    解决:父级元素不能被子元素内容撑开的解决办法,父级元素没有高度的解决办法
    Flex 项目属性:flex 布局示例
    display: flex; 布局
    box-sizing 的作用
    <a>标签里面直接嵌套图片,<img>下面出现一小段空白的原因
    ucore操作系统实验学习笔记2
    ucore 操作系统学习笔记1 -- 环境搭建
    LeetCode题解之 Assign Cookies
    LeetCode题解之Lemonade Change
  • 原文地址:https://www.cnblogs.com/kylebao/p/13189946.html
Copyright © 2011-2022 走看看