负载均衡

来源:互联网 发布:如何设置子域名 编辑:程序博客网 时间:2024/06/06 16:34

Nginx特点

1.工作在7可以对做正则规则处理;(针对域名目录进行分流

2.配置简单ping通就能进行负载功能可以通过端口检测后端服务器状态不支持url检测

3.抗高并发采用epoll网络模型处理客户请求

4.只支持HTTP和EMail应用范围比较少

5.nginx主要是HTTP和反向代理服务器低系统资源消耗

反向代理五种算法

1. 轮询默认
每个请求按时间顺序逐一分配到不同的后端服务器如果后端服务器down掉能自动剔除
2、weight
指定轮询几率weight和访问比率成正比用于后端服务器性能不均的情况
3、ip_hash
每个请求按访问ip的hash结果分配这样每个访客固定访问一个后端服务器可以解决session的问题
4、fair第三方
按后端服务器的响应时间来分配请求响应时间短的优先分配
5、url_hash第三方
按访问url的hash结果来分配请求使每个url定向到同一个后端服务器后端服务器为缓存时比较有效

DEMO说明

Yum分开安装的nginx如果不自定义安装路径配置文件在/etc/nginx/conf.d/default.conf集成的环境默认路径/usr/local/

1、轮询

当有请求到www.test2.com 请求会被分发到对应的upstream设置的服务器列表上test2的每一次请求分发的服务器都是随机的

upstream lunxun {
server 172.16.0.21:8066;
server 192.168.76.98:8066;
}

 

server {
listen 80;
server_name www.test2.com;

location /{
proxy_pass http://lunxun;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

 

2、weight

当有请求到www.weight.com 请求会被分发到对应的upstream设置的服务器列表上weight的每一次请求分发的服务器都是按照比例分配的

upstream lunxun {
server 172.16.0.21:8066weight=1;
server 192.168.76.98:8066weight=2;
}

 

server {
listen 80;
server_name www. weight.com;

location /{
proxy_pass http://lunxun;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

 

 

 

3、Ip_hash

当有请求到www.test1.com test1刚是根据来访问ip的hashid来分发到指定的服务器也就是说该IP的请求都是转到这个指定的服务器上
upstream hash{
ip_hash;
server 172.16.125.76:8066 weight=10;
server 172.16.125.76:8077 down;
server 172.16.0.18:8066 max_fails=3 fail_timeout=30s;
server 172.16.0.18:8077 backup;




server {
listen 80;
server_name www.test1.com;

location /{
proxy_pass http://hash;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

4、url_hash第三方插件

需要安装PCER与Nginx_upstream_hash

PCRE(Perl Compatible Regular Expressions)是一个Perl库包括 perl 兼容的正则表达式pcre来解决C语言中使用正则表达式的问题

Nginx_upstream_hashupstream采用一致性hash

 

upstream test {

server squidIP1:3128;

servse squidIP2:3128;

            hash  $request_uri;

            hash_method  crc32;

         }

 

5fair第三方插件

按后端服务器的响应时间来分配请求响应时间短的优先分配

配置文件

upstream test {

server 192.168.109.5:81;

servse 192.168.109.3:80;

fair;

}

 

根据服务器的本身的性能差别及职能可以设置不同的参数控制

down 表示负载过重或者不参与负载

weight 权重过大代表承担的负载就越大

backup 其它服务器时down时才会请求backup服务器

max_fails 失败超过指定次数会暂停或请求转往其它服务器

fail_timeout 失败超过指定次数后暂停时间

LVS实现负载均衡的一种方式

LVS工作原理

LVS的三种工作模式

NAT模式VS-NAT

原理就是把客户端发来的数据包的IP头的目的地址在负载均衡器上换成其中一台RS认证服务器IP地址并发至此RS来处理,RS处理完成后把数据交给经过负载均衡器,负载均衡器再把数据包的原IP地址改为自己的IP将目的地址改为客户端IP地址即可期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器

优点集群中的物理服务器可以使用任何支持TCP/IP操作系统只有负载均衡器需要一个合法的IP地址

缺点扩展性有限当服务器节点普通PC服务器增长过多时,负载均衡器将成为整个系统的瓶颈因为所有的请求包和应答包的流向都经过负载均衡器当服务器节点过多时大量的数据包都交汇在负载均衡器那速度就会变慢

IP隧道模式VS-TUN

原理首先要知道互联网上的大多Internet服务的请求包很短小而应答包通常很大那么隧道模式就是把客户端发来的数据包封装一个新的IP头标记(仅目的IP)发给RS,RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回给客户端,不需要再经过负载均衡器注意,由于RS需要对负载均衡器发过来的数据包进行还原,所以说必须支持IPTUNNEL协议所以,RS的内核中,必须编译支持IPTUNNEL这个选项

优点负载均衡器只负责将请求包分发给后端节点服务器RS将应答包直接发给用户所以减少了负载均衡器的大量数据流动负载均衡器不再是系统的瓶颈就能处理很巨大的请求量这种方式一台负载均衡器能够为很多RS进行分发而且跑在公网上就能进行不同地域的分发

缺点隧道模式的RS节点需要合法IP这种方式需要所有的服务器支持IP Tunneling”(IP Encapsulation)协议服务器可能只局限在部分Linux系统上

直接路由模式VS-DR

原理负载均衡器和RS都使用同一个IP对外服务但只有DR对ARP请求进行响应,所有RS对本身这个IP的ARP请求保持静默也就是说,网关会把对这个服务IP的请求全部定向给DR,DR收到数据包后根据调度算法,找出对应的RS,把目的MAC地址改为RS的MAC因为IP一致并将请求分发给这台RS这时RS收到这个数据包,处理完成之后由于IP一致可以直接将数据返给客户则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端由于负载均衡器要对二层包头进行改换,所以负载均衡器和RS之间必须在一个广播域,也可以简单的理解为在同一台交换机上

优点TUN隧道模式一样负载均衡器也只是分发请求应答包通过单独的路由方法返回给客户端VS-TUN相比VS-DR这种实现方式不需要隧道结构因此可以使用大多数操作系统做为物理服务器

缺点:(不能说缺点只能说是不足要求负载均衡器的网卡必须与物理网卡在一个物理段上

 

LVS特点

   1.抗负载能力强使用IP负载均衡技术只做分发所以LVS本身并没有多少流量产生

   2.稳定性可靠性好自身有完美的热备方案;(LVS+Keepalived

   3.应用范围比较广可以对所有应用做负载均衡

   4.不支持正则处理不能做动静分离

 

常用四种算法

   1.rr轮叫轮流分配到后端服务器

   2.wrr权重轮叫根据后端服务器负载情况来分配

   3.lc最小连接分配已建立连接最少的服务器上

   4.wlc权重最小连接根据后端服务器处理能力来分配

1、lvs(nat模式配置)

我的服务器

LVS-server  IP192.168.1.101(lvs服务器调度器

Real-Server1IP: 192.168.1.80(需要真实工作web服务器

Real-Server2IP: 121.199.28.128 (需要真实工作web服务器

 

1)安装ipvsadmip虚拟服务器):yum -y install ipvsadm

2)然后执行[root@localhost ~]#ipvsadm –C清除内核虚拟服务器表中的所有记录。)

3)

4)ipvsadm L显示内核虚拟服务器表

第一行是添加一条新的虚拟IP记录这个新的IP是192.168.1.101第二三行是在新加虚拟IP记录中添加两条新的Real Server记录并且指定LVS 的工作模式为net模式

rr是轮叫算法 -m代表net模式

还有一些其他参数http://zh.linuxvirtualserver.org/node/5

配置成功当你访问192.168.1.101是会跳转到两台rs上

0 0
原创粉丝点击