160526、高并发之LVS搭建负载均衡
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搭建负载均衡的更多相关文章
- LVS搭建负载均衡(二)DR模型
应用场景:LVS配置负载均衡方式之一:dr 测试环境: 配置步骤: 1. 在主机lvs上安装ipvsadm ~]# yum install ipvsadm -y ~]# ipvsadm //启动:该命 ...
- LVS搭建负载均衡(一)NAT模型
应用场景:LVS配置负载均衡方式之一:nat 测试环境: 测试步骤: 1. 在主机lvs上安装ipvsadm lvs~]# yum install ipvsadm -y lvs~]# ipvsadm ...
- Redis系列四(keepalived+lvs搭建负载均衡)
1.安装Keepalived(主备服务器都要安装) 10.8.80.218 主服务器 10.8.80.217 备服务器 10.8.80.200 虚拟IP $ wget http://www.ke ...
- 高并发之web服务器负载均衡简单介绍
负载均衡种类 F5,七层负载均衡,四层负载均衡 Nginx负载均衡 内置策略.扩展策略 内置策略:IPHash.加权轮询 扩展策略:fair策略.通用hash.一致性hash 加权轮询策略 首先将请求 ...
- LVS搭建负载均衡集群(一)——NAT模式
(1).集群技术的分类 集群技术主要分为三大类:负载均衡(Load Balance)集群,简称LB集群:高可用(High Availability)集群,简称 HA 集群:高性能计算(High Per ...
- LVS搭建负载均衡集群(二)——DR模式
(1).DR模式和TUN模式介绍 Direct Routing(直接路由):director分配请求到不同的real server.real server处理请求后直接回应给用户,这样director ...
- linux 负载均衡配置 keepalive lvs 使用nginx转发 CentOS7 搭建LVS+keepalived负载均衡
最近希望能够配置一下负载均衡,在虚拟机上面,但是网上找了很多资料很零散,对于不了解的人,很多不够详细,最近终于做好了,把具体的步骤写下来,方便各位网友查阅学习 这个实验需要安装nginx如果没有安装过 ...
- 搭建LVS+Keepalived负载均衡集群
这两天学习了LVS+Keepalived负载均衡的搭建.网上的教程非常多,可是动起手来遇到不少问题. 如今把自己的搭建过程以及遇到的一些问题给分享下. 硬件环境: Macbook 8G内存.250G ...
- Keepalived+LVS+Nginx负载均衡之高可用
Keepalived+LVS+Nginx负载均衡之高可用 上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致整个系统无法正常 ...
随机推荐
- 一个表空间offline后alert日志报ORA-01135 和ORA-01110的问题
本文是原创文章.转载请注明出处:http://blog.csdn.net/msdnchina/article/details/44336789 近期遇到一个案例,是将一个表空间offline之后,al ...
- mysql 索引 大于等于 走不走索引 最左前缀
你可以认为联合索引是闯关游戏的设计 例如你这个联合索引是state/city/zipCode 那么state就是第一关 city是第二关, zipCode就是第三关 你必须匹配了第一关,才能匹配第二关 ...
- Hystrix使用Commond的三种方式
目录(?)[-] 1 依赖引入 2 使用 21 Hystrix command 211 同步执行 212 异步执行 213 反应执行 214 三种模式使用区别 22 Fallback 23 Error ...
- httpclient 4种关闭连接
因此这样的配置就会导致每个链接至少要过180S才会被释放,这样在大量请求访问时就必然会造成链接被占满,请求等待的情况. 在通过DEBUH后发现HttpClient在method.releaseConn ...
- GPIO—位带操作
GPIO—位带操作本章参考资料:< STM32F4xx 中文参考手册>存储器和总线构架章节. GPIO 章节,< Cortex®-M4 内核编程手册> 2.2.5 Bit-ba ...
- hdu1331(记忆化搜索)
#include<iostream> #include<stdio.h> #include<string.h> using namespace std; typed ...
- 混合模式程序集是针对“v2.0.50727”版的运行时生成的
混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集. 由于“system.data.sqlite.dll”不完整造成的. 在 ...
- android圆形图像
在网上找了一下,最简单的是利用canvas的setXfermode,来控制图片重合部分的显示策略. 图片混合时,先画的是dst,后画的是src,各种混合的方式如下,其中圆形是dst,正方形是src: ...
- CentOS 6.5 安装 php7 教程 包很重要使用lnmp1.4里面的包
./configure \ --prefix=/usr/local/php-7.0.1 \ --with-mysql=mysqlnd \ --with-pdo-mysql=mysqlnd \ --wi ...
- Lua中的字符串函数库
字符串库中的一些函数是非常简单的: string.len(s) 返回字符串s的长度:string.rep(s, n) 返回重复n次字符串s的串:你使用string.rep( ...