linkerd实战(7)load balance负载均衡

本文通过实例详细介绍了linkerd的负载均衡策略,包括p2c、ewma、aperture、heap和roundRobin,解释了它们的工作原理,并提供了配置和测试的方法。
概述
linkerd 提供客户端负载均衡,包括  p2cewmaapertureheap, 和  roundRobin。接下来让我们来通过示例来说明这几种负载均衡机制。

服务提供者
之前我们使用ngnix搭建了一个服务提供者示例。为了演示负载均衡,我们必须有至少两个及以上的服务提供者提供相同命名的服务。我们来调整下ngnix的配置。

1、新建ngnix配置/etc/nginx/sites-enabled/default2
$ sudo cp /etc/nginx/sites-enabled/default /etc/nginx/sites-enabled/default2

2、修改default2配置,我们使用81端口
$sudo vi /etc/nginx/sites-enabled/default2
#listen 80 default_server; 改为
listen 81;
#listen [::]:80 default_server;改为
listen [::]:81;
#listen 80 default_server;改为
root /var/www/html2;

3、修改index.html 页面
$sudo cp /var/www/html /var/www/html2
$sudo vi /var/www/html2/index.html
It works! 改为 It works too!

4、ngnix 重新加载配置文件
$ sudo ./usr/sbin/ngnix -s reload

5、打开浏览器测试
服务注册
接下来我们要把81端口提供的服务注册到consul服务注册中心去。可以通过配置文件的方式,也可以通过http api。我们就配置文件进行演示:
1、新建配置文件test2.json
$ cp <parent path>/consul.d/test.json <parent path>/consul.d/test2.json
$ vi <parent path>/consul.d/test2.json
{"service":{"id": "test2","name": "test","address": "127.0.0.1","port": 81,"tags": ["dev","test2"]}}

2、关闭并重启consul
$ ./consul agent -dev -ui -node=consul-dev -client=127.0.0.1 -config-dir consul.d

3、查看test服务
### 负载均衡对比 - **LVS**:抗负载能力强,工作在网络4层之上仅作分发,无流量产生,性能在负载均衡软件里最强;配置性低,减少人为出错几率;工作稳定,有完整双机热备方案;应用范围广,可对所有应用做负载均衡。但软件本身不支持正则处理,不能做动静分离;对于庞大网站应用,实施LVS/DR + Keepalived较复杂,尤其涉及Windows Server应用时 [^2]。 - **HAProxy**:可用于四层和七层负载均衡。在四层负载均衡中与LVS等共同发挥作用,在七层负载均衡方面表现出色,能处理更复杂的应用逻辑,如基于HTTP协议的内容分发 [^1]。 - **Nginx**:支持四层和七层负载均衡。七层负载均衡能力较强,可基于HTTP协议进行内容分发和处理,配置相对灵活,适合做动静分离等操作。在处理静态资源方面有一定优势 [^1]。 ### 原理 - **LVS**:工作在网络四层,通过IP负载均衡技术,将客户端的请求分发到后端的服务器上。它根据不同的调度算法,如轮询、加权轮询、最少连接等,决定将请求转发给哪一台后端服务器 [^2]。 - **HAProxy**:在四层负载均衡时,基于TCP协议,根据IP地址和端口进行请求分发;在七层负载均衡时,基于HTTP协议,可根据请求的URL、HTTP头信息等进行更细致的分发决策。 - **Nginx**:四层负载均衡基于TCP/UDP协议,根据IP和端口分发请求;七层负载均衡基于HTTP协议,可对请求进行解析,根据请求的内容进行分发,例如根据URL路径将请求分发到不同的后端服务器。 ### 使用方法 - **LVS**:通常结合Keepalived或Heartbeat实现双机热备。配置时需要设置虚拟IP(VIP)、后端服务器的真实IP(RIP)以及调度算法等。例如在LVS/DR + Keepalived的配置中,需要在LVS服务器和Keepalived服务器上进行相应的配置,包括设置LVS的规则和Keepalived的监控和切换策略 [^2]。 - **HAProxy**:通过编辑配置文件`haproxy.cfg`来进行配置。在配置文件中定义前端(frontend)监听的IP和端口,以及后端(backend)服务器的列表和负载均衡算法等。例如: ```plaintext frontend http_front bind *:80 default_backend http_back backend http_back balance roundrobin server server1 192.168.1.100:80 check server server2 192.168.1.101:80 check ``` - **Nginx**:通过编辑Nginx的配置文件`nginx.conf`或在`conf.d`目录下创建新的配置文件。配置示例如下: ```plaintext http { upstream backend { server 192.168.1.100; server 192.168.1.101; } server { listen 80; location / { proxy_pass http://backend; } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值