• nginx配置负载均衡--实战项目(适用于轮询、加权轮询、ip_hash)


    👨‍🎓博主简介

      🏅云计算领域优质创作者
      🏅华为云开发者社区专家博主
      🏅阿里云开发者社区专家博主
    💊交流社区:运维交流社区 欢迎大家的加入!
    🐋 希望大家多多支持,我们一起进步!😄
    🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗


    在这里插入图片描述

    两台服务器:

    服务器ip应用(谁用)
    172.16.10.10线上
    172.16.10.20研发

    业务需求:

    有两台服务器,一台供于线上使用(172.16.10.10),一台供于研发使用(172.16.10.20)

    如果线上的服务器挂了,需要将所有请求转移到研发的机器上,以确保线上服务正常使用;

    正常时间还是线上使用线上的服务器,研发用研发的服务器;只有在线上服务器挂了的时候才会使用备用的研发服务器;

    需求实现:

    使用nginx负载均衡来实现;ip_hash方式

    nginx服务器配置中添加负载:(设置负载均衡时同台服务器不同端口也可以,不同服务器,同端口也可以)

        upstream front_server{  #定义一个服务配置front_server
                ip_hash; #表示配置一个用户固定访问一台设备
                server 172.16.10.10:8080 weight=1; #第一台服务机器 设置权重值1
                server 172.16.10.20:8080 weight=2; #第二台服务机器 设置权重值2
        }
        server {
            listen       8099;	#如果有一个服务是本台的那么8080肯定会被占用,这时候我们可以改一个访问端口即可;
            server_name  localhost;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
              #  root   html;
              #  index  index.html index.htm;
    		proxy_pass http://front_server$request_uri;
    		proxy_http_version 1.1;
    		proxy_set_header Uparade $http_upgrade;
    		proxy_set_header Connection "Upgrade";
    		proxy_set_header Host $host;
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    配置完负载之后,报错保存退出,检测nginx配置语法是否有误;

    #检测nginx配置语法是否有误,前面路径可根据自己安装的目录来写
    /usr/local/nginx/sbin/nginx -t
    
    • 1
    • 2

    返回这个有ok,则nginx配置没有问题;如果有报错会显示几行报错的。

    在这里插入图片描述

    检测没问题之后,重新启动nginx服务

    #重启nginx服务,前面路径可根据自己安装的目录来写
    /usr/local/nginx/sbin/nginx -s reload
    
    #启动完成,检查是否启动(ps查看服务是否正常启动、netstat查看配置的端口是否正常启动)
    ps -ef | grep nginx
    netstat -anput | grep 8099
    
    #完成之后就可以页面访问了。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    配置好之后,这个只是配置了负载均衡,如果服务有后缀,那么自己在访问负载的ip:prot的时候在后面加上后缀即可。例如:172.16.10.10:8099/cs/index/

    访问页面,持续监控两台服务的日志输出,测试即可;

    负载均衡方式(常用的三种):

    轮询:两台服务器会随机发送请求;

    加权轮询:两台服务器也都会随机发送请求,但是会有一个权重值,谁的权重值高,接收的请求就会比另一个多;

    ip_hash:也是会有权重值,谁的权重值越高,请求就会在最高的权重值中,只有当权重值最高的那台服务器挂了,再会去找权重值第二的服务器;(1为最高权重值)

    • 轮询:
        upstream front_server{  #定义一个服务配置front_server
                server 172.16.10.10:8080; #第一台服务机器(两台服务器随机分配请求)
                server 172.16.10.20:8080; #第二台服务机器(两台服务器随机分配请求)
        }
    
    • 1
    • 2
    • 3
    • 4
    • 加权轮询:
        upstream front_server{  #定义一个服务配置front_server
                server 172.16.10.10:8080 weight=5; #第一台服务机器,权重值比较高,所以大部分的请求都会在10上;
                server 172.16.10.20:8080 weight=2; #第二台服务机器,权重值比较低,所以少部分的请求会在20上;
        }
    
    • 1
    • 2
    • 3
    • 4
    • ip_hash
        upstream front_server{  #定义一个服务配置front_server
                ip_hash; #表示配置一个用户固定访问一台设备
                server 172.16.10.10:8080 weight=1; #第一台服务机器 设置权重值1,则优先访问10服务器。
                server 172.16.10.20:8080 weight=2; #第二台服务机器 设置权重值2,10服务器挂了则访问20服务器。
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    相关文章

    文章标题文章连接
    【Linux】nginx基础篇 – 介绍及yum安装nginxhttps://liucy.blog.csdn.net/article/details/133928000
    【Linux】环境下部署Nginx服务 - 二进制部署方式https://liucy.blog.csdn.net/article/details/132145067
    nginx配置负载均衡–实战项目(适用于轮询、加权轮询、ip_hash)https://liucy.blog.csdn.net/article/details/133986013
    nginx快速部署一个网站服务 + 多域名 + 多端口https://liucy.blog.csdn.net/article/details/133986102
  • 相关阅读:
    Mac - 安装Nginx
    『现学现忘』Docker基础 — 16、Docker中的基本概念和底层原理
    Vue(十)——页面路由(2)
    快手如何玩转复杂场景下的说话人识别?| ASRU 2021
    HBase之异步Replication机制
    二、【react-redux】react-redux优化
    Redis5学习笔记之三:事务、锁和集成
    java中如何创建一个多线程类呢?
    Redis~01 缓存:如何利用读缓存提高系统性能?
    UGUI画布加载优化
  • 原文地址:https://blog.csdn.net/liu_chen_yang/article/details/133986013