xian123 发表于 2015-9-4 10:45:37

Lvs+Keepalived负载均衡方案

  之前做的负载均衡,有需要的可以看一下。
  这里列几个刚开始接触lvs时比较模糊的概念:
  LVS: Linux 虚拟服务器(Linux Virtual Server)是一组用来在真实服务器间平衡 IP 负载的整合软件组件,在linux2.4以后,LVS已经是linux内核的一部分。
  IPVS:IP虚拟服务器(IP Virtual Server)是运行在LVS下的提供负载平衡功能的一种技术。
  ipvsadm:ipvs的一个客户端工具。
  keepalived:是VRRP协议的完美实现,keepalived 采用了多进程的设计模式,一般我们可以看到VRRP子进程,healthchecker子进程,Keepalived里面对LVS的相关操作并不直接使用ipvsadm这样的客户端程序,而是直接使用IPVS提供的函数进程操作。
  
  实战:业务场景:提供多组服务的负载均衡。
  举个栗子,应用服务器1、2、3提供相同的服务A,应用服务器4、5、6提供相同的服务B,通过两台LVS(一主一备)将客户端访问负载到这六台服务器上,其中服务A和服务B必须通过端口来区分开来。
  这里给出的步骤是我每实践一步就记录下来的:
  LVS服务器:
  1)安装ipvsadm   (用于查看ipvs的分发情况)

yum install ipvsadm

2)安装keepalived

1,tar zxf keepalived-1.1.16.tar.gz
2,yum install gcc, openssl, openssl-devel,popt-devel
3,./configure --prefix=/usr --sysconf=/etc
4,make && make install

  5,修改防火墙 -A INPUT -i eth1 -p vrrp -s 10.92.21.57 -j ACCEPT   (打开healthchecker检查防火墙)

  6,修改防火墙 -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT (打开服务防火墙端口)

3)配置keepalived.conf(说明:这里的VIP是10.92.1.141,服务1是分发到10.92.1.197和15的3306端口,服务2是分发到10.92.1.15的9083端口)
  ! Configuration File for keepalived
  global_defs {
   notification_email {
   zengqingwei@csair.com
   }
   notification_email_from zengqingwei@csair.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id lnmp_node1
}
  vrrp_sync_group VG_1 {
group {
mysql
}
}
  vrrp_instance mysql {
    state MASTER
    interface eth1
    virtual_router_id 51
    priority 150
    advert_int 1
    virtual_ipaddress {
      10.92.1.141#VIP
    }
    authentication {
auth_type PASS
auth_pass fsaf..7&f
}
notify_master /opt/to_master.sh #LVS抢到主时调用此脚本
notify_backup /opt/to_backup.sh #LVS转成备时调用此脚本
notify_fault/opt/to_fault.sh #LVS故障时调用此脚本
    notify_stop   /opt/to_stop.sh #LVS停止时调用此脚本
}
  virtual_server 10.92.1.141 3306 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    protocol TCP
  real_server 10.92.1.197 3306 {
      weight 3            
      TCP_CHECK {
      connect_timeout 10   
      #nb_get_retry 3
      #delay_before_retry 3
      #connect_port 3306
      }
    }
   
    real_server 10.92.1.15 3306 {
      weight 3            
      TCP_CHECK {
      connect_timeout 10   
      #nb_get_retry 3
      #delay_before_retry 3
      #connect_port 3306
      }
    }
}
  virtual_server 10.92.1.141 9083 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    protocol TCP
   
    real_server 10.92.1.15 9083 {
      weight 3            
      TCP_CHECK {
      connect_timeout 10   
      #nb_get_retry 3
      #delay_before_retry 3
      #connect_port 3306
      }
    }
}


4)相关命令
service keepalived start/stopkeepalived启动停止
ipvsadm   查看ipvs的负载情况

  

RS服务器分为linux和windows两种情况:
1)linux:


ifconfig lo:0 ${VIP} broadcast ${VIP} netmask 255.255.255.255 up
vi /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
sysctl -p

2)windows


安装microsoft loopback adapter:
cmd
hdwwiz.exe
查看网络适配器 是否有microsoft loopback adapter(如果没有的需要自己去安装哟):

cmd运行下面的命令即可
netsh interface ipv4 set interface "本地连接" weakhostreceive=enabled
netsh interface ipv4 set interface "本地连接" weakhostsend=enabled
netsh interface ipv4 set interface "loopback" weakhostreceive=enabled
netsh interface ipv4 set interface "loopback" weakhostsend=enabled
页: [1]
查看完整版本: Lvs+Keepalived负载均衡方案