您的位置:首页 > 其它

负载均衡的几种实现方式

2018-01-28 00:30 429 查看
(1)HTTP重定向负载均衡

         这种负载均衡方案的优点是比较简单;

         缺点是浏览器需要每次请求两次服务器才能拿完成一次访问,性能较差。

(2)DNS域名解析负载均衡

         优点是将负载均衡工作交给DNS,省略掉了网络管理的麻烦;

         缺点就是DNS可能缓存A记录,不受网站控制。

(3)反向代理负载均衡

       优点是部署简单;

       缺点是反向代理服务器是所有请求和响应的中转站,其性能可能会成为瓶颈。

(4)IP负载均衡

      优点:IP负载均衡在内核进程完成数据分发,较反向代理均衡有更好的处理性能。

      缺点:负载均衡的网卡带宽成为系统的瓶颈。

(5)数据链路层负载均衡

       避免负载均衡服务器网卡带宽成为瓶颈,是目前大型网站所使用的最广的一种负载均衡手段。

附录:

数据链路层的负载均衡

   Linux服务器实施双网卡绑定(Bonding),可增加吞吐量,实现负载均衡,同时实现高可用。(均衡冗余)(数据链路层唯一负载均衡)

   Linux双网卡绑定使两块网卡虚拟成一块网卡,该网卡的驱动是bonding。(在/boot/config*可查看内核是否支持BONDING模块)。

配置方法:

   (环境:VMware CentOS7.2 双网卡)

   (下面配置,使用nmcli网络管理工具)

   1.查看网卡名称及状态

[root@localhost 桌面]# nmcli device status

设备         类型      状态    CONNECTION

virbr0       bridge    连接的  virbr0

eno16777736  ethernet  连接的  eno16777736

eno33554984  ethernet  连接的  有线连接 1

virbr0-nic   tap       连接的  virbr0-nic

lo           loopback  未管理  --


   2.配置网卡虚拟bond0及配置模式(配置为负载均衡轮循模式)
[root@localhost 桌面]# nmcli connection add type bond con-name bond0 ifname bond0 mode balance-rr

成功添加的连接 'bond0'(8654ebdb-99ac-4abb-9862-c16cd63a033f)。


   3.将物理网卡绑定到bond0  

[root@localhost 桌面]# nmcli connection add type bond-slave ifname eno16777736 master bond0

成功添加的连接 'bond-slave-eno16777736'(7d5cd0c8-703b-4fd3-8f86-e909700cc3a1)。

[root@localhost 桌面]# nmcli connection add type bond-slave ifname eno33554984 master bond0

成功添加的连接 'bond-slave-eno33554984'(2c79b9c4-8a3e-4f27-9cd0-33cc30a51d3c)。


   4.启动绑定的物理网卡

[root@localhost 桌面]# nmcli connection up bond-slave-eno16777736

成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/5)

[root@localhost 桌面]# nmcli connection up bond-slave-eno33554984

成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/6)


   5.启动虚拟bond0网卡

[root@localhost 桌面]# nmcli connection up bond0

Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)


   6.设置静态IP,取消DHCP,设置手动模式

[root@localhost 桌面]# nmcli connection modify bond0 ipv4.addresses 192.168.1.166/24 ipv4.gateway 192.168.1.1 ipv4.dns 192.168.1.1

[root@localhost 桌面]# nmcli con modify team0 ipv4.method manual

[root@localhost 桌面]# service network restart


bond七种模式:

   Mode=0(blance-rr):表示负载分担round-robin,和交换机的聚合强制不协商方式配合。

   Mode=1(active-backup):表示主备模式,一块active,一块standby.

   Mode=2(balance-xor):表示XOR Hash负载分担,和交换机的聚合强制不协商方式配合。(需要xmit_hash_policy)   
   Mode=3(broadcast):表示所有包从所有interface发出,这个不均衡,只有冗余机制和交换机的聚合强制不协商方式配合。 
   Mode=4(802.3ad):表示支持802.3ad协议,和交换机的聚合LACP方式配合(需要xmit_hash_policy)
   Mode=5(balance-tlb):是根据每个slave的负载情况选择slave进行发送,接收时使用当前轮到的slave
   Mode=6(balance-alb):在5的tlb基础上增加了rlb。

     0,2和3理论上需要静态聚合方式。(0可以通过mac地址欺骗的方式在交换机不设置的情况下不太均衡地进行接收)

   4需要支持802.3ad

   5和6不需要交换机端的设置,网卡能自动聚合。

   mode0下bond所绑定的网卡的IP都被修改成相同的mac地址,如果这些网卡都被接在同一个交换机,那么交换机的arp表里这个mac地址对应的端口就有多个,那么交换机接受到发往这个mac地址的包应该往哪个端口转发呢?正常情况下mac地址是全球唯一的,一个mac地址对应多个端口肯定使交换机迷惑了。所以mode0下的bond如果连接到交换机,交换机这几个端口应该采取聚合方式(cisco称为ethernetchannel,foundry称为portgroup),因为交换机做了聚合后,聚合下的几个端口也被捆绑成一个mac地址.解决办法是,两个网卡接入不同的交换机即可。

    


参考博客:

http://www.cnblogs.com/lcword/p/5914089.html

http://blog.chinaunix.net/uid-20767811-id-5115849.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: