nginx的负载均衡
nginx负载均衡概述
Web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台WEB服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中,
实现负载的分发。那么会大大提升系统的吞吐率、请求性能、高容灾
Nginx要实现负载均衡需要用到proxy_pass代理模块配置
Nginx负载均衡与Nginx代理不同地方在于
Nginx代理仅代理一台服务器,而Nginx负载均衡则是将客户端请求代理转发至一组upstream虚拟服务池
Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用。
实验
1 . 关闭防火墙
iptables -F sed -i 's/enforcing/disabled/' /etc/selinux/config systemctl stop firewalld systemctl disable firewalld
2 . 准备服务器
nginx1 192.168.13.121 # 作为nginx负载均衡器 只要我访问这个负载均衡器,查看页面的结果,到底是来自于 nginx2 192.168.13.24 # web服务,提供一个页面 nginx3 192.168.13.79 # web服务,提供一个页面
3 . 配置服务器
先配置两个nginx web页面
192.168.13.24 : # 准备一个 index.html 写入 你好,我是192.168.13.24机器 vim /opt/nginx112/conf/nginx.conf #先查看 vim /opt/nginx112/html/index.html # 编辑页面 192.168.13.79 : # 准备一个 index.html 写入 老了老弟,我是192.168.13.79 vim /opt/nginx112/conf/nginx.conf #先查看 vim /opt/nginx112/html/index.html # 编辑页面
然后启动两个nginx web服务器
[root@localhost opt]# nginx
配置nginx负载均衡器 192.168.13.121机器上
# 修改配置 nginx.conf [root@localhost opt]# vim /opt/nginx112/conf/nginx.conf 在http里面.server{} 上面 写入如下内容 : upstream s15webserver { #负载均衡池 ip_hash; server 192.168.13.79 ; server 192.168.13.24 ; } # 然后在虚拟主机中添加 反向代理配置,将用户的请求,直接转发给 负载均衡池中的服务器 server { listen 80; #当我的请求来自于 192.168.13.121时,走这>个虚拟主机 server_name 192.168.13.121; #charset koi8-r; #access_log logs/host.access.log main; #核心配置,就在这,一条proxy_psss参数即可 location / { proxy_pass http://s15webserver; #负载均衡池 #root html; #index index.html index.htm; }
负载均衡池解释 :
定义一个负载均衡池,负载均衡的算法有 调度算法 概述 轮询 #按时间顺序逐一分配到不同的后端服务器(默认) weight #加权轮询,weight值越大,分配到的访问几率越高 ip_hash #每个请求按访问IP的hash结果分配,这样来自同一IP的固定访问一个后端服务器 url_hash #按照访问URL的hash结果来分配请求,是每个URL定向到同一个后端服务器 least_conn #最少链接数,那个机器链接数少就分发 1.轮询(不做配置,默认轮询) 2.weight权重(优先级) 3.ip_hash配置,根据客户端ip哈希分配,不能和weight一起
例 :
weight权重
upstream django { server 10.0.0.10:8000 weight=5; server 10.0.0.11:9000 weight=10;#这个节点访问比率是大于8000的 }
ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器 upstream django { ip_hash; server 10.0.0.10:8000; server 10.0.0.11:9000; }
backup
在非backup机器繁忙或者宕机的时候,请求backup机器,因此机器默认压力最小
upstream django { server 10.0.0.10:8000 weight=5; server 10.0.0.11:9000; server node.oldboy.com:8080 backup; }
启动负载均衡器的nginx 服务
[root@localhost opt]# nginx
在客户端windows中测试访问,负载均衡器 192.168.13.121 ,反复刷新 , 查看请求分发的结果