nginx的负载均衡

一.Nginx简介

Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。

二.Nginx应用场景

1、http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
2、虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
3、反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

三.负载均衡策略

今天的实验主要是nginx来作为负载均衡服务器,同时实验中需要用nginx作为web服务器。

负载均衡策略主要是以下三种:

1.轮循             每个请求逐个分发到后端服务器
2.加权轮循         按照分配的权重将请求分发到后端服务器
   3.ip hash         轮询的基础上,保持一个客户端多次请求分发到一台后端服务器上

实验环境:

三台虚拟机:

192.168.100.3      (负载均衡器)      nginx-test01
192.168.100.4    (web服务器)    nginx-test02
192.168.100.5    (web服务器)    nginx-test03

操作系统:centos 7.3

具体操作:

1.现在每台虚拟机上安装nginx,先下载安装包,然后逐个安装。
tar zvxf nginx-1.8.1.tar.gz     解压缩安装包
cd nginx-1.8.1                     进入解压目录
./configure--prefix=/usr/local/nginx--user=nginx--group=nginx --with-http_stub_status_module --with-http_ssl_module 编译
make && make install             安装

编译过程中,可能因为环境的不同缺少部分包,需手动yum安装

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

开始设置负载均衡

编辑负载均衡服务器的主配置文件

vim /usr/local/nginx/conf/nginx.conf

worker_processes 2; #设置值和CPU核心数一致
error_log /usr/local/webserver/nginx/logs/nginx_error.log crit; #日志位置和日志级别
worker_rlimit_nofile 65535;
events{
  use epoll;
  worker_connections 65535;
}
http{
  include mime.types;
  default_type application/octet-stream;
  log_format main  '$remote_addr - $remote_user [$time_local] "$request" '
               '$status $body_bytes_sent "$http_referer" '
               '"$http_user_agent" $http_x_forwarded_for';
  sendfile on;
  keepalive_timeout on;

  #定义后端服务器组
  upstream nginx-test{
    server 192.168.0.4;
    server 192.168.0.5;
  }

  #下面是server虚拟主机的配置
  server{
        listen 80;#监听端口
        server_name localhost;#域名
        index index.html index.htm index.php;
        root /usr/local/webserver/nginx/html;#站点目录
          location /{
          proxy_pass http://nginx-test;
        }
  }
}

在http里面,server外面定义后端服务器组用来做负载均衡(负载均衡可以将自身也作为web服务器轮询)。在server中引用定义的后端服务器组。

仅仅是作为普通轮询直接填写后端服务器IP地址即可,如果需要按照不同服务器的性能分配不同的权重,可在服务器后面加上权重。或者设置为IP hash。如下图:
加入权重的配置。保证充分利用服务器的性能。

#定义后端服务器组
upstream nginx-test{
    #设置权重为1,最大重试次数,超时时间
    server 192.168.0.4 weight=1 max_fails=2 fail_timeout=30s;
    #设置权重为2
    server 192.168.0.5 weight=2;
    #备份,其他服务器宕机后启用
    server 192.168.0.3 backup;
}

IP hash的配置

保证在短时间内,同一个客户端的请求不被分配到其他的nginx-server上

upstream nginx-test{
    ip_hash;
    server 192.168.0.4;
    server 192.168.0.5;
    server 192.168.0.3;
}

保证在短时间内,同一个客户端的请求不被分配到其他的nginx-server上

保存退出,重新加载nginx。

nginx –s reload

微信公众号,欢迎扫码关注