LVS负载均衡配置说明

一、 体系架构:

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

二、            硬件环境:Dell PowerEdge R710

三、            系统软件环境:

LVS 两台机器安装:RHEL 4.8 (Red Hat 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 查看内核版本, RHEL 4.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 error before "__sum16"

/usr/src/linux/include/linux/types.h:159: error: syntax error before "__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 keepalived start

ipvsadm ln 即可查看状态

 

五、            后台服务端配置:

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

控制面板-> 添加硬件-> 硬件已连接-> 添加新硬件-> 安装我手动从列表选择的硬件-> 网络适配器->Microsoft->Microsoft loopback 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 配置中已经包含了双机备份的心跳机制,可以试着将正在接管任务的主机服务关掉,看看另一台备机能不能接管,正常情况下是能接管的。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值