分享

lvs+haproxy的一种方式

 Baruch 2017-09-25
  去年看见淘宝章博士的PPT里面讲过淘宝的CDN架构,觉得简单使用。




我也一直觉得haproxy比较简洁的,另外画了一个图,可以给应用做好负载均衡。不过我这个图里两个LVS只是一主一倍,也可以作为相互备份,这样更能提高利用率。




这个基本是照着淘宝的这个架构搞的。但是其实里面有些细节地方可以仔细说一下。这个实现过程是
最最外面做LVS的机器上绑定一堆公网的IP。假如是10.10.114.2 .....10.10.114.254 (这个只是作为解说)。
做LVS负载均衡的机器上另外一个网卡绑定一个内部的IP,假如分别为192.168.1.2和192.168.1.3.
  1. virtual_server 10.10.114.2 80 {  
  2. delay_loop 3  
  3. lb_algo wlc  
  4. lb_kind DR  
  5. nat_mask 255.255.255.0  
  6. persistence_timeout 50  
  7. protocol TCP  
  8. real_server 192.168.1.4 80 {  
  9. weight 100  
  10. TCP_CHECK {  
  11. connect_port 80  
  12. connect_timeout 3  
  13. nb_get_retry 3  
  14. delay_before_retry 10  
  15. }  
  16. }  
  17. real_server 192.168.1.5 80 {  
  18. weight 100  
  19. TCP_CHECK {  
  20. connect_port 80  
  21. connect_timeout 3  
  22. nb_get_retry 3  
  23. delay_before_retry 10  
  24. }  
  25.   
  26.   
  27.   
  28. }  
  29.   
  30. virtual_server 10.10.114.3 80 {  
  31. delay_loop 3  
  32. lb_algo wlc  
  33. lb_kind DR  
  34. nat_mask 255.255.255.0  
  35. persistence_timeout 50  
  36. protocol TCP  
  37. real_server 192.168.1.4 80 {  
  38. weight 100  
  39. TCP_CHECK {  
  40. connect_port 80  
  41. connect_timeout 3  
  42. nb_get_retry 3  
  43. delay_before_retry 10  
  44. }  
  45. }  
  46. real_server 192.168.1.5 80 {  
  47. weight 100  
  48. TCP_CHECK {  
  49. connect_port 80  
  50. connect_timeout 3  
  51. nb_get_retry 3  
  52. delay_before_retry 10  
  53. }  
  54.   
  55.   
  56.   
  57. }  



那么配置 haproxy的几个机器上每个机器有一个192.168.1.X的IP外,还需要在每个机器的回环地址上绑定所有VIP(10.10.114.x)的。这样可以直接使用DR模式来对haproxy做第一级的负载均衡,而且对于安装haproxy的服务器上,因为在回环地址上绑定了这么多的ip(设置好arp抑制后其实只有这些机器自己知道自己有这些VIP),所以在配置haproxy时也非常方便了。
当外部请求进来时,LVS把请求转发给Haproxy。由于haproxy上监听的是绑在lo上的VIP,所以可以根据对方的目标IP来选择后端的机器。
  1. frontend  server1  
  2.          mode tcp  
  3.         bind 10.10.114.2:80  
  4.         default_backend real_server1  
  5. backend real_server1  
  6.         mode tcp  
  7.        balance roundrobin  
  8.         server A 192.168.x.2:80 weight 1  
  9.        server B 192.168.x.3:80 weight 1  
  10.     frontend  server2  
  11.              mode http  
  12.              bind 10.10.114.3:80  
  13.              default_backend real_server2  
  14.     backend real_server2  
  15.             mode http  
  16.             balance roundrobin  
  17.             server A 192.168.x.4:80 weight 1  
  18.             server B 192.168.x.5:80 weight 1  
  19.     frontend  server3  
  20.              mode http  
  21.              bind 10.10.114.4:80  
  22.              default_backend real_server3  
  23.     backend real_server3  
  24.             mode http  
  25.             balance roundrobin  
  26.             server A 192.168.x.6:80 weight 1  
  27.             server B 192.168.x.7:80 weight 1  

这样的话所有的haproxy都可以同时工作,lvs对他们也可以做好健康检测。对于后端应用,我们也可以充分利用haproxy来做好健康检测。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多