• nginx 负载均衡


    前言

    上一篇讲了nginx的入门配置及命令,今天我们说一下nginx的负载均衡

     nginx常用命令
    1. ./nginx -s stop#停止nginx
    2. ./nginx-s quit#安全退出
    3. ./nginx -s reload#修改了文件之后重新加载该程序文件
    4. ps aux|grep nginx#查看nginx进程
    5. sbin/nginx -c /conf/nginx.vonf #指定配置文件启动

    配置负载均衡

    七层负载均衡

    nginx的负载均衡语法
    1. http {
    2.   upstream [你的负载均衡机制名称,随便设置一个就好] {
    3.  server [ip地址]:[端口值];
    4.  server [ip地址]:[端口值];
    5.  server [ip地址]:[端口值];
    6.  server [ip地址]:[端口值];
    7. }
    8. server {
    9.  listen [nginx监听端口];
    10.  server_name [head中的host对应的值]
    11.  location / {
    12.    proxy_pass http:// [你的负载均衡机制名称,对应上面upstream的值];
    13.         }
    14.   }
    15. }
    nginx的负载均衡策略

    1.轮询(Round Robin默认)

    轮询是最常见的一种负载均衡策略。Nginx默认使用轮询策略,将请求按照顺序分配到每个服务器,当请求到达最后一个服务器后,再从第一个服务器继续轮询。,如果后端服务器挂了,则自动剔除。

    1. upstream backend {
    2.   server [ip地址]:[端口值];
    3.  server [ip地址]:[端口值];
    4.  server [ip地址]:[端口值];
    5.  server [ip地址]:[端口值];
    6. }
    7. server {
    8.   listen 80;
    9.   server_name example.com;
    10.   location / {
    11.       proxy_pass http://backend;
    12.   }
    13. }

    2.权重(Weighted Load Balancing)

    指定轮询的频率,weight和访问率成正比,用于后端服务器性能不均匀的情况

    1. upstream backend {
    2.   server [ip地址]:[端口值] weight=3;
    3.  server [ip地址]:[端口值] weight=2;
    4.  server [ip地址]:[端口值] weight=1;
    5. }
    6. server {
    7.   listen 80;
    8.   server_name example.com;
    9.   location / {
    10.       proxy_pass http://backend;
    11.   }
    12. }

    3 .IP Hash

    IP Hash是一种漂亮的负载均衡策略,具有Session保持的优点。算法的基本思路是通过对客户端的IP地址取Hash值,将此Hash值与服务器列表中的IP地址的Hash值进行比较,找到具有匹配Hash值的服务器。这样相同IP的请求总是被转发到同一台后端服务器处理,保证Session信息在同一台服务器上处理。

    1. upstream backend {
    2.   ip_hash; #使用IP hash策略
    3.   server [ip地址]:[端口值];
    4.  server [ip地址]:[端口值];
    5.  server [ip地址]:[端口值];
    6.  server [ip地址]:[端口值];
    7. }
    8. server {
    9.   listen 80;
    10.   server_name example.com;
    11.   location / {
    12.       proxy_pass http://backend;
    13.   }
    14. }

    4. 最少连接(Least Connections)

    nginx会尽量不让负载繁忙的应用服务器上负载过多的请求,相反的,会把新的请求发送到比较不繁忙的服务器。

    1. upstream backend {
    2.   least_conn; #使用Least Connections策略
    3.   server [ip地址]:[端口值];
    4.  server [ip地址]:[端口值];
    5.  server [ip地址]:[端口值];
    6.  server [ip地址]:[端口值];
    7. }
    8. server {
    9.   listen 80;
    10.   server_name example.com;
    11.   location / {
    12.       proxy_pass http://backend;
    13.   }
    14. }

    5. 随机(Random)

    Random会将请求随机发送到后端服务器上,这种策略比较简单,但是不保证对后端服务器的负载均衡性

    1. upstream backend {
    2.   random; #使用Random策略
    3.   server [ip地址]:[端口值];
    4.  server [ip地址]:[端口值];
    5.  server [ip地址]:[端口值];
    6.  server [ip地址]:[端口值];
    7. }
    8. server {
    9.   listen 80;
    10.   server_name example.com;
    11.   location / {
    12.       proxy_pass http://backend;
    13.   }
    14. }

    6. URL Hash

    URL Hash会根据请求的URL的Hash值来将请求发送到后端服务器。相同URL的请求总是被转发到同一台后端服务器处理,从而保证Session信息在同一台服务器上处理。

    1. upstream backend {
    2.   hash $request_uri; #使用URL Hash策略
    3.   server [ip地址]:[端口值];
    4.  server [ip地址]:[端口值];
    5.  server [ip地址]:[端口值];
    6.  server [ip地址]:[端口值];
    7. }
    8. server {
    9.   listen 80;
    10.   server_name example.com;
    11.   location / {
    12.       proxy_pass http://backend;
    13.   }
    14. }
  • 相关阅读:
    【知识回顾】Java常用类库-Java Runtime
    微信小程序开发(二)
    Linux下分布式端口扫描工具DNmap下载安装及使用、流量抓取(更新ing)
    【幂等幂等幂等,重要的知识说三遍!】常见的九种解决方案汇总
    Go 接口和多态
    Centos 8 安装 nginx
    Doris failed to initialize storage reader. tablet=106408, res=[NOT_IMPLEMENTED_ERROR]to be implemented
    【无标题】
    Qt时间和定时器
    编码技巧 --- 使用dynamic简化反射
  • 原文地址:https://blog.csdn.net/m0_61682705/article/details/133239445