Web服务器,直接面向用户,每每要承载大量并发请求,单台服务器难以负荷,我使用多台WEB服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到咱们的后端服务器集群中,
实现负载的分发。那么会大大提高系统的吞吐率、请求性能、高容灾
Nginx要实现负载均衡须要用到proxy_pass代理模块配置html
Nginx负载均衡与Nginx代理不一样地方在于前端
Nginx代理仅代理一台服务器,而Nginx负载均衡则是将客户端请求代理转发至一组upstream虚拟服务池node
Nginx能够配置代理多台服务器,当一台服务器宕机以后,仍能保持系统可用。linux
1 . 关闭防火墙 nginx
iptables -F sed -i 's/enforcing/disabled/' /etc/selinux/config systemctl stop firewalld systemctl disable firewalld
2 . 准备服务器 web
nginx1 192.168.13.121 # 做为nginx负载均衡器 只要我访问这个负载均衡器,查看页面的结果,究竟是来自于 nginx2 192.168.13.24 # web服务,提供一个页面 nginx3 192.168.13.79 # web服务,提供一个页面
3 . 配置服务器 算法
先配置两个nginx web页面 django
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服务器 vim
[root@localhost opt]# nginx
配置nginx负载均衡器 192.168.13.121机器上 windows
# 修改配置 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 ,反复刷新 , 查看请求分发的结果