欢迎来到小居数码网-一家分享数码知识,生活小常识的网站,希望可以帮助到您。

当前位置:生活小常识 > 数码知识 >
优质

nginx负载均衡的三种方式(nginx实现负载均衡原理)

数码知识

孙宽奕优秀作者

原创内容 来源:小居数码网 时间:2024-08-08 16:53:01 阅读() 收藏:22 分享:61

导读:您正在阅读的是关于【数码知识】的问题,本文由科普作家协会,生活小能手,著名生活达人等整理监督编写。本文有1236个文字,大小约为5KB,预计阅读时间4分钟。

系统的扩展可以分为纵向扩展和横向扩展。

nginx实现负载均衡原理

纵向扩展是从单机的角度出发,通过增加系统的硬件处理能力来提升服务器的处理能力

横向扩展是通过添加机器来满足大型网站服务的处理能力。

这里面涉及到两个重要的角色分别是"应用集群"和"负载均衡器"。

应用集群:将同一应用部署到多台机器上,组成处理集群,接收负载均衡设备分发的请求,进行处理并返回响应的数据。

负载均衡器:将用户访问的请求根据对应的负载均衡算法,分发到集群中的一台服务器进行处理。

负载均衡的作用

1、解决服务器的高并发压力,提高应用程序的处理性能。

2、提供故障转移,实现高可用。

3、通过添加或减少服务器数量,增强网站的可扩展性。

4、在负载均衡器上进行过滤,可以提高系统的安全性。

负载均衡常用的处理方式

方式一:用户手动选择

这种方式比较原始,只要实现的方式就是在网站主页上面提供不同线路、不同服务器链接方式,让用户来选择自己访问的具体服务器,来实现负载均衡。

方式二:DNS轮询方式

DNS

域名系统(服务)协议(DNS)是一种分布式网络目录服务,主要用于域名与 IP 地址的相互转换。

大多域名注册商都支持对同一个主机名添加多条A记录,这就是DNS轮询,DNS服务器将解析请求按照A记录的顺序,随机分配到不同的IP上,这样就能完成简单的负载均衡。DNS轮询的成本非常低,在一些不重要的服务器,被经常使用。

如下是我们为某一个域名添加的IP地址,用2台服务器来做负载均衡。

验证:

ping /gnosek/nginx-upstream-fair
  1. 将下载的文件上传到服务器并进行解压缩
unzip nginx-upstream-fair-master.zip
  1. 重命名资源
mv nginx-upstream-fair-master fair
  1. 使用./configure命令将资源添加到Nginx模块中
./configure --add-module=/root/fair
  1. 编译
make

编译可能会出现如下错误,ngx_http_upstream_srv_conf_t结构中缺少default_port

解决方案:

在Nginx的源码中 src/http/ngx_http_upstream.h,找到ngx_http_upstream_srv_conf_s,在模块中添加添加default_port属性

in_port_t      default_port

然后再进行make.

  1. 更新Nginx

​ 6.1 将sbin目录下的nginx进行备份

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginxold

​ 6.2 将安装目录下的objs中的nginx拷贝到sbin目录

cd objscp nginx /usr/local/nginx/sbin

​ 6.3 更新Nginx

cd ../make upgrade
  1. 编译测试使用Nginx

上面介绍了Nginx常用的负载均衡的策略,有人说是5种,是把轮询和加权轮询归为一种,也有人说是6种。那么在咱们以后的开发中到底使用哪种,这个需要根据实际项目的应用场景来决定的。

负载均衡案例

案例一:对所有请求实现一般轮询规则的负载均衡

upstream backend{server 192.168.200.146:9001;server 192.168.200.146:9002;server 192.168.200.146:9003;}server {listen 8083;server_name localhost;location /{proxy_pass http://backend;}}

案例二:对所有请求实现加权轮询规则的负载均衡

upstream backend{server 192.168.200.146:9001 weight=7;server 192.168.200.146:9002 weight=5;server 192.168.200.146:9003 weight=3;}server {listen 8083;server_name localhost;location /{proxy_pass http://backend;}}

案例三:对特定资源实现负载均衡

upstream videobackend{server 192.168.200.146:9001;server 192.168.200.146:9002;}upstream filebackend{server 192.168.200.146:9003;server 192.168.200.146:9004;}server {listen 8084;server_name localhost;location /video/ {proxy_pass http://videobackend;}location /file/ {proxy_pass http://filebackend;}}

案例四:对不同域名实现负载均衡

upstream itcastbackend{server 192.168.200.146:9001;server 192.168.200.146:9002;}upstream itheimabackend{server 192.168.200.146:9003;server 192.168.200.146:9004;}server {listen8085;server_name ;location / {proxy_pass http://itcastbackend;}}server {listen8086;server_name ;location / {proxy_pass http://itheimabackend;}}

案例五:实现带有URL重写的负载均衡

upstream backend{server 192.168.200.146:9001;server 192.168.200.146:9002;server 192.168.200.146:9003;}server {listen80;server_name localhost;location /file/ {rewrite ^(/file/.*) /server/$1 last;}location / {proxy_pass http://backend;}}

上面就是小居数码小编今天给大家介绍的关于(nginx实现负载均衡原理)的全部内容,希望可以帮助到你,想了解更多关于数码知识的问题,欢迎关注我们,并收藏,转发,分享。

94%的朋友还想知道的:

(436)个朋友认为回复得到帮助。

部分文章信息来源于以及网友投稿,转载请说明出处。

本文标题:nginx负载均衡的三种方式(nginx实现负载均衡原理):http://sjzlt.cn/shuma/153797.html

猜你喜欢