LVS负载均衡配置说明

来源:互联网 发布:windows系统描述 编辑:程序博客网 时间:2024/06/05 21:14

一、体系架构:

前端两台服务器作LVS负载均衡,两台是为了作双机热备使用(可以为多台)。后端两台服务器(可以为多台),作业务使用,客户端通过负载均衡后,将连接(TCP连接为例)路由到业务服务器。

二、           硬件环境:Dell PowerEdge R710

三、           系统软件环境:

LVS两台机器安装:RHEL 4.8(RedHat Enterprise Linux 4.8) 64位。注意安装系统时按F10进入系统,不是直接从光盘安装,按提示插入安装光盘安装系统。

分别命名为:LVS1,LVS2,默认LVS1作主机,LVS2作热备。

后端两台服务器安装:Windows server 2003,需安装虚拟网卡Windows loopback Adapter。分别命名为Server1,Server2

IP地址配置:

默认网关地址:192.168.10.1

子网掩码:255.255.255.0

虚拟服务器地址(Virtual Server IP)192.168.10.15

LVS1地址:192.168.10.16

LVS2地址:192.168.10.17

Server1: 192.168.10.18

Server2: 192.168.10.19

四、           LVS软件安装:下载ipvsadmkeepalived.(ipvsadm-1.24.tar.gzkeepalived-1.1.19.tar.gz,这两个版本比较小巧稳定,其它版本也可以,但是keepalived-1.1.20.tar.gzCentOS-5.5上编译是乎有点问题),在有的系统上ipvsadm是默认安装的,但有的系统没有安装,如FC4,CentOS-5.5都已安装。,运行ipvsadm ln看看有没有错误提示即可知道。这两个软件具体功能介绍参看说明文档,此处只做配置说明,root用户登录操作。

1.   安装ipvsadm:

首先要建立到内核的连接,运行cat /proc/version查看内核版本, RHEL4.8内核2.6.9-89.EL-smp-x86_64

建立到内核的连接:ln s /usr/src/kernels/2.6.9-89.EL-smp-x86_64  /usr/src/linux

tar zxvf ipvsadm-1.24.tar.gz

cd ipvsadm-1.24

make

make install

无需作另外配置即可使用

Ipvsamd ln即可看查是否安装正确。

2.   安装keepalived

由于系统的原因,在安装keepalived-1.1.19之前要修改一个地方,如果已经在第一步安装ipvsadm时建立了到内核的链接,则如下修改

vi /usr/src/linux/include/linux/types.h

注释到以下两行

/*

  typedef __u16 __bitwise  __sum16

  typedef __u32 __bitwise  __wsum

*/

不过要注意,这样做是否会引起其它程序不能编译未可知。

如果不这样做会报类似这样的错误:

/usr/src/linux/include/linux/types.h:158: error: syntax errorbefore "__sum16"

/usr/src/linux/include/linux/types.h:159: error: syntax errorbefore "__wsum"

 

tar zxvf keepalived-1.1.19.tar.gz

cd keepalived-1.1.19

 

首先建立到内核的链接

ln s /usr/src/kernels/2.6.9-89.EL-smp-x86_64  /usr/src/linux

./configure

或者

./configure with-kernel-dir= /usr/src/kernels/2.6.9-89.EL-smp-x86_64

 

检查后看检查结果是否配置正确,是不是支持ipvsadm 框架。

make

make install

 

查看keepalived安装到了那个目录

find / -name keepalived

keepalived做服务,方便运行。

cp /usr/local/etc/rc.d/init.d/keepalived     /etc/rc.d/init.d

cp /usr/local/etc/sysconfig/keepalived       /etc/sysconfig/

mkdir /etc/keepalived

cp /usr/local/sbin/keepalived         /usr/sbin/

 

至此,keepalived除了配置已安装完毕。要让keepalived正确运行,还需做好配置,首先开启linux路由功能,这一点容易忽略,另外如果不清楚防火墙如何配置,直接关掉防火墙。

开启路由功能:

vi /etc/sysctl.conf

net.ipv4.ip_forward = 1     #1表示开启路由,否则连接不会转发

sysctl p                   #使改动生效

 

关闭防火墙

service iptables stop

 

复制一个keepalived.conf例子

cd /etc/keepalived/

vi keepalived.conf

 

LVS1环境配置如下(作主机)

 

! Configuration File for keepalived

 

global_defs {

  notification_email {

    acassen@firewall.loc

     failover@firewall.loc

    sysadmin@firewall.loc

   }

  notification_email_from Alexandre.Cassen@firewall.loc

  smtp_server 192.168.200.1

  smtp_connect_timeout 30

  router_id LVS_DEVEL

}

 

vrrp_instance VI_1 {

   state BACKUP       #注意此处

   nopreempt          #表示主机起来后不抢占备份机上的连接

   interface eth0

   virtual_router_id 51

   #mcast_src_ip 192.168.10.17

   priority 100      #主机优先级高于备份机

   advert_int 1

   authentication {

       auth_type PASS

       auth_pass 1111

    }

   virtual_ipaddress {

       192.168.10.15       #虚拟服务器地址,可以有多个

    }

}

virtual_server 192.168.10.15 8001 {    #虚拟机

   delay_loop 6

   lb_algo wrr

   lb_kind DR

   persistence_timeout 50

   protocol TCP

 

   real_server 192.168.10.18 8001 {   #对应的后端服务器

       weight 1

       TCP_CHECK {

           connect_timeout 3

           nb_get_retry 10

           delay_before_retry 10

        connect_port 8001             #后端服务器监听端口

       }

    }

 

   real_server 192.168.10.19 8001 { #对应的后端服务器

       weight 1

       TCP_CHECK {

           connect_timeout 3

           nb_get_retry 10

           delay_before_retry 10

           connect_port 8001

       }

    }

}

 

其中global_defs部分本实例未用到。

LVS2配置如下,作备份。

! Configuration File for keepalived

 

global_defs {

  notification_email {

    acassen@firewall.loc

    failover@firewall.loc

    sysadmin@firewall.loc

   }

  notification_email_from Alexandre.Cassen@firewall.loc

  smtp_server 192.168.200.1

  smtp_connect_timeout 30

  router_id LVS_DEVEL

}

 

vrrp_instance VI_1 {

   state BACKUP     #作备分机,由priority区别,优先级低于主机

   interface eth0

   virtual_router_id 51

   #mcast_src_ip 192.168.10.16

   priority 99

   advert_int 1

   authentication {

       auth_type PASS

       auth_pass 1111

    }

   virtual_ipaddress {

    192.168.10.15

    }

}

 

virtual_server 192.168.10.15 8001 {

   delay_loop 6

   lb_algo wrr

   lb_kind DR

   persistence_timeout 50

   protocol TCP

   real_server 192.168.10.18 8001 {

       weight 1

       TCP_CHECK {

           connect_timeout 3

           nb_get_retry 10

           delay_before_retry 10

           connect_port 8001

       }

    }

 

   real_server 192.168.10.19 8001 {

       weight 1

       TCP_CHECK {

           connect_timeout 3

           nb_get_retry 10

           delay_before_retry 10

           connect_port 8001

       }

    }

}

以上配置的各个详细项参见文档,需注意几个地方:

vrrp_instance VI_1 {

   state BACKUP     #作备分机,由priority区别,优先级低于主机

   interface eth0

   virtual_router_id 51

   #mcast_src_ip 192.168.10.16

   priority 99

   advert_int 1

    authentication {

       auth_type PASS

       auth_pass 1111

    }

   virtual_ipaddress {

    192.168.10.15

    }

}

此处配置双机热备的调度,有两种方式:

(1)一台作主机,另一台作热备,当主机停止时备份机器接管主机的任务,主机起来后重新抢占备机接管的任务,此种方式会使会话中断,并重新连接,配置区别如下:

主机:state MASTER

      priority 100 #高于备机

      nopreempt#不需要了。

      advert_int 1    #主备机之间的心跳检测

备机:state BACKUP

      priority 99 #低于主机

      nopreempt #不需要了。

      advert_int 1    #主备机之间的心跳检测

 

(2) 一台作主机,另一台热备,当主机停止时备份机器接管主机任务,主机起来后不抢中备机的连接,充电备机的角色,当备机中止时充当主机,这样的好处是不中断会话,本实例使用此种方式:

主机:state BACKUP

      priority 100 #高于备机

      nopreempt #主机需要。

      advert_int 1    #主备机之间的心跳检测

备机:state BACKUP

      priority 99 #低于主机

      #nopreempt 备机不需要。

      advert_int 1    #主备机之间的心跳检测

 

LVS配置即好,开启LVS

service keepalivedstart

ipvsadm ln 即可查看状态

 

五、           后台服务端配置:

主要是安装Microsoftloopback Adapter虚拟网卡:步骤如下

控制面板->添加硬件->硬件已连接->添加新硬件->安装我手动从列表选择的硬件->网络适配器->Microsoft->Microsoftloopback Adapter

 

设置IP地址:设成虚拟IP地址,192.168.10.15keepalived.conf配置的虚拟IP一样,默认网关不设置,子网先填写一个255.255.255.0,确定后停止网卡,再到注册表中找到该地址对应的子网掩码,改成255.255.255.255,有两个地方要改,保存后启用虚拟网卡。

 

配置好之后,启动此两台后端服务器上的服务程序,客户端即可通过LVS按算法分配连接到服务器上来。如果服务器是linux系统,配置相似,至于为什么要如此配置,有许细的文档可查。

 

 

六、           遗留问题极其它说明:

Keepalived被证明是一个具有高可用性的集群调度软件,但是在不同的硬件和操作系统版本上可能有一些差异,第一次配置或许不那么顺利,或多或少会遇到一些问题,正所谓知道不难,不知道甚难。曾经在R710上安装CentOS-5.3部署keepalived,当客户端连接超过1500时,LVS机器网络中断,ping出去或者ping进来都ping不通,只有ping自己能ping通,排除是硬件故障,证实是软件原因。

当运动service network restart后,又能跑一下,连接达到1500时又是同样的问题。情绪是对连接数有限制,查看ulimit n显示是1024。当改了这个限制还是一样的问,ping机器是显示的是无法找到路由。百思不得其角,于是换装操作系统,RHEL 4.8,一切如keepalived功能所愿。期待高手。

 

另外还有一个类似的软件keartbeat,和keepalived是两套不同的模式,是不相关的系统不要混肴,heartbeatkeepalived配置要复杂的多,而且心跳检测是另外的检测线,即两种搭配

lvs + keepalived

lvs + ldirectord + heartbeat

Keepalived配置中已经包含了双机备份的心跳机制,可以试着将正在接管任务的主机服务关掉,看看另一台备机能不能接管,正常情况下是能接管的。

 

 

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 吃消炎药伤胃了怎么办 吃药伤胃了胃疼怎么办 宝宝吃药伤胃了怎么办 胃胀胃痛怎么办快速解决方法 半夜2点3点胃疼怎么办 晚上吃多了胃疼怎么办 骨折打石膏后痒怎么办 脚脖子崴了肿了怎么办 喝酒喝的吐血了怎么办 感冒后咳嗽有痰怎么办 嗓子里老是有痰怎么办 物业把水停了怎么办 机洗衬衫缩水了怎么办 羊绒大衣洗缩水了怎么办 棉质衣服缩水了怎么办 衣服洗了变小了怎么办 毛衣洗后缩水了怎么办 鼻子又大又塌怎么办 苹果6被停用了怎么办 苹果6s手机停用怎么办 苹果4手机已停用怎么办 苹果手机5停用了怎么办 老公被骗300多万怎么办 苹果手机被抹除怎么办 钓鱼邮件点开了怎么办 幼犬吃多了拉稀怎么办 幼犬半夜醒了叫怎么办 相爱相杀的感情怎么办 冬天玩电脑手冷怎么办 被陌生人骗了钱怎么办 被网上骗了钱怎么办 20岁欠了10万怎么办 我赌博欠了10万怎么办 孩子见到生人不爱说话怎么办 18岁了个子矮小怎么办 1岁宝宝个子矮70怎么办 喋血街头2进监狱怎么办 360云盘收费了怎么办 头脑不清醒晕沉怎么办 一岁宝宝还不会走路怎么办 2岁宝宝受凉呕吐怎么办