nginx反向代理和负载均衡

集群
一组相互独立的服务器利用高速通信网络组成的一个整体,可以改变过滤引导数据。
分类
计算机集群架构按功能和结构可以分成以下几类:
负载均衡集群 LBC或者LB ,分摊,保持,应用 (工作常用)
高可用性集群 HAC 防单点 (工作常用)
高性能计算集群 HPC
网格计算集群
负载均衡集群
负载均衡集群提供了一种廉价,有效,透明的方法,来扩展网络设备和服务器的负载,带宽和吞吐量,同时加强了网络数据处理能力,提高了网络的灵活性和可用性。
服务器向外部提供服务,当一台服务器承受过多的压力,那么服务可能会产生服务不可用的情况,所以,我们应该让一台服务器承受的压力在合理范围内,如果一台服务器无法满足需求,那么可以横向扩展使用多台服务器分摊这些压力,这些服务器作为一个整体对外提供服务,并且分摊压力时,那么我们可以称这些服务器为"负载均衡集群"。
负载均衡器
(1)LVS:基于OSI七层模型中的第四层(传输层)
LVS通过转发数据包(修改mac地址或者IP地址)来实现负载均衡,对于用户数据无任何修改,效率高,支持大并发,功能少。
过滤不了用户的URL,不论用户发什么URL,都会转给后方web服务器,所以web服务器内容必须一致。
(2)nginx:nginx本身没有负载均衡功能,他是通过反向代理来实现的负载均衡
http中的URL请求基于OSI七层模型中的第七层,效率低,支持并发相对LVS来说低,实现功能多。
代替用户发出请求(代理);
能过滤用户的URL,可以分业务,后方web服务器内容可以不一样。
(3)hoproxy:四七都有
实践Nginx负载均衡
1.准备3台安装已经完成并且正常启动的nginx的服务器,1台作负载均衡器。2台作web服务器。
2.两台web服务器配置输出内容设置为不同内容,方便查看结果。
3.编写负载均衡器配置文件如下:

worker_processes  1;
error_log logs/error.log;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream Web_pools {                          # 服务器池 web_pools服务器池的名字
        server 192.168.200.216 weight=2;         #server是一个节点 没有单点问题除非全坏
        server 192.168.200.214 weight=1;          #weight权重 backup备份 down下线用于维护
                       }

 server {
           listen 80;
           server_name _;
           location / {
                    proxy_pass http://Web_pools;   #proxy_pass反向代理的命令
                       }
            }
}


lsaf -i:80 查看端口被什么占用

4.upstream模块
模块内参数
在这里插入图片描述upstream中的server也是拥有健康检查的,不存在单点问题,除非全坏
调度算法
(1) rr轮询
(2)wrr权重轮询
(3)ip_hash
让同一个IP地址永远负载给同一个web节点,写在负载均衡池。但是不能真正起负载均衡的作用。某点服务器压力会加大
(4)fair(动态调度算法)
(5)least_conn
least_conn算法会根据后端节点的连接数来决定分配情况,哪个机器连接数少就分发。
(6)url_hash算法(web缓存节点)
(7)一致性hash算法
真正解决客户验证登录生成随即图片的问题

http_proxy代理模块知识及相关参数
http proxy模块参数
在这里插入图片描述在这里插入图片描述 在Web服务器通过tail -5 /usr/local/nginx/logs/access.log 查看访问日志看到用户都是用过网关IP进行访问,不能显示用户的真实IP(nginx的反向代理)

  proxy_set_header host $host;  

#在代理向后端服务器发送的http请求头中加入host字段信息,用于当后端服务器配置有多个虚拟主机时,可以识别代理的是哪个虚拟主机。这是节点服务器多虚拟主机时的关键配置。

 proxy_set_header X-Forwarded-For $remote_addr;

#这是反向代理时,节点服务器获取用户真实IP的必要功能配置

可直接include使用

cat proxy.conf
proxy_set_header host $host;
proxy_set_header x-forwarded-for $remote_addr;
proxy_connect_timeout 60;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

基于URI路径,user_agent,扩展名规则
1.URL路径实践

用户通过nginx反向代理从后方取数据,数据是图片和文字类型,而且图片和文字不在一个Web服务器内。
nginx配置文件设置,如下:

worker_processes  1;
error_log logs/error.log;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream default_pools {
        server 192.168.200.216 weight=1;
    }
    upstream static_pools {
        server 192.168.200.214 weight=1;
    }
    server {
           listen 80;
           server_name _;
           location / {
                    proxy_pass http://default_pools;
           }
           location /static/{
                    proxy_pass http://static_pools;
       }
    }
}

两个web服务器。其中216服务器的主页文件为

<html>
216 216 216
<img src="http://192.168.200.214/tu.jpg">
</html>

这样用户浏览器中就会显示图片与文字的页面。
2.根据客户端的设备(user_agent)转发实践需求

location / {
if ($http_user_agent ~* "android")
{
proxy_pass http://android_pools;    #这里是android服务器池
}
if ($http_user_agent ~* "iphone")
{
proxy_pass http://iphone_pools;    #这里是iphone服务器池
}
proxy_pass http://pc_pools;     #这里是默认的pc服务器池
include extra/proxy.conf;
}

3.根据文件扩展名实现代理转发

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css|js)$ {

proxy_pass http://static_pools;
include proxy.conf;

}

location ~ .*\.(php|php3|php5)$ {

proxy_pass http://dynamic_pools;
include proxy.conf

}

监测Nginx代理下面节点的健康状态
淘宝技术团队开发了一个Tengine(Nginx的分支)模块Nginx_upstream_check_module,用于提供主动式后端服务器健康检查。通过它可以检测后端realserver的健康状态,如果后端realserver不可用,则所有的请求就不会转发到该节点上。
Tengine原生支持这个模块,而Nginx则需要通过打补丁的方式将该模块添加到Nginx中。补丁下载地址:https://github.com/yaoweibin/nginx_upstream_check_module。

(个人理解,如若错误请谅解指教)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值