原理

首先有一个虚拟ip暴露给客户端,虚拟ip对应的mac地址为一台真实服务器,

即用户向虚拟ip发送一个请求,该请求会被分发到真实服务器上。

现在有2台真实服务器,一台master,一台backup,master和backup上都运行着keepalived

当master挂了的时候,backup检测之后,自己成为master,且arp缓存虚拟ip对应的mac地址将变为

backup的mac地址,这样请求虚拟ip的报文会被发送到backup

架构图如下:

安装

主机:192.168.1.227

备机:192.168.1.246

虚拟ip:192.168.1.99

安装命令:

wget http://www.keepalived.org/software/keepalived-1.2.13.tar.gz
tar
-zxvf keepalived-1.2.13.tar.gz
cd keepalived-1.2.13
./configure --disable-fwmark --prefix=/usr/local/keepalived
make && make install

整理:

mkdir /etc/keepalived/
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/

配置:

vi /etc/keepalived/keepalived.conf

Master

! Configuration File for keepalived

global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
} vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.99
}
}

Backup 和master一样,只要修改如下地方:

vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 99 # 这里改为99,master优先级是100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.99
}
}

管理命令:

停止
service keepalived stop
启动
service keepalived start
重启
service keepalived restart
查看状态
service keepalived status

测试

在本机上查看虚拟ip状态

ip add

在同一网段的其他机器上查询arp缓存

arp -a

这里的1.99对应的mac地址是1.227

停掉master的keepalived

service keepalived stop

在同一网段的其他机器上查询arp缓存

arp –a

发现1.99的mac地址已经变为slave的mac地址

那么主备双机热备就完成了

总结:本篇文章实现的功能

1.master主机挂了,或者master 上keepalived挂了之后,可以切换到slave

2.master的网络不通的时候,可以立即切换到slave,但是如果只是master上的应用出现问题的时候,是不会

主动切换的,这个要通过编写脚本来监控应用出问题,这个问题后续再讨论吧。

Keepalived 实现双机热备的更多相关文章

  1. 使用keepalived实现双机热备

    通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.下面来以keepalived结合tom ...

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

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

  3. tomcate+keepalived配置双机热备

    环境清单: 应用1:192.168.51.101 应用2:192.168.51.75 虚拟IP:192.168.51.179 一.安装Tomcat(参照其他文档): 二.部署应用,并修改响应的端口(9 ...

  4. nginx:负载均衡实战(四)nginx+keepalived配置双机热备

    1.下载安装 下载keepalived地址:http://www.keepalived.org/download.html 解压安装: tar -zxvf keepalived-.tar.gz 安装o ...

  5. nginx+keepalived实现双机热备高可用性

    搭建准备: 机器两台 ip分别为192.168.100.128 192.168.100.129(能够用虚拟机測试.虚拟机网络模式为NET模式.且为静态ip) 另外须要准备一个虚拟ip对外提供服务.即通 ...

  6. Java技术中如何使用keepalived实现双机热备

    Keepalived简介 Keepalived是Linux下一个轻量级别的高可用解决方案.高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可用行,狭 ...

  7. HAproxy + keepalived 实现双机热备

    一.HAProxy简介: HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点, ...

  8. Nginx+Keepalived主从双机热备+自动切换

    1 安装配置nginx 参考: http://www.cnblogs.com/jager/p/4388202.html 2 安装配置keepalived tar xvf keepalived-1.2. ...

  9. docker nginx1.7.6+keepalived实现双机热备

    0.前提条件 环境两台ubuntu版本14.04 64位系统(并获取root权限) 假设两台服务器ip为:172.16.34.214(master),172.16.34.215(backup),kee ...

随机推荐

  1. emberjs 循环中设置model的不同属性值

    //var grades = ['1', '2', '3', '4', '7', '8', '9']; ']; grades.forEach(function (item) { App.Templat ...

  2. Java计算两个经纬度间的距离最简单的方式

    开发中经常会遇到计算两个点(经纬度)之间的距离或者计算最近门店的场景,下面简单实现一下如何计算两个经纬度之间相隔的距离. 1.导入geodesy的maven依赖 或者到阿里云maven仓库下载jar包 ...

  3. Spring-全局异常拦截

    Spring MVC那一篇里提到了异常拦截来做参数校验返回,那里是对特定的 controller 做异常捕捉,但是我们也可以选择全局拦截处理 快速开始 @ResponseBody @Controlle ...

  4. gRPC 的 RoadMap 20151022 更新

    gRPC是一个高性能.通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发 ...

  5. AutoFac在项目中应用的体会

    AutoFac的工作原理就是:注册类并映射到接口,通过注入后返回相应实例化的类! 先来简单介绍下Autofac的使用      1.通过Nuget或代码安装autofac 安装autofac :ins ...

  6. ASP.NET Core 2 学习笔记(十)视图

    ASP.NET Core MVC中的Views是负责网页显示,将数据一并渲染至UI包含HTML.CSS等.并能痛过Razor语法在*.cshtml中写渲染画面的程序逻辑.本篇将介绍ASP.NET Co ...

  7. 序列化模块1 json

    ......得到一个 字符串 的结果 过程就叫序列化 字典 / 列表 / 数字 /对象 -序列化->字符串 为什么要序列化 # 1.要把内容写入文件 序列化 # 2.网络传输数据 序列化 字符串 ...

  8. python学习之老男孩python全栈第九期_数据库day004 -- 作业

    https://www.cnblogs.com/YD2018/p/9451809.html 11. 查询学过“001”并且也学过编号“002”课程的同学的学号.姓名 select student.si ...

  9. python学习之老男孩python全栈第九期_数据库day002知识点总结 —— MySQL数据库day2(全部)

    一. 复习1. MySQL: - 服务端 - 客户端2. 通信交流 - 授权 - SQL语句 - 数据库 创建数据库: create database db1 default charset utf8 ...

  10. js-权威指南学习笔记16

    1.元素的style属性可以用来设置样式,但是不适合用来查询样式(只能查询到内联样式). 2.CSS里的层叠指示了应用于文档中任何给定元素的样式规则是各个来源的层叠效果:Web浏览器的默认样式表.文档 ...