上篇文章讲了nginx的常见模块,这边文章将为大家讲一下nginx的负载均衡。
1.准备工作
这里我用三台服务器来做演示:
- Nginx负载均衡:192.168.10.22:80
- Nginx Web1:192.168.10.23:80
- Nginx Web2:192.168.10.24:80
为了方便演示我这里用默认的80端口
为了验证效果我们写一个简单html主页:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>这是服务器1</title>
</head>
<body>
<center>
<h1>这是服务器1</h1>
</center>
</body>
</html>
将以上代码复制两份命名为index.html ,注意将第二份<title>这是服务器1</title>
改成2。
2.配置Web服务器
首先将index.html文件上传到两台服务器上服务器上
$ mkdir /data
$ mkdir /data/www
# 创建web目录
创建nginx配置文件/etc/nginx/conf.d/web.conf
Nginx的安装请参考上一篇文章
$ vim /etc/nginx/conf.d/web.conf
# 复制下面配置文件
server {
listen 80;
server_name localhost;
location / {
root /data/www; # index.html文件的目录
index index.html;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
# 检查配置文件
$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# 重新加载nginx配置
$ nginx -s reload
打开浏览器输入<ip地址>可以看到以下页面,说明web服务器配置成功。
第二台web配置和第一台一样
3.配置nginx负载均衡
首先我们创建配置文件/etc/nginx/conf.d/1.conf
$ vim /etc/nginx/conf.d/1.conf
# 写入下面的配置文件
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://www;
# 这里的www是自己设置的负载均衡池的名称
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
# 负载均衡池,这里我用的轮询模式
upstream www {
server 192.168.10.23;
server 192.168.10.24;
}
# 检查nginx配置文件
$ nignx -t
$ nginx -s reload
在浏览器里输入<192.168.10.22>我们可以看到页面正常显示。
我们再次刷新一下页面:
可以看到访问顺序是:服务器1>服务器2>服务器1>服务器2,说明负载均衡配置成功。
3.Nginx负载均衡模式
1.轮询
轮询方式是Nginx负载默认的方式,顾名思义,所有请求都按照时间顺序分配到不同的服务上,如果服务Down掉,可以自动剔除,如下配置后轮训10.23服务和10.24服务。
upstream www {
server 192.168.10.23;
server 192.168.10.24;
}
2.权重
指定每个服务的权重比例,weight和访问比率成正比,通常用于后端服务机器性能不统一,将性能好的分配权重高来发挥服务器最大性能,如下配置后10.23服务的访问比率会是10.24服务的二倍。
upstream dalaoyang-server {
server 192.168.10.23 weight=1;
server 192.168.10.24 weight=2;
}
3.iphash
每个请求都根据访问ip的hash结果分配,经过这样的处理,每个访客固定访问一个后端服务,如下配置(ip_hash可以和weight配合使用)。
upstream dalaoyang-server {
ip_hash;
server 192.168.10.23 weight=1;
server 192.168.10.24 weight=2;
}
4.最少连接
将请求分配到连接数最少的服务上。
upstream dalaoyang-server {
least_conn;
server 192.168.10.23 weight=1;
server 192.168.10.24 weight=2;
}
5.fair
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream dalaoyang-server {
server 192.168.10.23 weight=1;
server 192.168.10.24 weight=2;
fair;
}