1、Nginx 负载均衡的组件模块
ngx_http_proxy_module:proxy代理模块,用于把请求后抛给服务器节点或upstream服务器池。
ngx_http_upstream_module:负载均衡模块,可以实现网站的负载均衡功能及节点的健康检查。
2、upstream模块语法
upstream server_pools {
#ip_hash;
server 10.3.151.34:81 weight=1;
server 10.3.151.246:81 weight=1;
}
3、upstream模块标签说明
upstream:是关键字必须要有。
server_pools:为一个upstream集群组的名字,可以自己定义,调用时使用。
server:关键字必须要有,后面可以接域名或IP,如果不指定端口,默认是80端口。
weight:代表服务器权重,默认值是1,权重数字越大表示接受的请求比例越大。
ip_hash:根据客户端IP的hash结果分配,解决动态网页的session共享问题,当负载调度算法为ip_hash时,后端服务器在负载均衡调度中不能使用weight和backup。
4、http proxy 模块相关参数
proxy:设置http请求header 项传给后端服务器节点,例如:可实现让代理后端的服务器节点获取到访问客户端用户的真实IP地址。
client_body_buffer_size:用于指定客户端请求主体缓冲区大小,此处如了解前文的http请求包的原理就好理解了。
proxy_connection_timeout:表示反向代理与后端节点服务器连接的超时时间,即发起握手等候响应的超时时间。
proxy_send_timeout:表示代理后端服务器的数据回传时间,即在规定时间之内后端服务器必须传完所有的数据,否则,nginx将断开这个连接。
proxy_read_timeout:设置nginx从代理的后端服务器获取信息时间,表示连接建立成功后,nginx等待后端服务器的响应时间,其实是nginx已经进入后端的排队之中等候处理的时间。
proxy_buffer_size:设置缓冲区大小,默认该缓冲区大小等于指令proxy_buffers设置的大小。
5、负载均衡实战
5.1、网络架构
web1:10.3.151.34 (安装:nginx,端口监听:80,Server name:www.kang.com)
web2:10.3.151.246 (安装:nginx,端口监听:80,Server name:www.kang.com)
客户端:10.3.151.86
5.2、web1 nginx 配置文件如下:
worker_processes 1;
events {
worker_connections 1024;
}
error_log logs/error.log;
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
upstream server_pools { #负载均衡服务器
server 10.3.151.34:81 weight=1;
server 10.3.151.246:81 weight=1;
}
server {
listen 80;
server_name www.kang.com;
location / {
proxy_pass http://server_pools; #proxy_pass 转发
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 81;
server_name www.kang.com;
location / {
root html;
index index.html index.htm; #index.html 内容为:10.3.151.34 WWW SERVER
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#include vhost/*.conf;
}
5.3、web2 nginx 配置文件如下:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream server_pools { #负载均衡服务器
server 10.3.151.34 weight=1;
server 10.3.151.246:81 weight=1;
}
server {
listen 80;
server_name www.kang.com;
location / {
proxy_pass http://server_pools; #proxy_pass转发
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 81;
server_name www.kang.com;
location / {
root html;
index index.html index.htm; #index.html内容:10.3.151.246 WWW SERVER
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
5.4、通过客户端检查是否生效
[root@Auto-Operation ~]# for n in `seq 100`; do curl www.kang.com; sleep 1 ;done #分别轮询访问两台服务器
10.3.151.34 WWW SERVER
10.3.151.246 WWW SERVER
10.3.151.34 WWW SERVER
转载于:https://blog.51cto.com/12965094/2145979