一.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