码迷,mamicode.com
首页 > 其他好文 > 详细

Lvs+Keepalived负载均衡方案

时间:2015-04-17 20:14:38      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

  之前做的负载均衡,有需要的可以看一下。

  这里列几个刚开始接触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/stop  keepalived启动停止
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
 
 

Lvs+Keepalived负载均衡方案

标签:

原文地址:http://www.cnblogs.com/yemanling/p/4435311.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!