网站目录文件,网站如何做单项链接,怎么做网站注册系统,邢台网站建设服务商文章目录 1. 负载均衡2. 负载均衡策略1. 轮询策略2. 最小连接策略3. IP 哈希策略4. 哈希策略5. 加权轮询策略 1. 负载均衡
跨多个应用程序实例的负载平衡是一种常用技术#xff0c;用于优化资源利用率、最大化吞吐量、减少延迟和确保容错配置。使用 nginx 作为非常有效的HT… 文章目录 1. 负载均衡2. 负载均衡策略1. 轮询策略2. 最小连接策略3. IP 哈希策略4. 哈希策略5. 加权轮询策略 1. 负载均衡
跨多个应用程序实例的负载平衡是一种常用技术用于优化资源利用率、最大化吞吐量、减少延迟和确保容错配置。使用 nginx 作为非常有效的HTTP负载平衡器将流量分配到多个应用程序服务器可以提升Web应用程序的性能提高扩展性和可靠性。 使用 upstream定义一组服务 。
# 启动ruoyi-admin服务
[rootnginx-dev conf.d]# cd /home/apps
[rootnginx-dev apps]# java -jar ruoyi-admin.jar# 启动tomcat服务
[rootnginx-dev ~]# /home/apache-tomcat-8.5.81/bin/startup.sh# 在 /etc/nginx/conf.d文件夹下添加nginx配置文件8003.conf
[rootnginx-dev ~]# cd /etc/nginx/conf.d
[rootnginx-dev conf.d]# vi 8003.conf
[rootnginx-dev conf.d]# nginx -s reload8003.conf 配置文件内容
upstream ruoyi-apps {#不写采用轮循机制server localhost:8080;server localhost:8088;
}server {listen 8003;server_name ruoyi.loadbalance;location / {proxy_pass http://ruoyi-apps;}# 请求ie页面location /html/ie.html {root /some/path/static;}# 请求字体文件location ^~ /fonts/ {root /some/path/static;}# css|js|png|jpg|gif|ico 页面location ~ \.(css|js|png|jpg|gif|ico) {root /some/path/static;}
}2. 负载均衡策略
1. 轮询策略
upstream ruoyi-apps {#不写采用轮循机制server localhost:8080;server localhost:8088;
}轮询策略Round Robin默认的负载均衡策略将请求依次分配给每个后端服务器循环往复。
例如当请求 nginx 的 8003 端口时会将请求轮询转发给 tomcat 和 ruoyi-admin 两个后端服务器即第1次请求会访问8080端口第2次请求会访问8088端口循环往复。
当访问 nginx 的 8003 端口时 请求会进入 8088 端口的 ruoyi-admin 服务当填写完密码以后点击登录这次请求会进入 8080 端口的 tomcat 服务因此总是登录不成功。 2. 最小连接策略
最少连接策略Least Connections将请求分配给当前连接数最少的后端服务器以达到负载均衡的目的。
upstream backend {least_conn;server backend1.example.com;server backend2.example.com;
}请注意使用轮循机制或最少连接的负载平衡每个客户端的请求都可能分发到不同的服务器。不能保证同一客户端将始终定向到同一服务器。
3. IP 哈希策略
IP 哈希策略IP Hash根据客户端 IP 地址的哈希值来选择后端服务器同一个客户端的请求总是被分配到同一个后端服务器上。
upstream backend {ip_hash;server backend1.example.com;server backend2.example.com;
}此方法可确保来自同一客户端的请求将始终定向到同一服务器除非此服务器不可用。
4. 哈希策略
通用hash允许用户自定义hash的keykey可以是字符串、变量或组合。例如key可以是配对的源 IP 地址和端口也可以是 URI如以下示例所示
upstream backend {hash $request_uri consistent;server backend1.example.com;server backend2.example.com;
}请注意基于 IP 的哈希算法存在一个问题那就是当有一个上游服务器宕机或者扩容的时候会引发大量的路由变更进而引发连锁反应导致大量缓存失效等问题。
假设我们基于 key 来做 hash现在有 4 台上游服务器如果 hash 算法对 key 取模请求根据用户定义的哈希键值均匀分布在所有上游服务器之间。当有一台服务器宕机的时候就需要重新对 key 进行 hash最后会发现所有的对应关系全都失效了从而会引发缓存大范围失效。 consistent参数启用 ketama 一致哈希算法如果在上游组中添加或删除服务器只会重新映射部分键从而最大限度地减少缓存失效。 5. 加权轮询策略
加权轮询策略Weighted Round Robin根据后端服务器的权重来分配请求权重越高的服务器被分配到的请求越多。
upstream my-server {server performance.server weight3;server app1.server;server app2.server;
}如上所示每 5 个新请求将按如下方式分布在应用程序实例中3 个请求将定向到 performance.server一个请求将转到 app1.server另一个请求将转到 app2.server。