负载均衡笔记

根据部分资料对负载均衡的相关知识做梳理。

1. 基本概念
  硬件负载均衡:F5 Big IP
  软件负载均衡:LVS、Nginx、HAProxy
  高可用性软件:heartbeat,keepalived

  成熟的linux 集群架构:LVS + keepalived、Nginx + keepalived、DRBD + Heartbeat

2. F5 Big IP
  2.1. 由f5 形成一个“虚拟服务器”外网ip:port,内部的各个服务器节点内网ip:port形成“地址池”;
  2.2. f5根据客户请求,将客户请求转发到具体的节点地址 内网ip:port,类似于公私网穿越;
  2.3. f5分发客户请求有多重算法,静态算法(如轮训、权重)、动态算法(如最少链接、最快回应)、失效机制(如最少活动成员)
  2.4. f5通过策略保持机制,保障同一个客户端的请求落在同一个服务器节点;
  2.5. f5提供monitor功能对下属服务器节点进行健康检查,例如发送ICMP消息、建立TCP链接等;
  2.6. f5也提供双机冗余配置,具备watch dog机制;


3. LVS(linux virtual server)
  3.1. LVS采用ip负载均衡技术\基于内容的请求分发技术,其中IP负载均衡技术主要有如下几类:
    1)VS/NAT:基于NAT
    2)VS/TUN:基于IP 隧道,也成为IP封装技术,即将一个ip报文封装到另外一个ip报文中去
在实际的业务中,往往是请求报文频繁且小,但范围报文是较大的,这就使得VS/NAT方案中,负载均衡器自身成为瓶颈。
在VS/TUN中,负载均衡器与实际服务器搭建IP隧道,负责请求报文传输。而返回报文直接由真实服务器返回给真实客户端。
    3)VS/DR:基于直接路由,与VS/TUN类似,只是在负载均衡器与真实服务器之间通过直接路由实现,因此必需在相同的物理网段。

  3.2. LVS采用三层架构
    1)负载均衡器:负责客户请求的分发;
    2)服务器池:真正处理业务的服务器,如web\mail\ftp等;
    3)共享存储:

  3.3. LVS支持的算法包括轮询、加权、最少连接、加权最少连接;

4. Nginx
  4.1. http服务器 和 反向代理服务器;
  备注:正向代理 与 反向代理
    1)正向代理:代理服务器分发客户请求至原始服务器,通常的代理技术
    2)反向代理:代理服务器对用户而言作为“原始服务器”,其向真实的服务器获取资源返回请求;
    反向代理通常与缓存机制绑定,CDN的原理就是反向代理服务器。

  4.2. 配置
  #例如设定负载均衡的服务器列表
    upstream server {
    #weigth参数表示权值,权值越高被分配到的几率越大
    server 192.168.8.1x:3128 weight=5;#本机上的Squid开启3128端口
    server 192.168.8.2x:80  weight=1;
    server 192.168.8.3x:80  weight=6;
    }

5. keepalived
    实现真实机的故障隔离和负载均衡间的切换。
    原理,keepalived工作在层3,4,7,即:
      层3 IP层:Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包,
    如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,
    并将它从服务器群中剔除
      层4 TCP层:检测指定端口状态,如80端口
      层7 应用层:根据用户的设定检查服务器程序的运行是否正常

转载于:https://my.oschina.net/jjface/blog/389107

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nginx可以通过四层(TCP/UDP)负载平衡来分配流量到不同的后端服务器。这种方式可以用于负载平衡非Web协议的应用程序,例如数据库和DNS服务器。 以下是针对TCP/UDP负载平衡的一些常见配置选项: 1. upstream 定义一个后端服务器池,用于存储实际的服务器。可以通过ip地址,域名或unix域套接字来指定服务器。例如: ``` upstream backend { server 192.168.1.100:3306; server 192.168.1.101:3306; } ``` 2. server 定义一个后端服务器及其端口号。它必须位于upstream块中。例如: ``` upstream backend { server 192.168.1.100:3306; server 192.168.1.101:3306; } server { listen 3306; proxy_pass backend; } ``` 3. hash 根据客户端IP地址,将请求路由到一个固定的后端服务器。这样,同一IP地址的请求将总是被路由到同一台服务器。例如: ``` upstream backend { hash $remote_addr; server 192.168.1.100:3306; server 192.168.1.101:3306; } ``` 4. least_conn 将请求路由到当前连接数最少的服务器。这样可以确保每个服务器的负载都是均衡的。例如: ``` upstream backend { least_conn; server 192.168.1.100:3306; server 192.168.1.101:3306; } ``` 5. ip_hash 根据客户端IP地址的哈希值,将请求路由到一个固定的后端服务器。这样,同一IP地址的请求将总是被路由到同一台服务器。例如: ``` upstream backend { ip_hash; server 192.168.1.100:3306; server 192.168.1.101:3306; } ``` 总之,Nginx的TCP/UDP负载平衡功能非常强大,并且可以根据不同的负载均衡算法来满足不同的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值