LVS介绍:

LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器。它是我们国家的章文嵩博士的一个开源项目。在linux内核2.6中,它已经成为内核的一部分,在此之前的内核版本则需要重新编译内核。

优势:

1、抗负载能力强,因为lvs工作方式的逻辑是非常之简单,而且工作在网络4层仅做请求分发之用,没有流量,所以在效率上基本不需要太过考虑。在我手里的 lvs,仅仅出过一次问题:在并发最高的一小段时间内均衡器出现丢包现象,据分析为网络问题,即网卡或linux2.4内核的承载能力已到上限,内存和 cpu方面基本无消耗。

2、配置性低,这通常是一大劣势,但同时也是一大优势,因为没有太多可配置的选项,所以除了增减服务器,并不需要经常去触碰它,大大减少了人为出错的几率。

3、工作稳定,因为其本身抗负载能力很强,所以稳定性高也是顺理成章,另外各种lvs都有完整的双机热备方案,所以一点不用担心均衡器本身会出什么问题,节点出现故障的话,lvs会自动判别,所以系统整体是非常稳定的。

4、无流量,上面已经有所提及了。lvs仅仅分发请求,而流量并不从它本身出去,所以可以利用它这点来做一些线路分流之用。没有流量同时也保住了均衡器的IO性能不会受到大流量的影响。

5、基本上能支持所有应用,因为lvs工作在4层,所以它可以对几乎所有应用做负载均衡,包括http、数据库、聊天室等等。

开始搭建:

调度器的实现技术中,IP负载均衡技术是效率最高的,IP虚拟服务器软件(IPVS)是在linux内核中实现的。本文采用这种方式搭建。

第一步:安装三台centos

第二步:在二台真实服务器上添加LO:0接口,并设置虚拟IP

cd /etc/init.d(这样做的目的是为了可以通过service命令启用)

touch realserver (realserver这个名字可以随便取,是为了service命令那里用)

vim realserver  (添加以下内容)

SNS_VIP=192.168.200.201      #定义VIP变量

. /etc/rc.d/init.d/functions#导脚本库

case "$1" in#case语句 $1传递给该shell脚本的第一个参数

start)

ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP #设置Lo:0 VIP  netmask  及广播

/sbin/route add -host $SNS_VIP dev lo:0  ##route del 增加本地路由

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

sysctl -p >/dev/null 2>&1# -p <file>   (default /etc/sysctl.conf) 将标准信息输入设备空文件

echo "RealServer Start OK"

;;

stop)

ifconfig lo:0 down

route del $SNS_VIP >/dev/null 2>&1     #route del 删除本地路由

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

echo "RealServer Stoped"

;;

*)

echo "Usage: $0 {start|stop}"  #$0 是脚本本身的名字

exit 1#表示进程正常退出

esac#case结束

exit 0#表示进程非正常退出

chmod 750 realserver

chkconfig realserver on

service realserver start       #RealServer Start OK   #表示启动成功!

ifconfig   #查看一下是否真的成功添加了lo:0接口

第二步:开启二台真实服务器上自带的Apache公司的Http服务器

service httpd start              #开启Http服务器

cd /var/www/html/             #进入Http服务器默认的目录

#touch index.html               #创建Http服务器默认访问页面

#vim index.html                #编辑Http服务器默认访问页面

I am http IP : 真实服务器自己的IP(例如:192.168.200.201)

用浏览器访问一下:http://192.168.200.201      默认端口80

查看结果是否是自己编辑的:   I am http IP : 真实服务器自己的IP(例如:192.168.200.201)

二台真实服务器一样

第三步:开始搭建负载均衡

1:安装 ipvsadm  keepalived

命令:yum –y install ipvsadm keepalived

2:配置 keepalived

命令:vim /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 30

router_id LVS_DEVEL             ##设置lvs的id,在一个网络内应该是唯一的

}

vrrp_instance VI_1 {            ##设置vrrp组,唯一且同一LVS服务器组要相同

state MASTER             ##备份LVS服务器设置为BACKUP

interface eth0             # #设置对外服务的接口

virtual_router_id 51        ##设置虚拟路由标识

priority 100                   #设置优先级,数值越大,优先级越高,backup设置为99,这样就能实现当master宕机后自动将backup变为master,而当原master恢复正常时,则现在的master再次变为backup。

advert_int 1            ##设置同步时间间隔

authentication {         ##设置验证类型和密码,master和buckup一定要设置一样

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {          ##设置VIP,可以多个,每个占一行

192.168.200.201

}

}

virtual_server 192.168.200.201 80 {

delay_loop 6            ##健康检查时间间隔,单位s

lb_algo wrr             ##负载均衡调度算法设置为加权轮叫

lb_kind DR                              ##负载均衡转发规则

nat_mask 255.255.255.0   ##网络掩码,DR模式要保障真实服务器和lvs在同一网段

persistence_timeout 50    ##会话保持时间,单位s

protocol TCP                           ##协议

real_server 192.168.200.139 80 {      ##真实服务器配置,80表示端口

weight 3                             ##权重

TCP_CHECK {                       ##服务器检测方式设置 keepalived的健康检查方式 有:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK

connect_timeout 0    ##连接超时时间

nb_get_retry 3     ##失败重试次数

delay_before_retry 3 ##失败重试的间隔时间

connect_port 80      ##连接的后端端口

}

}

real_server 192.200.140. 80 {

weight 3

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

启动keepalived服务:service keepalived start

注:由于keepalived配置文件有语法错误也能启动,因此看到启动了lvs服务,不代表配置文件没有错误,如果遇到lvs不能正常转发,及时跟踪日志进行处理。

LVS备机搭建(其他操作同上,注意下面红色部分的修改)

global_defs {

#   notification_email {

#       admin@toxingwang.com

#   }

#   notification_email_from master@toxingwang.com

#   smtp_server smtp.exmail.qq.com

#   smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 51

priority 99       #主机是100,备机的这个值要比主机小,这里设成99

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.200.201

}

}

virtual_server 192.168.200.201 80 {

delay_loop 6

lb_algo wrr

lb_kind DR

nat_mask 255.255.255.0

persistence_timeout 0

protocol TCP

real_server 192.168.200.139 80 {

weight 3

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 192.168.200.140 80 {

weight 3

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

通过以上搭建,lvs的主机和备机就可以用了,当主机不可用了,备机就会自动转到主机的位置,当主机可用了,备机就会自动退出。可以参考视频http://pan.baidu.com/s/1o7G8Q4i和http://pan.baidu.com/s/1bpC1K4n,如果链接失效可以联系我。

声明:本文参考了传智播客上课文档,根据本人实验后改写。

160526、高并发之LVS搭建负载均衡的更多相关文章

  1. LVS搭建负载均衡(二)DR模型

    应用场景:LVS配置负载均衡方式之一:dr 测试环境: 配置步骤: 1. 在主机lvs上安装ipvsadm ~]# yum install ipvsadm -y ~]# ipvsadm //启动:该命 ...

  2. LVS搭建负载均衡(一)NAT模型

    应用场景:LVS配置负载均衡方式之一:nat 测试环境: 测试步骤: 1. 在主机lvs上安装ipvsadm lvs~]# yum install ipvsadm -y lvs~]# ipvsadm ...

  3. Redis系列四(keepalived+lvs搭建负载均衡)

    1.安装Keepalived(主备服务器都要安装) 10.8.80.218  主服务器 10.8.80.217  备服务器 10.8.80.200  虚拟IP $ wget http://www.ke ...

  4. 高并发之web服务器负载均衡简单介绍

    负载均衡种类 F5,七层负载均衡,四层负载均衡 Nginx负载均衡 内置策略.扩展策略 内置策略:IPHash.加权轮询 扩展策略:fair策略.通用hash.一致性hash 加权轮询策略 首先将请求 ...

  5. LVS搭建负载均衡集群(一)——NAT模式

    (1).集群技术的分类 集群技术主要分为三大类:负载均衡(Load Balance)集群,简称LB集群:高可用(High Availability)集群,简称 HA 集群:高性能计算(High Per ...

  6. LVS搭建负载均衡集群(二)——DR模式

    (1).DR模式和TUN模式介绍 Direct Routing(直接路由):director分配请求到不同的real server.real server处理请求后直接回应给用户,这样director ...

  7. linux 负载均衡配置 keepalive lvs 使用nginx转发 CentOS7 搭建LVS+keepalived负载均衡

    最近希望能够配置一下负载均衡,在虚拟机上面,但是网上找了很多资料很零散,对于不了解的人,很多不够详细,最近终于做好了,把具体的步骤写下来,方便各位网友查阅学习 这个实验需要安装nginx如果没有安装过 ...

  8. 搭建LVS+Keepalived负载均衡集群

    这两天学习了LVS+Keepalived负载均衡的搭建.网上的教程非常多,可是动起手来遇到不少问题. 如今把自己的搭建过程以及遇到的一些问题给分享下. 硬件环境: Macbook 8G内存.250G ...

  9. Keepalived+LVS+Nginx负载均衡之高可用

    Keepalived+LVS+Nginx负载均衡之高可用 上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致整个系统无法正常 ...

随机推荐

  1. [Jobdu] 题目1455:珍惜现在,感恩生活

    题目描述: 为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买.请问:你用有限的资金最 ...

  2. C++加载dll失败或显示乱码

    右键项目-属性-字符集-使用多字节字符集

  3. .atitit.web 推送实现解决方案集合(3)----dwr3 Reverse Ajax

    .atitit.web 推送实现解决方案集合(3)----dwr3 Reverse Ajax 1. 原理实现 1 2. Page  增加配置,增加回调函数dwr.engine.setActiveRev ...

  4. Android 网络下载图片

    2中方法: 1. public byte[] downloadResource(Context context, String url) throws ClientProtocolException, ...

  5. 李洪强漫谈iOS开发[C语言-053]-小结

    /* 已经学习过的C语言语法 01 基本C程序结构 int main (void) int main(int argc,char *arv){...} 02 基本语句(输入输出) 基本头文件: #in ...

  6. visual studio 2013 触发挂起事件

    在 VS2013 中调试 winddows phone 或者 win rt 程序的时候,需要手动触发 “挂起” 事件. 如果找不到这个按钮: 1.打开菜单栏中的 “自定义” 对话框: 2.选择调试位置 ...

  7. python文件目录操作大全

    python只获取当前目录下的文件夹及文件名 list = os.listdir(rootdir)#列出目录下的所有文件和目录 for line in list: filepath = os.path ...

  8. spring 注解@Resource @Autowired区别

    1.@Autowired寻找类的时候默认是ByType,也就是通过类的类型来寻找类.不过,也可以通过借助@Qualifier("name")来指定寻找的类名 @Autowired ...

  9. CSS学习笔记(12)--Flex 布局教程:实例篇

    原文--阮一峰博客 作者: 阮一峰 日期: 2015年7月14日 上一篇文章介绍了Flex布局的语法,今天介绍常见布局的Flex写法. 你会看到,不管是什么布局,Flex往往都可以几行命令搞定. 我只 ...

  10. 正则 群组 Group

    static void Main(string[] args) { string strUrl = "<a href=\"user.php?act=order_detail& ...