Keepalived简介

什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了, 也就是所谓的高可用或热备,用来防止单点故障的发生。

Keepalived采用VRRP(virtual router redundancy protocol,虚拟路由冗余协议)热备份协议,以软件的方式实现linux服务器的多机热备功能。VRRP是针对路由器的一种备份解决方案――由多台路由器组成一个热备组。通过共用的虚拟IP地址对外提供服务;每个热备组内同一时刻只有一台主服务器提供服务,其他服务器处于冗余状态,若当前在线的服务器失败,其他服务器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务。

先放个拓扑图:

主机和备机全部安装keepalived

#yum install keepalived

主机:

#vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

54949@qq.com

}

notification_email_from root

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_script chk_http_port {

script "</dev/tcp/127.0.0.1/80"

interval 1

weight -2

}

vrrp_instance VI_1 {

state MASTER

#    nopreempt

interface eth0

virtual_router_id 51

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

10.0.0.10

}

# track_script {

#        chk_http_port

#    }

}

#虚拟服务器部分

virtual_server 10.0.0.10 80 {

delay_loop 6 #设定运行情况检查时间 单位s

lb_algo rr #负载调度算法 rr即轮叫算法

lb_kind DR #设置LVS负载机制 NAT TUN DR 三种模式可选

nat_mask 255.255.248.0

persistence_timeout 0  #会话保持时间

#有了这个会话保持功能 用户的请求会被一直分发到某个服务节点

#如果用户在动态页面50s内没有任何动作,那么后面就会被分发到其他节点

#如果用户一直有动作,不受50s限制

protocol TCP  #协议

sorry_server 127.0.0.1 80

#real server部分

real_server 10.0.0.11 80 {

weight 1  #服务节点权值,数字越大,权值越高

#权值的大小可以为不同性能的服务器分配不同的负载

#这样才能有效合理的利用服务器资源

TCP_CHECK {  #状态检查部分

connect_timeout 3 #3s无响应超时

nb_get_retry 3  #重试次数

delay_before_retry 3   #重试间隔

connect_port 80 #连接端口

}

}

#real server部分

real_server 10.0.0.12 80 {

weight 1  #服务节点权值,数字越大,权值越高

#权值的大小可以为不同性能的服务器分配不同的负载

#这样才能有效合理的利用服务器资源

TCP_CHECK {  #状态检查部分

connect_timeout 3 #3s无响应超时

nb_get_retry 3  #重试次数

delay_before_retry 3   #重试间隔

connect_port 80 #连接端口

}

}

}

备机:

#vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

54949@qq.com

}

notification_email_from root

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_script chk_http_port {

script "</dev/tcp/127.0.0.1/80"

interval 1

weight -2

}

vrrp_instance VI_1 {

state BACKUP

#    nopreempt

interface eth0

virtual_router_id 51

priority 90

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

10.0.0.10

}

# track_script {

#        chk_http_port

#    }

}

#虚拟服务器部分

virtual_server 10.0.0.10 80 {

delay_loop 6 #设定运行情况检查时间 单位s

lb_algo rr #负载调度算法 rr即轮叫算法

lb_kind DR #设置LVS负载机制 NAT TUN DR 三种模式可选

nat_mask 255.255.248.0

persistence_timeout 0  #会话保持时间

#有了这个会话保持功能 用户的请求会被一直分发到某个服务节点

#如果用户在动态页面50s内没有任何动作,那么后面就会被分发到其他节点

#如果用户一直有动作,不受50s限制

protocol TCP  #协议

#real server部分

real_server 10.0.0.11 80 {

weight 1  #服务节点权值,数字越大,权值越高

#权值的大小可以为不同性能的服务器分配不同的负载

#这样才能有效合理的利用服务器资源

TCP_CHECK {  #状态检查部分

connect_timeout 3 #3s无响应超时

nb_get_retry 3  #重试次数

delay_before_retry 3   #重试间隔

connect_port 80 #连接端口

}

}

#real server部分

real_server 10.0.0.12 80 {

weight 1  #服务节点权值,数字越大,权值越高

#权值的大小可以为不同性能的服务器分配不同的负载

#这样才能有效合理的利用服务器资源

TCP_CHECK {  #状态检查部分

connect_timeout 3 #3s无响应超时

nb_get_retry 3  #重试次数

delay_before_retry 3   #重试间隔

connect_port 80 #连接端口

}

}

}

/etc/init.d/keepalived start

后端rs上分别执行

vi /etc/init.d/lvs-node

#!/bin/bash
# description: Config realserver lo and apply noarp
#Written by :NetSeek http://www.linuxtone.org

SNS_VIP=10.129.5.10

. /etc/rc.d/init.d/functions

case "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
/sbin/route add -host $SNS_VIP dev lo:0
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
echo "RealServer Start OK"

;;
stop)
ifconfig lo:0 down
route del $SNS_VIP >/dev/null 2>&1
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"
;;
status)
# Status of LVS-DR real server.
islothere=`/sbin/ifconfig lo:0 | grep $SNS_VIP`
isrothere=`netstat -rn | grep "lo:0" | grep $SNS_VIP`
if [ ! "$islothere" -o ! "isrothere" ];then
# Either the route or the lo:0 device
# not found.
echo "LVS-DR real server Stopped."
else
echo "LVS-DR real server Running."
fi
;;
*)
echo "Usage: $0 {start|stop|status}"
exit 1
esac

exit 0

测试断开一个web服务或加入一个web服务

keepalived 故障模拟

Keepalived+LVS+nginx双机热备的更多相关文章

  1. keepalived+LVS 实现双机热备、负载均衡、失效转移 高性能 高可用 高伸缩性 服务器集群

    本章笔者亲自动手,使用LVS技术实现实现一个可以支持庞大访问量.高可用性.高伸缩性的服务器集群 在读本章之前,可能有不少读者尚未使用该技术,或者部分读者使用Nginx实现应用层的负载均衡.这里大家都可 ...

  2. 如何使用keepalived实现nginx双机热备

    1.linux安装方法:yum -y install keepalived 配置开机启动:sudo chkconfig  keepalived on 查看keepalivede运行日志:/var/lo ...

  3. keepalived+nginx双机热备+负载均衡

    Reference: http://blog.csdn.net/e421083458/article/details/30092795 keepalived+nginx双机热备+负载均衡 最近因业务扩 ...

  4. haproxy/nginx+keepalived负载均衡 双机热备 邮件报警 实战及常见问题

    Haproxy 做http和tcp反向代理和负载均衡keepalived 为两台 Haproxy 服务器做高可用/主备切换.nginx   为内网服务器做正向代理,如果业务需求有变化,也可以部分替代 ...

  5. nginx负载均衡三:keepalive+nginx双机热备 和负载均衡

    环境 centos7.0 nginx:1.15 1.主备四台服务器 f1:负载均衡  192.168.70.169 f2:web站点  192.168.70.170 f3:web站点  192.168 ...

  6. Nginx+keepalived 高可用双机热备(主从模式/双主模式)

    基础介绍负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行. 关于负载均衡介绍,可以参考:li ...

  7. Nginx+keepalived 高可用双机热备(主从模式)

    环境:centos7.6 最小化安装 主:10.11.1.32 从:10.11.1.33 VIP:10.11.1.130 修改主节点主机名: hostnamectl set-hostname web_ ...

  8. 在Nginx容器安装Keepalived后端项目双机热备

    docker exec -it n1 bash apt-get update apt-get install keepalived apt-get install vim 再次之前要配置VIP虚拟IP ...

  9. keepalived nginx 双机热备图文讲解

    http://blog.csdn.net/wanglei_storage/article/details/51175418

随机推荐

  1. 4.2w起步的软件公司创业历程

    调查说,中国民营企业的生命期平均是2.8年,如今我的企业已走过近四年,而这一年却是我的迷茫期,不知道何去何从,现在写下 来与大家一起分享一下,写得较为凌乱,大家将就着看一下吧:) 先交待一下自己,我来 ...

  2. 阿里云自定义日记文件无法通过ftp下载

    异常处理汇总 ~ 修正果带着你的Net飞奔吧!http://www.cnblogs.com/dunitian/p/4599258.html 有可能是个例,xftp不行(对linux支持很好),Cute ...

  3. ASP.NET Core中的依赖注入(4): 构造函数的选择与服务生命周期管理

    ServiceProvider最终提供的服务实例都是根据对应的ServiceDescriptor创建的,对于一个具体的ServiceDescriptor对象来说,如果它的ImplementationI ...

  4. jQuery源码学习感想

    还记得去年(2015)九月份的时候,作为一个大四的学生去参加美团霸面,结果被美团技术总监教育了一番,那次问了我很多jQuery源码的知识点,以前虽然喜欢研究框架,但水平还不足够来研究jQuery源码, ...

  5. jvm系列(一):java类的加载机制

    java类的加载机制 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装 ...

  6. Http压测工具wrk使用指南

    用过了很多压测工具,却一直没找到中意的那款.最近试了wrk感觉不错,写下这份使用指南给自己备忘用,如果能帮到你,那也很好. 安装 wrk支持大多数类UNIX系统,不支持windows.需要操作系统支持 ...

  7. LINQ to SQL语句(19)之ADO.NET与LINQ to SQL

    它基于由 ADO.NET 提供程序模型提供的服务.因此,我们可以将 LINQ to SQL 代码与现有的 ADO.Net 应用程序混合在一起,将当前 ADO.NET 解决方案迁移到 LINQ to S ...

  8. web设计页面跳转的方法

    一.asp.net c# 打开新页面或页面跳转 1. 最常用的页面跳转(原窗口被替代):Response.Redirect("newpage.aspx"); 2. 利用url地址打 ...

  9. C# 拷贝指定文件夹下的所有文件及其文件夹到指定目录

    要拷贝的文件及其文件夹结构 其中.lab文件不能覆盖 /// <summary> /// 拷贝oldlab的文件到newlab下面 /// </summary> /// < ...

  10. hibernate的get和load的区别

    在hibernate中我们知道如果要从数据库中得到一个对象,通常有两种方式,一种是通过session.get()方法,另一种就是通过session.load()方法,然后其实这两种方法在获得一个实体对 ...