nginx的负载均衡

    nginx负载均衡概述     

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 ,反复刷新 , 查看请求分发的结果