简单介绍:

Keepalived是Linux下面实现VRRP备份路由的高可靠性运行软件,能够真正做到

主服务器和备份服务器故障时IP瞬间无缝交接;

Keepalived的目的是模拟路由器的高可用;

Heartbeat或Corosync的目的是实现Service的高可用.

那heartbaet与corosync又应该选择哪个好?

corosync的运行机制更优于heartbeat,从heartbeat分离出来的pacemaker在以后的开发当中

更倾向于corosync,所以现在corosync+pacemaker是最佳组合.

环境说明:

master机器(master-node):10.0.0.5/172.16.1.5

slave机器(slave-node):10.0.0.6/172.16.1.6

公用的虚拟IP(VIP):10.0.0.3

网站URL:

svn-------dev.qingfeng.com/svn(10.0.0.8:801/svn)

svn web---dev.qingfeng.com/submin(10.0.0.8:801/submin)

网站------www.qingfeng.com(10.0.0.7:80&10.0.0.8:80)

oa--------oa.qingfeng.com(10.0.0.7:802&10.0.0.8:802)

反向代理总结:

多域名指向是通过虚拟主机的不同server实现;

同一域名的不同虚拟目录是通过每个server下面的不同location实现;

反向代理到后端的服务器需要在vhost/LB.conf下面配置upstream,

然后在server或location中通过proxy_pass引用.

我们的目的:

如果master主服务器的keepalived停止服务,slave从服务器会自动接管VIP对外服务;

一旦主服务器的keepalived恢复,会重新接管VIP.

这并不是我们需要的,我们需要的是当NginX停止服务,无法启动时,能够自动切换.

# ip addr add 10.0.0.3/24 dev eth0 label eth0:0

yum -y install keepalived

1.master的keepalived配置

cat /etc/keepalived/keepalived.conf
global_defs {
notification_email {
174646513@qq.com
}
notification_email_from 17461651@qq.com
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id lb01
} vrrp_script chk_http_port {
script "/service/scripts/chk_nginx.sh" # 通过脚本监测
interval 2 # 脚本执行间隔,每2s检测一次
weight -5 # 脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级 -5
fall 2 # 检测连续2次失败才算确定是真失败,会用weight减少优先级(1-255之间)
rise 1 # 检测1次成功就算成功,不修改优先级
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3/24 dev eth0 label eth0:1
} track_script {
chk_http_port # 这个设置不能紧挨着写在vrrp_script配置块的后面,否则nginx监控失效.
}
}

2.监测nginx状态的脚本

mkdir -p /service/scripts
cat /service/scripts/chk_nginx.sh
#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
/application/nginx/sbin/nginx
sleep 2
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
/etc/init.d/keepalived stop
exit 1
fi
fi
chmod +x chk_nginx.sh

3.slave的keepalived配置

global_defs {
notification_email {
174646513@qq.com
}
notification_email_from 17461651@qq.com
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id lb02
} vrrp_script chk_http_port {
script "/service/scripts/chk_nginx.sh"
interval 2
weight -5
fall 2
rise 1
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3/24 dev eth0 label eth0:1
} track_script {
chk_http_port
}
}

4.总结:

测试机10.0.0.51

cat /etc/hosts
10.0.0.3 dev.qingfeng.com www.qingfeng.com oa.qingfeng.com
[root@db01 ~]# curl dev.qingfeng.com/svn/
this is the page of svn-10.0.0.8
[root@db01 ~]# curl dev.qingfeng.com/submin/
this is the page of submin-10.0.0.8
[root@db01 ~]# curl www.qingfeng.com
www-10.0.0.7:80
[root@db01 ~]# curl www.qingfeng.com
www-10.0.0.8:80

用ifconfig无法查看到虚拟ip时,可以用ip addr

无论master还是slave,当其中的一个keepalived服务停止后,vip都会漂移到keepalived还存活的节点上;

如果master上的nginx服务挂了,则nginx会自动重启,重启失败后会自动关闭keepalived,vip也会转移到slave上.

主从模式参考博客:https://www.cnblogs.com/kevingrace/p/6138185.html

Nginx+keepalived双机热备(主从模式)的更多相关文章

  1. Nginx+Keeplived双机热备(主从模式)

    Nginx+Keeplived双机热备(主从模式) 参考资料: http://www.cnblogs.com/kevingrace/p/6138185.html 双机高可用一般是通过虚拟IP(漂移IP ...

  2. 【Nginx】如何基于主从模式搭建Nginx+Keepalived双机热备环境?这是最全的一篇了!!

    写在前面 最近出版了<海量数据处理与大数据技术实战>,详情可以关注 冰河技术 微信公众号,查看<我的<海量数据处理与大数据技术实战>出版啦!>一文. 也有不少小伙伴 ...

  3. Nginx+keepalived双机热备(主主模式)

    之前已经介绍了Nginx+Keepalived双机热备的主从模式,今天在此基础上说下主主模式的配置. 由之前的配置信息可知:master机器(master-node):103.110.98.14/19 ...

  4. Nginx+keepalived 双机热备(主主模式)

    之前已经介绍了Nginx+Keepalived双机热备的主从模式,今天在此基础上说下主主模式的配置. 由之前的配置信息可知:master机器(master-node):103.110.98.14/19 ...

  5. nginx + keepalived 双机热备

    序 双机热备是指两台机器都在运行,但并非两台机器同时在提供服务. 当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,且切换的时间非常短. keepalived的工作原理是VRRP—— ...

  6. Nginx+keepalived双机热备(主从模式)

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

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

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

  8. Nginx+keepalived双机热备(主主模式)

    IP说明: master机器(master-node):10.0.0.5/172.16.1.5   VIP1:10.0.0.3slave机器(slave-node): 10.0.0.6/172.16. ...

  9. Nginx+keepalived双机热备(默认路径安装)- 基础篇

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

随机推荐

  1. 【mysql】mysql存储过程实例

    ```mysql DELIMITER $$   DROP PROCEDURE IF EXISTS `system_number_update` $$   CREATE DEFINER=`root`@` ...

  2. Yii2.0 的安装学习

    视频学习地址: 后盾网视频: http://www.houdunren.com/houdunren18_lesson_76?vid=7350 与<Yii框架>不得不说的故事—基础篇 htt ...

  3. pandas按索引插入对应值的处理方法 - join

    在工作中遇到一个问题即,实时的车辆数据中,需要将车辆的vid(一个Series)对应上其通用名称,以及车辆用途等信息进行统计. 正常的小规模操作是利用一个循环,查找vid 在另一张vid对应车辆名称用 ...

  4. python 面向对象基础和高级复习

    面向对象基础 面向对象编程 面向过程编程:类似于工厂的流水线 优点:逻辑清晰 缺点:扩展性差 面向对象编程:核心是对象二字,对象属性和方法的集合体,面向对象编程就是一堆对象交互 优点:扩展性强 缺点: ...

  5. Java-basic-7-面向对象

    继承 在Java中,每个子类只能有一个父类,但可以继承多个接口. 子类继承父类,类定义的时候用extends. 继承接口,用implements. 重写 声明为final的方法不能被重写. 声明为st ...

  6. Windows中redis的下载及安装、设置

    本文是转载自:https://www.cnblogs.com/wxjnew/p/9160855.html 除了原文的东西还有自己遇到的一些问题,这里记录一下. 一.下载: 下载地址: https:// ...

  7. java8新特性:接口的默认方法与静态方法

    接口中一共可以定义三种方法: 1.抽象方法,也就是需要实现者必须实现的方法,最常见的那种 2.默认方法,不需要实现者实现 3.静态方法,不需要实现者实现 默认方法: 允许在已有的接口中添加新方法,而同 ...

  8. day03_07 变量的重新赋值01

    在cmd中退出python,需要使用quit()命令 name = "Alex Li" name2 = name print(name,name2) name = "Ja ...

  9. shutil——高级的 文件、文件夹、压缩包 处理模块

    高级的 文件.文件夹.压缩包 处理模块 shutil.copyfileobj(fsrc, fdst[, length])复制文件内容(不包含元数据)从类文件对象src到类文件对dst.可选参数leng ...

  10. SDOJ 2605 闲荡

    描述 L 饭后无聊,便在 BugTown 里闲荡. BugTown 共有 N 栋房屋和 M 条有向道路.每栋房屋都有一个非负整数 vi 作为标识. BugTown 有一个特性十分神奇:从任意一个房屋离 ...