应用环境

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搭建高可用负载均衡的更多相关文章

  1. LVS+Keepalived 实现高可用负载均衡

    前言 在业务量达到一定量的时候,往往单机的服务是会出现瓶颈的.此时最常见的方式就是通过负载均衡来进行横向扩展.其中我们最常用的软件就是 Nginx.通过其反向代理的能力能够轻松实现负载均衡,当有服务出 ...

  2. LVS+Keepalived实现高可用负载均衡(转)

    LVS+Keepalived实现高可用负载均衡   一.原理         1.概要介绍         如果将TCP/IP划分为5层,则Keepalived就是一个类似于3~5层交换机制的软件,具 ...

  3. 【架构师之路】 LVS+Keepalived实现高可用负载均衡

    一.原理        1.概要介绍        如果将TCP/IP划分为5层,则Keepalived就是一个类似于3~5层交换机制的软件,具有3~5层交换功能,其主要作用是检测web服务器的状态, ...

  4. LVS+Keepalived 实现高可用负载均衡集群

    LVS+Keepalived  实现高可用负载均衡集群     随着网站业务量的增长,网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如 F5 ,Array又太贵,你们又是创业型互联公司如何有效 ...

  5. Centos7.2下基于Nginx+Keepalived搭建高可用负载均衡(一.基于Keepalived搭建HA体系)

    说明 本文只为方便日后查阅,不对一些概念再做赘述,网上都有很多明确的解释,也请大家先了解相关概念. 两台搭建HA的服务器是华为云上的ECS(不要忘记开通VPC,保证我们的服务器都处在一个内网环境),由 ...

  6. Nginx+Keepalived搭建高可用负载均衡集群

    本文的重点是Keepalived的配置,Nginx的配置就简略带过.软件:CentOS 7.2 / Nginx 1.12.2 / Keepalived 1.3.9 ha-01:192.168.1.97 ...

  7. Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)

    原文:https://my.oschina.net/xshuai/blog/917097 摘要: Nginx+Keepalived搭建高可用负载均衡环境(HA) http://blog.csdn.ne ...

  8. Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)-转帖篇

    原文:https://my.oschina.net/xshuai/blog/917097 摘要: Nginx+Keepalived搭建高可用负载均衡环境(HA) http://blog.csdn.ne ...

  9. Keepalived+lvs 搭建高可用负载均衡

    本站点停止更新,请访问:blog.coocap.com 不了解负载均衡高可用的童鞋,强烈建议先看keepalived+nginx高可用负载均衡: 传送门(求粉):http://www.cnblogs. ...

随机推荐

  1. 一次linux问题分析原因的简要记录

    1. 这边功能测试 一个linux服务器 4c 16g的内存 发现总是出现异常. dotnet run 起来的一个 程序 总是会被killed 现象为: 2. 一开始怀疑是 打开的文件描述符过多 引起 ...

  2. 【学亮IT手记】jQuery each()函数用法实例

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script sr ...

  3. Golang的select多路复用以及channel使用实践

    看到有个例子实现了一个类似于核弹发射装置,在发射之前还是需要随时能输入终止发射. 这里就可以用到cahnnel 配合select 实现多路复用. select的写法用法有点像switch.但是和swi ...

  4. mysql将视图数据迁移到表中

    #字段必须完全一样 INSERT into table1(所有字段) select * from data.视图

  5. 异步httpclient(httpasyncclient)的使用与总结

    参考:异步httpclient(httpasyncclient)的使用与总结 1. 前言应用层的网络模型有同步与异步.同步意味当前线程是阻塞的,只有本次请求完成后才能进行下一次请求;异步意味着所有的请 ...

  6. 如何在网页中用echarts图表插件做出静态呈现效果

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  7. 转 在PowerDesigner的PDM图形窗口中显示数据列的中文注释

    Name是名称(字段描述),Code是字段名称,Comment是注释名称,ER图中显示的是Name.一般设计时,Name跟comment都设计成描述, 而设计时候常把comment写成中文,name保 ...

  8. 简单触发器实例insert

    create or replace trigger tr_tb_if_archivesafter inserton tb_if_archivesfor each rowdeclarepragma au ...

  9. vuex2.0 基本使用(3) --- getter

    有的组件中获取到 store 中的state,  需要对进行加工才能使用,computed 属性中就需要写操作函数,如果有多个组件中都需要进行这个操作,那么在各个组件中都写相同的函数,那就非常麻烦,这 ...

  10. Spring 使用介绍(二)—— IoC

    一.简单使用:Hello World实例 1.maven添加依赖 <dependency> <groupId>org.springframework</groupId&g ...