LVS+Keepalived搭建高可用负载均衡
应用环境:
LVS负责多台WEB端的负载均衡(LB);Keepalived负责LVS的高可用(HA),这里介绍主备模型。
测试环境:


配置步骤:
1. 安装软件
在LVS-1和LVS-2两台主机上安装ipvsadm和keepalived
~]# yum install ipvsadm keepalived -y
在两台Web主机上安装Nginx
~]# yum install nginx -y //修改访问主页内容,方便最后测试,这里改为了Nginx Web 1 [IP:12]和Nginx Web 1 [IP:13]
2. 配置Keepalived
说明:keepalived底层有关于IPVS的功能模块,可以直接在其配置文件中实现LVS的配置,不需要通过ipvsadm命令再单独配置。
[root@lvs-1 ~]# vim /etc/keepalived/keepalived.conf // Master配置好的信息如下
! Configuration File for keepalived
global_defs {
router_id LVS ## 不一定要与主机名相同,也不必与BACKUP的名字一致
}
vrrp_instance VI_1 {
state MASTER ## LVS-1配置了为主,另外一台LVS-2配置为BACKUP
interface eth0 ## 注意匹配网卡名
virtual_router_id 51 ## 虚拟路由ID(0-255),在一个VRRP实例中主备服务器ID必须一样
priority ## 优先级值设定:MASTER要比BACKUP的值大
advert_int 3 ## 通告时间间隔:单位秒,主备要一致
authentication { ##认证机制
auth_type PASS ## 默认PASS; 有两种:PASS或AH
auth_pass 1111 ## 默认1111; 可多位字符串,但仅前8位有效
}
virtual_ipaddress {
138.138.82.222 ## 虚拟IP;可多个,写法为每行一个
}
}
virtual_server 138.138.82.222 {
delay_loop 3 ## 设置健康状态检查时间
lb_algo rr ## 调度算法,这里用了rr轮询算法,便于后面测试查看
lb_kind DR ## 这里测试用了Direct Route 模式,
# persistence_timeout 1 ## 持久连接超时时间,先注释掉,不然在单台上测试时,全部会被lvs调度到其中一台Real Server
protocol TCP
real_server 138.138.82.12 {
weight
TCP_CHECK {
connect_timeout 10 ##设置响应超时时间
nb_get_retry 3 ##设置超时重试次数
delay_before_retry 3 ##设置超时重试间隔时间
connect_port
}
}
real_server 138.138.82.13 {
weight
TCP_CHECK {
connect_timeout
nb_get_retry
delay_before_retry
connect_port
}
}
}
保存,退出;
[root@lvs-2 ~]# vim /etc/keepalived/keepalived.conf //同样,修改BACKUP上的配置文件,如下
! Configuration File for keepalived
global_defs {
router_id LVS
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id
priority
advert_int
authentication {
auth_type PASS
auth_pass
}
virtual_ipaddress {
138.138.82.222
}
}
virtual_server 138.138.82.222 {
delay_loop
lb_algo rr
lb_kind DR
# persistence_timeout
protocol TCP
real_server 138.138.82.12 {
weight
TCP_CHECK {
connect_timeout
nb_get_retry
delay_before_retry
connect_port
}
}
real_server 138.138.82.13 {
weight
TCP_CHECK {
connect_timeout
nb_get_retry
delay_before_retry
connect_port
}
}
}
保存,退出;
启动并加入开机启动
[root@lvs-1 ~]# service keepalived start
[root@lvs-1 ~]# chkconfig keepalived on
同样,在lvs-2上也启动keepalived并加入开机启动:
[root@lvs-2 ~]# service keepalived start
[root@lvs-2 ~]# chkconfig keepalived on
查看:


说明:
此时,Virtual IP是飘在MASTER上面,如果断开MASTER(关闭MASTER上keepalived),Virtual IP就会飘到BACKUP上;
再当MASTER复活(启动keepalived),Virtual IP会再次回到MATSTER上,可通过/var/log/message查看变更信息;
3. 配置WEB端(两台Nginx)
这里直接新建一个配置脚本,方便操作;
~]# vim lvs-web.sh //新建一个脚本,假定该脚本名为lvs-web.sh
#!/bin/bash
VIP=138.138.82.222
case "$1" in
start)
echo "start LVS of RealServer DR"
/sbin/ifconfig lo: $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:
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
;;
stop)
/sbin/ifconfig lo: down
echo "close LVS of RealServer DR"
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 "Usage: $0 {start|stop}"
exit
esac
exit
保存,退出;
运行脚本:
~]# sh lvs-web.sh start // start:启动; stop:停止;
4. 测试
测试①
若一切顺利,正常测试如下:
~]# while true ; do curl 138.138.82.222; sleep 1;done //每秒执行一次curl 138.138.82.222

默认现在访问VIP:138.138.82.222,走的是LVS-1(MASTER)
测试②
断开MASTER:VIP飘到BACKUP上,访问VIP正常,Client 轮询依旧;
复活MASTER:VIP飘回MASTER上,访问VIP正常,Client 轮询依旧; // 成功实现:LVS的高可用 和 Nginx的负载均衡
测试③
手动断开Nginx,然后再手动启动Nginx:

结束.
LVS+Keepalived搭建高可用负载均衡的更多相关文章
- LVS+Keepalived 实现高可用负载均衡
前言 在业务量达到一定量的时候,往往单机的服务是会出现瓶颈的.此时最常见的方式就是通过负载均衡来进行横向扩展.其中我们最常用的软件就是 Nginx.通过其反向代理的能力能够轻松实现负载均衡,当有服务出 ...
- LVS+Keepalived实现高可用负载均衡(转)
LVS+Keepalived实现高可用负载均衡 一.原理 1.概要介绍 如果将TCP/IP划分为5层,则Keepalived就是一个类似于3~5层交换机制的软件,具 ...
- 【架构师之路】 LVS+Keepalived实现高可用负载均衡
一.原理 1.概要介绍 如果将TCP/IP划分为5层,则Keepalived就是一个类似于3~5层交换机制的软件,具有3~5层交换功能,其主要作用是检测web服务器的状态, ...
- LVS+Keepalived 实现高可用负载均衡集群
LVS+Keepalived 实现高可用负载均衡集群 随着网站业务量的增长,网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如 F5 ,Array又太贵,你们又是创业型互联公司如何有效 ...
- Centos7.2下基于Nginx+Keepalived搭建高可用负载均衡(一.基于Keepalived搭建HA体系)
说明 本文只为方便日后查阅,不对一些概念再做赘述,网上都有很多明确的解释,也请大家先了解相关概念. 两台搭建HA的服务器是华为云上的ECS(不要忘记开通VPC,保证我们的服务器都处在一个内网环境),由 ...
- Nginx+Keepalived搭建高可用负载均衡集群
本文的重点是Keepalived的配置,Nginx的配置就简略带过.软件:CentOS 7.2 / Nginx 1.12.2 / Keepalived 1.3.9 ha-01:192.168.1.97 ...
- Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)
原文:https://my.oschina.net/xshuai/blog/917097 摘要: Nginx+Keepalived搭建高可用负载均衡环境(HA) http://blog.csdn.ne ...
- Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)-转帖篇
原文:https://my.oschina.net/xshuai/blog/917097 摘要: Nginx+Keepalived搭建高可用负载均衡环境(HA) http://blog.csdn.ne ...
- Keepalived+lvs 搭建高可用负载均衡
本站点停止更新,请访问:blog.coocap.com 不了解负载均衡高可用的童鞋,强烈建议先看keepalived+nginx高可用负载均衡: 传送门(求粉):http://www.cnblogs. ...
随机推荐
- Notepad++的一个用法 转换为unix 格式的文件
1. 跟昨天的linux 下面无法执行脚本的blog 一样 今天发现 notepad++ 有一个功能如下图: 双击 就能够选择文件的类型.. 转换为 unix 格式 就可以 在linux 下面执行了. ...
- C# Note1:深入浅出WPF-MVVM篇
一.资源说明 (1)配套视频:深入浅出WPF 讲的不错! 待更!
- MyBatis映射文件3(参数处理Map)
参数命名 POJO 如果多个参数,正好是业务逻辑的数据模型,那么我们就可以直接传入POJO,这样#{}中就可以直接使用属性名 Map 如果多个参数不是业务逻辑的数据模型,没有对应的POJO,为了方便, ...
- 解决方法:CentOS7用yum安装软件显示错误:cannot find a valid baseurl for repo: base/7/x86_64
在Linux学习中,发现使用yum安装软件出现以下的错误: 百度了各种方法,很多人也发现光是修改REBOOT=yes也没用,多次进行挂载.修改网卡配置文件.重置IP地址.重启网络.创建又删除配置文件的 ...
- python爬虫之git的安装
一.初始 1.发展历史 *最开始没有对代码的管理,导致很多东西混乱和丢失. *后来大家想了一个办法,用最简单最笨的方法,各种复制文件夹. *然后就出现了版本控制的工具. 1.单机版:RCS(198 ...
- drf图片字段序列化完整路径
一.需求 前端需要它想要的数据格式: 原有的数据格式: 二.定制化: 1.可以嵌套序列化pol_type,lit_des,area_detail,但结构如下: class ChrDetailSeria ...
- 关于jenkins旧的构建导致磁盘空间不足问题
简述: Jenkins在每一次的执行构建后,都会对该构建的项目生成一个历史构建记录以及生成一份历史构建的项目发布包,长期累积可能会占用大量磁盘空间 jenkins构建jobs路径如下图: 解决办法: ...
- 织梦后台如何生成站点地图sitemap.xml
第一步在网站根目录建立sitemap.php文件 内容如下: 写一个计划任务文件命名为generate_sitemap.php,放在/plus/task目录里,文件内容如下: <?php//定时 ...
- 开机自动获取spark用户名和服务器
import os.path import getpass import platform import time username = getpass.getuser() #获取当前用户名 home ...
- Operation not allowed on a unidirectional dataset错误?
关于网友提出的“ Operation not allowed on a unidirectional dataset错误?”问题疑问,本网通过在网上对“ Operation not allowed o ...