前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较。F5相当的贵,真不是一般企业能负担的起的。负载均衡软件也用过不少,nginx,apache,haproxy等。下面说一下lvs配合keepalived实现高可用,配合heartbeat也行,看个人喜欢好了。

一,lvs和keepalived简单介绍

LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。

keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。

二,安装前的说明

1,服务器介绍

  1. Master        192.168.1.11        //lvs主服务器
  2. BACKUP        192.168.1.12        //lvs从服务器
  3. VIP           192.168.1.8         //虚拟IP
  4. WEB1-Real     192.168.1.16        //WEB服务器
  5. WEB2-Real     192.168.1.17        //web服务器

2,内核比较,以及加软连接

/usr/src/kernels/下面内核版本要和所使用的内核版本要一样,如下图

内核是不是一样

ln -s /usr/src/kernels/2.6.32-71.el6.x86_64/ /usr/src/linux

如果没有linux文件夹建之。

我在网上找资料的时候,发现第2步,可以不要,不过我没有做测试。

三,安装配置

1,安装lvs,keepalived

yum install ipvsadm keepalived

2,lvs服务器主,从配置keepalived

  1. [root@localhost kernels]# cat /etc/keepalived/keepalived.conf
  2. ! Configuration File for keepalived
  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. vrrp_sync_group VGM {   //定义一个vrrp组
  15. group {
  16. VI_1
  17. }
  18. }
  19. vrrp_instance VI_1 {    //定义vrrp实例
  20. state MASTER        //主LVS是MASTER,从的BACKUP
  21. interface eth0      //LVS监控的网络接口
  22. virtual_router_id 51   //同一实例下virtual_router_id必须相同
  23. priority 100            //定义优先级,数字越大,优先级越高
  24. advert_int 5           //MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
  25. authentication {       //验证类型和密码
  26. auth_type PASS
  27. auth_pass 1111
  28. }
  29. virtual_ipaddress {    //虚拟IP
  30. 192.168.1.8
  31. #        192.168.1.9     //如果有多个,往下加就行了
  32. #        192.168.1.7
  33. }
  34. }
  35. virtual_server 192.168.1.8 80 {    //定义虚拟服务器
  36. delay_loop 6                   //健康检查时间,单位是秒
  37. lb_algo rr               //负载调度算法,这里设置为rr,即轮询算法
  38. lb_kind DR               //LVS实现负载均衡的机制,可以有NAT、TUN和DR三个模式可选
  39. persistence_timeout 50         //会话保持时间,单位是秒
  40. protocol TCP                   //转发协议类型,有tcp和udp两种
  41. sorry_server 127.0.0.1 80      //web服务器全部失败,vip指向本机80端口
  42. real_server 192.168.1.16 80 {  //定义WEB服务器
  43. weight 1                   //权重
  44. TCP_CHECK {                //通过tcpcheck判断RealServer的健康状态
  45. connect_timeout 5      //连接超时时间
  46. nb_get_retry 3         //重连次数
  47. delay_before_retry 3   //重连间隔时间
  48. connect_port 80        //检测端口
  49. }
  50. }
  51. real_server 192.168.1.17 80 {
  52. weight 1
  53. TCP_CHECK {
  54. connect_timeout 5
  55. nb_get_retry 3
  56. delay_before_retry 3
  57. connect_port 80
  58. }
  59. }
  60. }

从服务器只要改二个地方就行了,priority的权重调小一点,state改成BACKUP

3,WEB服务器配置脚本

  1. vim /etc/init.d/lvs    //新增文件lvs
  2. #!/bin/bash
  3. VIP=192.168.1.8
  4. /etc/rc.d/init.d/functions
  5. case "$1" in
  6. start)
  7. ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
  8. /sbin/route add -host $VIP dev lo:0
  9. echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
  10. echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
  11. echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
  12. echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
  13. sysctl -p >/dev/null 2>&1
  14. echo "RealServer Start OK"
  15. ;;
  16. stop)
  17. ifconfig lo:0 down
  18. route del $VIP >/dev/null 2>&1
  19. echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
  20. echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
  21. echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
  22. echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
  23. echo "RealServer Stoped"
  24. ;;
  25. *)
  26. echo "Usage: $0 {start|stop}"
  27. exit 1
  28. esac
  29. exit 0

添加可执行权限,

chmod +x /etc/init.d/lvs
chmod +x /etc/rc.d/init.d/functions

四,启动并查看

  1. /etc/init.d/keepalived start    //LVS服务器
  2. /etc/init.d/lvs start           //WEB服务器
  3. [root@localhost kernels]# watch ipvsadm
  4. Every 2.0s: ipvsadm                                                   Wed Jun 20 22:21:21 2012
  5. IP Virtual Server version 1.2.1 (size=4096)
  6. Prot LocalAddress:Port Scheduler Flags
  7. -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  8. TCP  192.168.1.8:80 rr persistent 50
  9. -> 192.168.1.16:80  Route   1      0          0
  10. -> 192.168.1.17:80  Route   1      0          0

到这儿就安装配置好了。

lvs keepalived 安装配置详解的更多相关文章

  1. lvs keepalived 安装配置详解【转】

    lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...

  2. (转)使用LVS实现负载均衡原理及安装配置详解

    使用LVS实现负载均衡原理及安装配置详解 原文:https://www.cnblogs.com/liwei0526vip/p/6370103.html

  3. keepalived的配置详解(非常详细)

    keepalived的配置详解(非常详细) 2017-01-22 15:24 2997人阅读 评论(0) 收藏 举报  分类: 运维学习(25)    转载自:http://blog.csdn.net ...

  4. Eclipse IDE for C/C++ Developers安装配置详解

    Eclipse IDE for C/C++ Developers安装配置详解(转) 转自:http://hi.baidu.com/ltb6w/item/986532efd712460f570f1ddc ...

  5. Cloudera CDH 、Impala本地通过Parcel安装配置详解及什么是Parcel

    本文引用自:Cloudera CDH .Impala本地通过Parcel安装配置详解及什么是Parcelhttp://www.aboutyun.com/forum.php?mod=viewthread ...

  6. ubuntu14.04 server ftp 服务安装配置详解

    ubuntu14.04 server ftp 服务安装配置详解 cheungmine 2016-01-27 http://wiki.ubuntu.com.cn/Vsftpd 0 安装好vsftpd服务 ...

  7. JDK10安装配置详解

    JDK10安装配置详解 1. 下载jdk10 1.1 官网下载jdk7的软件包:        地址:http://www.oracle.com/technetwork/java/javase/dow ...

  8. (转)python中调用R语言通过rpy2 进行交互安装配置详解

    python中调用R语言通过rpy2 进行交互安装配置详解(R_USER.R_HOME配置) 2018年11月08日 10:00:11 luqin_ 阅读数:753   python中调用R语言通过r ...

  9. redis cluster 集群 安装 配置 详解

    redis cluster 集群 安装 配置 详解 张映 发表于 2015-05-01 分类目录: nosql 标签:cluster, redis, 安装, 配置, 集群 Redis 集群是一个提供在 ...

随机推荐

  1. 二模10day1解题报告

    T1.阅览室(reading) 有一个0~T时间内开放的阅览室,n个读者来读书每人k本,编号和看完所需时间在输入中.其中喜欢度降序排列(不考虑数值),每个人先看喜欢的,如果没有(被人拿走了)就继续找第 ...

  2. Windows phone 8 学习笔记(1) 触控输入(转)

    Windows phone 8 的应用 与一般的Pc应用在输入方式上最大的不同就是:Windows phone 8主要依靠触控操作.因此在输入方式上引入一套全新的触控操作方式,我们需要重新定义相关的事 ...

  3. LDAP介绍

    摘自: http://www.blogjava.net/allen-zhe/archive/2007/03/19/104740.html LDAP介绍 原文:http://ldapman.org/ar ...

  4. pig中变量

    pig中的变量都是找到$变量然后替换,有点像宏,完全就是替换,看如下例子 %default m 'you';b = load 'a' as (a:chararray);c = foreach b ge ...

  5. Spring MVC防御CSRF、XSS和SQL注入攻击

    参考: http://www.myhack58.com/Article/html/3/7/2012/36142_6.htm http://blog.csdn.net/jasontome/article ...

  6. c#使用DocX给word添加目录TOC

    刚要做目录的时候,我就想DocX应该提供了这个方面的函数.于是我就在讨论区搜索,看看别人是怎么用的. 我搜索了catalog; catalogue; list; contents;,但是都没有和目录有 ...

  7. SQL中删除某数据库所有trigger及sp

    SQL中删除某数据库所有trigger及sp   编写人:CC阿爸 2014-6-14 在日常SQL数据库的操作中,如何快速的删除所有trigger及sp呢 以下有三种方式可快速处理. --第一种 - ...

  8. MYSQL的存储引擎一般只要哪些?

    根据个人个人见解: MySQL的存储引擎(构成.安全.锁) Myisam:数据操作快速的一种引擎,支持全文检索.文件保存在数据库名称为目录名的 目录中,有3个文件,分别是表定义文件(.frm).数据文 ...

  9. 【转】操作ini文件

    一.INI文件的结构: ; 注释 [小节名] 关键字=值 INI文件有多个小节,每个小节又有多个关键字, “=”后面是该关键字的值.  值的类型有三种:字符串.整型数值和布尔值. 其中字符串存贮在IN ...

  10. python 遍历文件夹

    import os import os.path rootdir = “d:\data” # 指明被遍历的文件夹 for parent,dirnames,filenames in os.walk(ro ...