负载均衡之LVS+keepalived

来源:互联网 发布:php基本知识 编辑:程序博客网 时间:2024/05/22 13:27

负载均衡是为了解决某台服务器压力大而产生。

下面针对这种问题引出LVS的使用:

LVS需要基础设备:一台负载均衡服务器,两台真实服务器(A,B)

      就像我们去访问淘宝网站,一致输入都是www.taobao.com进入网站,为了应对大量用户同时访问该网站

,淘宝的服务器肯定不可能是一台,而是若干台,但是输入网址后他都能够进入该网站中的某台服务器,那么

我们的负载均衡服务器就是这个功能(简单的讲,输入一个虚拟的IP,他可以自动的根据一定的算法去访问其中

一台服务器)。

     如上的做法需要对三台服务器进行如下配置:

      针对于三台服务器我们都应该开启httpd服务service httpd start,同时关闭防火墙service iptables stop为了

防止下次开机重新配置防火墙我们可以chkconfig iptables off(PS:查看ip的命令为ifconfig).配置好这些后我们

可以直接在地址栏进行访问了。

      为了让负载均衡服务器能够找到我们的两台真实服务器需要在两台真实服务器上的/etc/init.d/目录下新建

配置realserver脚本:

#!/bin/bash#chkconfig: 2345 79 20#description:realserverSNS_VIP=192.168.201.140. /etc/rc.d/init.d/functionscase "$1" instart)ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP/sbin/route add -host $SNS_VIP dev lo:0echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announcesysctl -p >/dev/null 2>&1echo "RealServer Start OK";;stop)ifconfig lo:0 downroute del $SNS_VIP >/dev/null 2>&1echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "0" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/all/arp_announceecho "RealServer Stoped";;*)echo "Usage: $0 {start|stop}"exit 1esacexit 0

(共色部分为需要写的虚IP)

并且执行/etc/init.d/realserver start




      然后就是对负载均衡服务器的配置。

在访问负载均衡服务器的时候,他怎么能够自动的寻找对应的真实服务器呢?这里就需要了keepalived软件

在安装好之后,我们将其自带的keepalived.conf配置文件清空> /etc/keepalived/keepalived.conf,然后写入:


global_defs {                       ##全局配置部分#   notification_email {             ##下面几行均为全局通知配置,可以实现出现问题后报警,但功能有限,因此注释掉,并采用Nagios监视lvs运行情况#       admin@toxingwang.com#   }#   notification_email_from master@toxingwang.com#   smtp_server smtp.exmail.qq.com#   smtp_connect_timeout 30router_id LVS_DEVEL             ##设置lvs的id,在一个网络内应该是唯一的}vrrp_instance VI_1 {            ##设置vrrp组,唯一且同一LVS服务器组要相同state MASTER             ##备份LVS服务器设置为BACKUPinterface eth0             # #设置对外服务的接口virtual_router_id 51        ##设置虚拟路由标识priority 100                   #设置优先级,数值越大,优先级越高,backup设置为99,这样就能实现当master宕机后自动将backup变为master,而当原master恢复正常时,则现在的master再次变为backup。advert_int 1            ##设置同步时间间隔authentication {         ##设置验证类型和密码,master和buckup一定要设置一样auth_type PASSauth_pass 1111}virtual_ipaddress {          ##设置VIP,可以多个,每个占一行192.168.201.140}}virtual_server 192.168.201.140 80 {delay_loop 6            ##健康检查时间间隔,单位slb_algo wrr             ##负载均衡调度算法设置为加权轮叫lb_kind DR                              ##负载均衡转发规则nat_mask 255.255.255.0   ##网络掩码,DR模式要保障真实服务器和lvs在同一网段persistence_timeout 0    ##会话保持时间,单位sprotocol TCP                           ##协议real_server 192.168.201.133 80 {      ##真实服务器配置,80表示端口weight 3                             ##权重TCP_CHECK {                       ##服务器检测方式设置 keepalived的健康检查方式 有:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECKconnect_timeout 5    ##连接超时时间nb_get_retry 3     ##失败重试次数delay_before_retry 3 ##失败重试的间隔时间connect_port 80      ##连接的后端端口}}real_server 192.168.201.134 80 {weight 3TCP_CHECK {connect_timeout 10nb_get_retry 3delay_before_retry 3connect_port 80}}}

下面两个红色的IP就是对应我们真实服务器的IP地址,在我配置好之后并启动service keepalived start,出现了一些问题:输入负载均衡的虚Ip后总是访问其中一台服务器,找了一段时间发现上面配置文件中绿色字体部分的值是50,改成0就好了。

简单的负载均衡就配置好了大笑




1 0