在nginx中负载均衡主要实现用户访问请求进行调度分配和后端服务器的压力分担。
负载均衡调度算法 轮询(rr) :按时间顺序逐一分配到不同的后端服务器(默认) 权重(weight):加权轮询(wrr)。weight值越大,分配到的访问率越高。 源IP地址hash调度方法(ip_hash):将每个请求按访问IP的hash值来分配,来自同一个IP固定访问一个后端服务器 最少连接数(least_conn):当server拥有不同的权重时为wlc,当所有后端主机;连接数相同时,则使用wrr,适用于长连接(keepalive_timeout不为0) 负载均衡功能测试准备环境:
hostname IP 角色
web 外网IP:192.168.8.30 web服务器
内网IP:172.16.1.30
web02 外网IP:192.168.8.21 web服务器
内网IP:172.16.1.21
nginx-LB 外网IP:192.168.8.11 nginx负载均衡
内网IP:172.16.1.11
在nginx-lb服务器的/etc/nginx/conf.c/l4lb.conf文件添加一下内容:
stream {
upstream web02 {
server 172.16.1.21:22;
}
upstream web {
server 172.16.1.30:22;
}
server {
listen 5555;
proxy_pass web02;
}
server {
listen 6666;
proxy_pass web;
}
}
然后在/etc/nginx/nginx.conf的http模块上添加:
include /etc/nginx/conf.c/*.conf;
实验效果:
四层的负载均衡主要是根据IP和端口号进行转发。这里用ssh协议进行演示,也可以用80端口然后进行访问效果也是一样的,就不再演示了。
负载均衡配置模块说明:
权重分配请求:
upstream oldboy {
server 172.16.1.30:80 weight=3;
server 172.16.1.21:80 weight=2;
}
实现热备份功能:
upstream oldboy {
server 172.16.1.30:80 backup;
server 172.16.1.21:80;
}
定义最大失败次数:
upstream oldboy {
server 172.16.1.30:80;
server 172.16.1.21:80 max_fails=5;
}
定义失败之后重发的间隔时间:
upstream oldboy {
server 172.16.1.30:80;
server 172.16.1.21:80 fail_timeout=10s;
}
实例:
[root@ngx-lb conf.d]# vim www.conf
upstream ngx {
server 172.16.1.30:80;
server 172.16.1.21:80;
}
server {
listen 80;
server_name www.jxj.com;
location / {
proxy_pass http://ngx;
}
}
web、web02的配置文件:
server {
listen 80;
server_name localhost;
location / {
root /jxj/www;
index index.html;
}
}
分别在web、web02上mkdir -p /jxj/www创建网页目录。
web服务器的index.html文件内容为
[root@web-ngx ~]# cat /jxj/www/index.html
web --------------
web02服务器的index.html文件内容为:
[root@web02 conf.d]# cat /jxj/www/index.html
web02
使用curl命令查看实验效果:
[root@ngx-lb conf.d]# curl 192.168.8.11
web --------------
[root@ngx-lb conf.d]# curl 192.168.8.11
web02
[root@ngx-lb conf.d]# curl 192.168.8.11
web --------------
[root@ngx-lb conf.d]# curl 192.168.8.11
web02
到此,实验就成功了。