经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库运维 » LinuxShell » 查看文章
IP负载均衡
来源:cnblogs  作者:LWQTX  时间:2018/9/30 10:50:08  对本文有异议

推荐一篇关于LVS的好文:

https://www.cnblogs.com/gaoxu387/p/7941381.html

一、原博主要内容:

1、概述

IP负载均衡:四层负载,是基于IP+端口的负载均衡,主要代表是LVS(Linux Virtual Server

LVS工作原理:LVS的IP负载均衡技术是通过IPVS模块实现的,IPVS模块工作在内核空间。

2、LVS的工作模式

A、DR模式
通过 MAC 地址改写机制实现转发,集群局限于局域网内,需要设置lo接口的VIP不能响应本地网络内的arp请求。
B、TUN模式
通过再封装一层IP报文转发,集群可在公网上。
C、NAT模式
通过修改IP报文转发,集群局限在局域网内。

3、LVS的调度算法

  • 轮叫调度(Round-Robin Scheduling)
  • 加权轮叫调度(Weighted Round-Robin Scheduling)
  • 最小连接调度(Least-Connection Scheduling)
  • 加权最小连接调度(Weighted Least-Connection Scheduling)
  • 基于局部性的最少链接(Locality-Based Least Connections Scheduling)
  • 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)
  • 目标地址散列调度(Destination Hashing Scheduling)
  • 源地址散列调度(Source Hashing Scheduling)

 固定调度算法:rr,wrr,dh,sh

 动态调度算法:wlc,lc,lblc,lblcr

 

二、DR模式的配置

 这里介绍一下DR模式的配置。
1、负载均衡服务器:一般对外的负载均衡器须具有灾备能力,在负载均衡服务器上安装keepalived,并完成keepalived的配置,配置如下:
  1. ! Configuration File for keepalived
  2.  
  3. global_defs {
  4. notification_email {
  5. acassen@firewall.loc
  6. failover@firewall.loc
  7. sysadmin@firewall.loc
  8. }
  9. notification_email_from Alexandre.Cassen@firewall.loc
  10. smtp_server 192.168.200.1
  11. smtp_connect_timeout 30
  12. router_id LVS_DEVEL
  13. }
  14.  
  15. vrrp_instance VI_EPG {
  16. state MASTER //主用设置为MASTER,备用设置为BACKUP
  17. interface bond0
  18. virtual_router_id 64
  19. priority 100 //主用优先级要比备用优先级高
  20. advert_int 1
  21. authentication {
  22. auth_type PASS
  23. auth_pass 1111
  24. }
  25. virtual_ipaddress {
  26. 111.11.11.10 //对外VIP
  27. }
  28. }
  29. virtual_server 111.11.11.10 6600 {
  30. delay_loop 6
  31. lb_algo rr //调度算法RR,也可以设置其他算法
  32. lb_kind DR //负载均衡模式为DR
  33. persistence_timeout 20
  34. protocol TCP
  35.  
  36. real_server 111.11.11.21 6600 {
  37. weight 1
  38. TCP_CHECK {
  39. connect_timeout 3
  40. nb_get_retry 3
  41. delay_before_retry 3
  42. }
  43. }
  44. real_server 111.11.11.22 6600 {
  45. weight 1
  46. TCP_CHECK {
  47. connect_timeout 3
  48. nb_get_retry 3
  49. delay_before_retry 3
  50. }
  51. }
  52.  
  53. real_server 111.11.11.23 6600 {
  54. weight 1
  55. TCP_CHECK {
  56. connect_timeout 3
  57. nb_get_retry 3
  58. delay_before_retry 3
  59. }
  60. }
  61. }
2、RS节点服务器:需要设置lo接口的VIP,且设置其不能响应本地网络内的arp请求,可执行脚本:
  1. 1 #!/bin/bash
  2. 2 # description: Config realserver lo and apply noarp
  3. 3 VIP=111.11.11.10
  4. 4
  5. 5 . /etc/rc.d/init.d/functions
  6. 6
  7. 7 case "$1" in
  8. 8 start)
  9. 9 echo "1" >/proc/sys/net/ipv4/conf/bond0/arp_ignore
  10. 10 echo "2" >/proc/sys/net/ipv4/conf/bond0/arp_announce
  11. 11 echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
  12. 12 echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
  13. 13 sysctl -p >/dev/null 2>&1
  14. 14 ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
  15. 15 /sbin/route add -host $VIP dev lo:0
  16. 16 echo "RealServer Start OK"
  17. 17 ;;
  18. 18 stop)
  19. 19 ifconfig lo:0 down
  20. 20 route del $VIP >/dev/null 2>&1
  21. 21 echo "0" >/proc/sys/net/ipv4/conf/bond0/arp_ignore
  22. 22 echo "0" >/proc/sys/net/ipv4/conf/bond0/arp_announce
  23. 23 echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
  24. 24 echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
  25. 25 echo "RealServer Stoped"
  26. 26 ;;
  27. 27 status)
  28. 28 # Status of LVS-DR real server.
  29. 29 islothere=`/sbin/ifconfig lo:0 | grep $VIP`
  30. 30 isrothere=`netstat -rn | grep "lo:0" | grep $VIP`
  31. 31 if [ ! "$islothere" -o ! "isrothere" ];then
  32. 32 # Either the route or the lo:0 device
  33. 33 # not found.
  34. 34 echo "LVS-DR real server Stopped."
  35. 35 else
  36. 36 echo "LVS-DR Running."
  37. 37 fi
  38. 38 ;;
  39. 39 *)
  40. 40 # Invalid entry.
  41. 41 echo "$0: Usage: $0 {start|status|stop}"
  42. 42 exit 1
  43. 43 ;;
  44. 44 esac
  45. 45 exit 0

注意:此脚本最好设置成开机执行,如脚本名称为realserver.sh,放置在/usr/bin/路径下,赋可执行权限,在/etc/rc.local的末尾添加一行:/usr/bin/realserver.sh start

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号