在理解反向代理和负载均衡概念以前咱们首先要明白的是集群的概念,简单来讲集群就是干相同事情的服务器,如web集群、数据库集群、存储集群等,集群有两个主要做用一是提升网站处理用户请求的能力二是提升网站运行的稳定性,通常来讲集群可分为高可用集群(HA)和负载均衡集群(LB)而负载均衡集群能够用F五、A10等硬件设备来实现,也能够用LVS(四成)、nginx(七层、1.9以后支持四层)等软件来实现html
负载均衡简单来讲就是对用户的请求进行调度管理和压力分担nginx
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 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
①.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地址信息;后端
[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便可服务器
在浏览器上输入域名刷新测试结构app