lvs负载均衡技术高可用
更新时间:2024-03-20 08:55:01 阅读量: 综合文库 文档下载
LVS + Keepalived 实现高可用、负载均衡 Web 集群
简介:
LVS 是 Linux Virtual Server 的简写,Linux 虚拟服务器的意思,是一个虚拟的服务器集群系统,此项目由章文嵩博士于 1998 年 5 月成立,是中国最早出现的自由软件项目之一。
LVS 负载均衡集群系统的优点: 1、提高吞吐量
想获得更高的吞吐量,在 LVS 中只需增加 Real-server 即可,其开销只是线性增长。如选择更换一台更高性能的服务器来获得相当的吞吐量,开销要大很多。 2、冗余
如果 LVS 中某台 Real-server 由于需要升级或其它原因不能对外提供服务,其退出及恢复工作并不会对用户造成服务中断。 3、适应性
不管是需要吞吐量逐渐变化、还是快速变化,服务器的增减对客户都是透明的。 LVS 负载均衡集群系统的三种转发机制: 1、Virtual Server via NAT ( VS/NAT )
VS/NAT 网络地址转换模式,服务器可以运行任何支持 TCP/IP 协议的操作系统,它只需要一个公网 IP 地址配置在 LVS 主机上,后端真实服务器都可以使用私有地址。
它的缺点是扩充能力有限,当后端真实服务器达到一定数量时,LVS 本机有可能成为集群瓶颈,因为整个集群中的客户端请求和响应封包都要通过 LVS 负载均衡主机。 2、Virtual Server via IP Tunneling ( VS/TUN )
VS/TUN IP 隧道模式,负载均衡 LVS 主机只将请求分配到不同的真实服务器,真实服务器将结果直接返回给客户端。这样 LVS 可以处理海量的请求,而不会成为集群系统瓶颈。
并且 IP 隧道模式不限制真实服务器位置,只要系统支持 IP 隧道协议并且网络可达就可以。多了一层 IP 隧道的开销,且并不是所有系统都支持此协议。 3、Virtual Server via Direct Routing ( VS/DR )
VS/DR 直接路由模式,同样 LVS 主机只处理客户端到服务器端的连接,响应信息由真实服务器直接返回给客户端。
DR 模式要求所有真实服务器必须至少有一块网卡与 LVS 主机在同一物理网段中,且真实服务器网络设备或设备别名不作 ARP 响应。
Keepalived 起初是 LVS 设计的,专门用来监控集群系统中各个服务节点的状态,后来又加入了 VRRP( 虚拟路由冗余协议 )解决静态路由出现的单点故障问题,
通过 VRRP 协议可以实现网络不间断稳定运行。因此,Keepalived 不仅具有服务器状态检测和故障隔离功能,还具有 HA Cluster 功能。
Keepalived 作为 LVS 的扩展项目,因此。Keepalived 可以与 LVS 无缝整合,轻松构建一套高性能的负载均衡集群系统。
环境描述:( CentOS 6.6_x86_64 minimal ) LVS VIP 192.168.214.50 LVS Master 192.168.214.20 LVS Backup 192.168.214.30 Real-Server-1 192.168.214.10 Real-Server-1 192.168.214.40 软件包下载地址:
Ipvsadm http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz Keepalived http://www.keepalived.org/software/keepalived-1.2.10.tar.gz 一、安装环境依赖包
shell >yuminstall -y gccgcc-c++ makepcre pcre-devel kernel-devel openssl-devel libnl-devel popt-devel popt-static
二、下载、安装 ipvsadm 、keepalived
shell >wget
http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
shell >tar zxf ipvsadm-1.26.tar.gz
shell > cd ipvsadm-1.26
shell >make ; makeinstall
shell > ipvsadm -v
ipvsadm v1.262008/5/15 (compiled with popt and IPVS v1.2.1)
## 安装还是很简单的
shell >wget http://www.keepalived.org/software/keepalived-1.2.10.tar.gz
shell >tar zxf keepalived-1.2.10.tar.gz
shell > cd keepalived-1.2.10
shell > ./configure --sysconf=/etc
--with-kernel-dir=/usr/src/kernels/2.6.32-504.23.4.el6.x86_64
## --sysconf 指定 keepalived.conf 的存放位置 --with-kernel-dir 指定使用内核源码中的头文件,即 include 目录
shell >make ; makeinstall
shell >ln -s /usr/local/sbin/keepalived /sbin/
shell > keepalived -v
Keepalived v1.2.10 (07/01,2015)
## 安装也是蛮简单的 三、配置 keepalived.conf
shell > vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id MASTER ## keepalived 服务器标识符,可以随意设定( 貌似也是全局唯一 )
}
vrrp_instance VI_1 { ## 定义一个名为 VI_1 的 VRRP 实例
state MASTER ## Keepalived 服务器角色,MASTER 为主、BACKUP 为备
interface eth0 ## 指定 HA 监测网络接口
virtual_router_id 51 ## 虚拟路由标识,同一个 VRRP 实例使用唯一的标识,主备必须一样
priority 100 ## 节点优先级,同一 VRRP 实例中 MASTER 的优先级必须大于 BACKUP
advert_int 1 ## MASTER / BACKUP 之间同步检查间隔时间,单位 秒
authentication { ## 节点之间通信验证类型、密码 ,同一 VRRP 实例中,MASTER / BACKUP 必须使用相同的密码才可以通信
auth_type PASS
auth_pass 888
}
virtual_ipaddress { ## 虚拟 IP 地址,又称漂移 IP 。可以通过 ip add 在 MASTER 上查看是否绑定
192.168.214.50
}
}
virtual_server 192.168.214.5080 { ## 定义虚拟服务器
delay_loop 6 ## 定义健康检查时间间隔,单位 秒
lb_algo rr ## 负载均衡调度算法,支持 rr 、wrr 、lc 、wlc 、lblc 、sh 、dh 等
lb_kind DR ## LVS 负载均衡机制,支持 NAT 、TUN 、DR
nat_mask 255.255.255.0 ## 子网掩码
persistence_timeout 120 ## 会话保持时间,单位 秒。提供动态页面 session 保持功能,同一 IP 该值时间内被持续分配到同一台节点服务器上
protocol TCP ## 转发协议类型,支持 TCP 、UDP
real_server 192.168.214.1080 { ## 定义节点服务器
weight 1 ## 节点权重值,数字越大权重越高,分配到的连接越多。主要用于后端节点服务器性能不统一
notify_down /etc/keepalived/real_down.sh ## 该节点服务器处于 DOWN 状态后执行的脚本
TCP_CHECK { ## 健康检测方式,支持 HTTP_GET 、SSL_GET 、TCP_CHECK 、SMTP_CHECK 、MISC_CHECK
connect_port 80 ## 检测端口,不指定时默认为 real_server 指定的端口
connect_timeout 3 ## 无响应超时时间,单位 秒
nb_get_retry 3 ## 重试次数
delay_before_retry 3 ## 重试间隔,单位 秒
}
}
real_server 192.168.214.4080 { ## 第二台节点服务器
weight 1
notify_down /etc/keepalived/real_down.sh
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
shell > vim /etc/keepalived/real_down.sh
#!/bin/bash
Mail='admin@mail.com'
echo\ | mail -s \ $Mail
## 当 real server 处于 DOWN 状态时执行的脚本,LVS 要启动 Sendmail 、Postfix 或其它邮件服务
四、启动 Keepalived 并加入开机启动、配置防火墙规则
shell > /etc/init.d/keepalived start
shell > chkconfig --add keepalived
shell > chkconfig --level 35 keepalived on
shell > iptables -I INPUT 4 -p tcp --dport 80 -j ACCEPT
shell > service iptables save
## 现在使用 ip add 可以看到绑定了 VIP ,并且 /var/log/messages 日志文件中也有关于 VIP 绑定、real server 的检测结果
五、以上都是在 MASTER 主机的操作,下面配置 BACKUP 主机
## 步骤一、二、四完全一样,主要将步骤三的 keepalived.conf 中 router_id 、state 、priority 修改为 BACKUP 、BACKUP 、80 即可
## 同样可以使用 ip add 查看 VIP 信息,不过它现在是 BACKUP 状态,没有绑定 VIP 为正常,通过 /var/log/messages 日志文件可以看到处于 BACKUP 状态。 六、配置 Real-server ,后端节点服务器
Real-Server-1
shell >yum -y install httpd
shell >echo\> /var/www/html/index.html
shell > /etc/init.d/httpd start
shell > iptables -I INPUT -p tcp --dport 80 -j ACCEPT
Real-Server-2
shell >yum -y install httpd
shell >echo\> /var/www/html/index.html
shell > /etc/init.d/httpd start
shell > iptables -I INPUT -p tcp --dport 80 -j ACCEPT
shell > vim /etc/init.d/realserver.sh ## Real-Server-1 / Real-Server-2 都要建立此脚本,并设为开机启动
#!/bin/bash
VIP='192.168.214.50'
. /etc/init.d/functions
case\in
start)
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
echo\> /proc/sys/net/ipv4/conf/lo/arp_ignore
echo\> /proc/sys/net/ipv4/conf/lo/arp_announce
echo\> /proc/sys/net/ipv4/conf/all/arp_ignore
echo\> /proc/sys/net/ipv4/conf/all/arp_announce
echo\
;;
stop)
/sbin/ifconfig lo:0 down
echo\> /proc/sys/net/ipv4/conf/lo/arp_ignore
echo\> /proc/sys/net/ipv4/conf/lo/arp_announce
echo\> /proc/sys/net/ipv4/conf/all/arp_ignore
echo\> /proc/sys/net/ipv4/conf/all/arp_announce
echo\
;;
*)
echo\
exit 1esac
shell >chmod a+x /etc/init.d/realserver.sh
shell > /etc/init.d/realserver.sh start
shell >echo\>> /etc/rc.local ## 加入开机启动
## 此脚本用于节点服务器绑定 VIP ,并抑制响应 VIP 的 ARP 请求。
## 这样做的目的是为了不让关于 VIP 的 ARP 广播时,节点服务器应答( 因为节点服务器都绑定了 VIP ,如果不做设置它们会应答,就会乱套 ) 七、测试
1、首先单独测试节点服务器能不能访问
## 单独访问 192.168.214.10 192.168.214.40 ,如果可以看到页面显示 Welcome to Real-Server-1 和 Welcome to Real-Server-2 则节点服务器正常 2、分别查看节点服务器是否都绑定了 VIP
## 分别在节点服务器上使用 ifconfig lo:0 ,如果可以看到 lo:0 虚拟网卡被绑定了 VIP 192.168.214.50 则节点服务器正常
3、首先查看 MASTER 服务器有没有绑定 VIP ,状态是不是 MASTER ,检测后端节点服务器是不是成功
## 使用 ip add 查看是否绑定 VIP ,tail /var/log/messages 查看服务器状态是不是 MASTER ,检测节点服务器有没有连接成功信息:
Jul 217:38:44 localhost Keepalived_healthcheckers[1015]: TCP connection to [192.168.214.10]:80 success.
Jul 217:38:44 localhost Keepalived_healthcheckers[1015]: Adding service [192.168.214.10]:80 to VS [192.168.214.50]:80
Jul 217:44:01 localhost Keepalived_healthcheckers[1015]: TCP connection to [192.168.214.40]:80 success.
Jul 217:44:01 localhost Keepalived_healthcheckers[1015]: Adding service [192.168.214.40]:80 to VS [192.168.214.50]:80
## 服务器状态信息:
Jul 213:07:48 localhost Keepalived_vrrp[1016]: VRRP_Instance(VI_1) Transition to MASTER STATE
Jul 213:07:49 localhost Keepalived_vrrp[1016]: VRRP_Instance(VI_1) Entering MASTER STATE
Jul 213:07:49 localhost Keepalived_vrrp[1016]: VRRP_Instance(VI_1) setting protocol VIPs.
Jul 213:07:49 localhost Keepalived_vrrp[1016]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for192.168.214.50
Jul 213:07:49 localhost Keepalived_healthcheckers[1015]: Netlink reflector reports IP 192.168.214.50 added
4、同样查看 BACKUP 服务器有没有绑定 VIP ,状态是不是 BACKUP ,检测后端节点服务器是不是成功
## 发现没有绑定 VIP 为正常,状态为 BACKUP 为正常,同样能够检测到后端节点服务器为正常,相关信息如下:
Jul 217:27:06 localhost Keepalived_vrrp[1017]: VRRP_Instance(VI_1) Entering BACKUP STATE
Jul 217:27:06 localhost Keepalived_vrrp[1017]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(11,12)]
Jul 217:27:06 localhost Keepalived_healthcheckers[1016]: Using LinkWatch kernel netlink reflector...
Jul 217:38:40 localhost Keepalived_healthcheckers[1016]: TCP connection to [192.168.214.10]:80 success.
Jul 217:38:40 localhost Keepalived_healthcheckers[1016]: Adding service [192.168.214.10]:80 to VS [192.168.214.50]:80
Jul 217:44:01 localhost Keepalived_healthcheckers[1016]: TCP connection to [192.168.214.40]:80 success.
Jul 217:44:01 localhost Keepalived_healthcheckers[1016]: Adding service [192.168.214.40]:80 to VS [192.168.214.50]:80
5、客户端访问 VIP 测试负载均衡
## 直接访问 192.168.214.50 ,如果可以访问到页面证明成功。
## 当多次访问后发现,页面并没有发生变化,也就是说并没有负载均衡。 ## 在 MASTER 上使用 ipvsadm -Ln 命令看到的信息如下:
shell > ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.214.50:80 rr persistent 120
->192.168.214.10:80 Route 100
->192.168.214.40:80 Route 1087
## 发现有 87 次访问都被分配到了 192.168.214.40 这台节点服务器上,这正常吗 ? ## 不要着急,这是正常的!还记得大明湖畔的夏雨荷吗?哦不,还记得 persistence_timeout 120 这个参数吗?
## 正因为设置了 session 保持时间,所以持续的访问被分配到了某一台节点服务器。 ## 现在把此参数注释掉,测试一次( 记得重启 keepalived )。
shell > ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.214.50:80 rr
->192.168.214.10:80 Route 1026
->192.168.214.40:80 Route 1026
## 可以看到请求被均衡的分配到了现台节点服务器上( rr 轮询调度算法 ),并且页面也在两台节点服务器上切换。
## 当节点服务器宕机后会发生什么 ?
shell >tail /var/log/messages
Jul 218:38:36 localhost Keepalived_healthcheckers[1636]: TCP connection to [192.168.214.40]:80 failed !!!
Jul 218:38:36 localhost Keepalived_healthcheckers[1636]: Removing service [192.168.214.40]:80 from VS [192.168.214.50]:80
## 检测失败,节点服务器 192.168.214.40 被从 IPVS 中移除
shell > ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.214.50:80 rr
->192.168.214.10:80 Route 1017
## 宕机的节点服务器被移除了
Jul 218:45:48 localhost Keepalived_healthcheckers[1705]: TCP connection to [192.168.214.40]:80 success.
Jul 218:45:48 localhost Keepalived_healthcheckers[1705]: Adding service [192.168.214.40]:80 to VS [192.168.214.50]:80
## 当节点服务器修复后,会自动将节点服务器加入集群中。 6、客户端访问 VIP 测试高可用
## 当 MASTER 服务器无法提供服务时,VIP 会在 MASTER 上自动移除,BACKUP 服务器会提升为 MASTER 状态,绑定 VIP 、接管服务。
## 当 MASTER 修复加入网络后,会自动抢回 VIP ,成为 MASTER 身份。这再繁忙的网络环境中是不理想的。
## 可以通过 nopreempt 参数来设置不抢占功能,设置此参数时需要注意,必须将之前修复的 MASTER 机器状态设为 BACKUP ,优先级还保持最高。
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.214.50:80 rr
->192.168.214.10:80 Route 1017
## 宕机的节点服务器被移除了
Jul 218:45:48 localhost Keepalived_healthcheckers[1705]: TCP connection to [192.168.214.40]:80 success.
Jul 218:45:48 localhost Keepalived_healthcheckers[1705]: Adding service [192.168.214.40]:80 to VS [192.168.214.50]:80
## 当节点服务器修复后,会自动将节点服务器加入集群中。 6、客户端访问 VIP 测试高可用
## 当 MASTER 服务器无法提供服务时,VIP 会在 MASTER 上自动移除,BACKUP 服务器会提升为 MASTER 状态,绑定 VIP 、接管服务。
## 当 MASTER 修复加入网络后,会自动抢回 VIP ,成为 MASTER 身份。这再繁忙的网络环境中是不理想的。
## 可以通过 nopreempt 参数来设置不抢占功能,设置此参数时需要注意,必须将之前修复的 MASTER 机器状态设为 BACKUP ,优先级还保持最高。
正在阅读:
lvs负载均衡技术高可用03-20
泛微协同办公平台(e-cology)系统安装、升级、重装手册_SQL_Server版本05-16
2008年高三一模试题分析及下步复习建议06-29
毕业论文 - Internet环境中远程教学系统的网络安全问题01-26
三级中医医院等级评审工作情况汇报02-29
2012版物理《6年高考4年模拟》:牛顿运动定律试题(有参考答案)11-29
数字逻辑 - 习题一 - 答案09-15
2011高考数学课下练兵:统计案例05-14
坚持不放弃:公司激励员工的文章02-08
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 负载
- 均衡
- 可用
- 技术
- lvs
- 四年级数学教师家长会发言稿
- 七年级语文上册单元测试一试卷新人教版
- 电大成专2012公共关系学平时作业1-4参考答案
- 2008年陕西省高等教育自学考试1月、7月本科课程安排表 - 图文
- ERP沙盘模拟 - 市场总监个人小结
- 大坝安全监测
- 网络时代的营销
- 小学奥数测试题-综合模拟-通用版
- 协同作业安全操作规范
- 网工考试各项目复习题-网络考试-桌面及系统
- 二年级上册音乐教案打花巴掌(4) - 人音版(简谱)
- 南开16秋学期《零售管理与实务》在线作业
- 300平米别墅装修价格要多少?300平别墅装修技巧?
- 解除担保责任承诺书
- 高三化学《物质结构元素周期律复习》教案
- 社会治安综合治理工作先进个人材料
- 小学生英语规范书写方法谈
- 2014普洱市公务员考试行测逻辑判断要点
- 高考作文经典素材三(3000字)
- 45о斜卧位在经皮肾镜碎石中的应用与护理