Nginx反向代理负载均衡

1、反向代理和负载均衡的概念

在理解反向代理和负载均衡概念以前咱们首先要明白的是集群的概念,简单来讲集群就是干相同事情的服务器,如web集群、数据库集群、存储集群等,集群有两个主要做用一是提升网站处理用户请求的能力二是提升网站运行的稳定性,通常来讲集群可分为高可用集群(HA)和负载均衡集群(LB)而负载均衡集群能够用F五、A10等硬件设备来实现,也能够用LVS(四成)、nginx(七层、1.9以后支持四层)等软件来实现html

  • 负载均衡简单来讲就是对用户的请求进行调度管理和压力分担nginx

  • 反向代理简单来讲就是接收用户请求代替用户向后端访问

    2、配置反向代理负载均衡服务

    (一)、环境规划

hostname server type Ip addr
WEB01 web 10.0.0.7
WEB02 web 10.0.0.8
WEB03 web 10.0.0.9
LB01 LB 10.0.0.5

(二)、模块说明

一、upstream 模块

  • 经常使用功能
    ①. 定义后端可调度节点信息放在http区块
    例子:
    upstream jiang {
    server 10.0.0.7:80;
    server 10.0.0.8:80;
    server 10.0.0.9:80;
    }
    ②. 实现权重值负载访问功能-weight
    upstream jiang {
    server 10.0.0.7:80 weight=3;
    server 10.0.0.8:80 weight=1;
    server 10.0.0.9:80 weigth=1;
    }
    ③. 定义后端访问的失败次数-max_fails

upstream jiang {
server 10.0.0.7:80 max_fails=3;
server 10.0.0.8:80 max_fails=3;
server 10.0.0.9:80 max_fails=3;
}web

④. 定义后端失败重试的间隔-fail_timeout
upstream jiag {
server 10.0.0.7:80 max_fails=3 fail_timeout=10s;
server 10.0.0.8:80 max_fails=3;
server 10.0.0.9:80 max_fails=3;
}算法

说明:在尝试屡次失败后在指定超时时间过去以后,会再给相应节点一次机会
⑤. 定义后端服务的热备节点-backup(负载节点服务器都挂了,使用备份)
upstream jiang {
server 10.0.0.7:80 max_fails=3 fail_timeout=10s;
server 10.0.0.8:80 max_fails=3;
server 10.0.0.9:80 max_fails=3 backup;
}数据库

模块调度算法
①. 定义轮询调度算法-rr-默认调度算法
采用平均分配原则
②. 定义权重调度算法-wrr
能者多劳
③. 定义静态调度算法-ip_hash
用一个hash值记录访问的记录,下次客户端再去访问的时候仍是会把请求分配给上一次的服务器,访问用户反复登录;
upstream jiang {
ip_hash;
server 10.0.0.7:80 max_fails=3 fail_timeout=10s;
server 10.0.0.8:80 max_fails=3;
server 10.0.0.9:80 max_fails=3 ;
}
④. 定义最小的链接数-least_conn
看谁比较闲就把请求分配给谁
upstream oldboy {
least_conn;
server 10.0.0.7:80 max_fails=3 fail_timeout=10s;
server 10.0.0.8:80 max_fails=3;
server 10.0.0.9:80 max_fails=3 ;
}vim

二、 ngx_http_proxy_module模块

①.proxy_pass 把客户段的请求抛送给upstream模块中的相应的地址池
location / {
proxy_pass http://jiang;
}
②.修改反向代理到后端请求头信息-proxy_set_header
location / {
proxy_pass http://oldboy;
proxy_set_header host $host;
}
proxy_set_header X-Forwarded-For $remote_addr;---让后端服务日志里写入真正客户端的IP地址信息;后端

(三)、部署实现

一、按照规划部署好相应的环境,并建立好相应的虚拟主机(暂时忽略)

二、配置nginx反向代理负载均衡

[root@lb01 conf]# vim nginx.conf浏览器

worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream jiang {
server 10.0.0.7:80;
server 10.0.0.8:80;
server 10.0.0.9:80;
}
server {
listen 80;
server_name blog.etiantian.org;
root html;
index index.html index.htm;
location / {
proxy_pass http://jiang;
}
}
}
检查语法重启nginx便可服务器

三、访问测试

在浏览器上输入域名刷新测试结构
Nginx反向代理负载均衡
Nginx反向代理负载均衡
Nginx反向代理负载均衡app

相关文章
相关标签/搜索