一.Keepalived

Keepalived是保证集群高可用的服务软件。网络中优先级高的节点为master负责响应VIP的ARP包,将VIP和MAC地址映射关系告诉网络内其他主机,还会以多播的形式向网络中发送VRRP通告,告知自己的优先级。backup节点只负责处理master发出的多播包,当发现master的优先级没自己高,或者没收到master的VRRP通告时,backup将自己切换到master状态。

二.环境搭建

环境:QEMU-KVM、客户机Debian(9.4.0)
虚拟机QEMU-KVM安装:虚拟化技术QEMU-KVM入门

1.使用临时快照创建两台虚拟机,以下操作两台虚拟机都需要执行
faramita2016@linux-l9e6:~> qemu-kvm -cpu host -m -hda vdisk.img -net nic -net bridge,br=br0 -snapshot -nographic

2.设置虚拟机静态IP

root@debian:~# cat /etc/network/interfaces
# The primary network interface
allow-hotplug ens3
#iface ens3 inet dhcp
iface ens3 inet static
address 10.0.0.3 // 设置ip
netmask 255.0.0.0
gateway 10.0.0.1
hwaddress ether ::::: // 设置mac地址

3.激活网卡IP

root@debian:~# ip addr del 10.0.0.8/ dev ens3    // 删除客户机原有IP
root@debian:~# ifdown ens3
root@debian:~# ifup ens3

4.安装Nginx、Keepalived
root@debian:~# apt-get install -y nginx keepalived

5.修改/var/www/html/index.nginx-debian.html文件,添加当前虚拟机ip,用于标记实际响应的服务器

root@debian:~# vi /var/www/html/index.nginx-debian.html
……
<h1>Welcome to nginx! 10.0.0.3</h1>
……

三.软件配置

主节点虚拟机(10.0.0.3),备用节点虚拟机(10.0.0.4),虚拟IP(10.0.0.100)
1.在主节点虚拟机,编辑/etc/keepalived/keepalived.conf文件

root@debian:~# cat /etc/keepalived/keepalived.conf
global_defs {
router_id RI_1 // 标识当前keepalived节点
} vrrp_script chk_nginx {
script "/root/chk_nginx.sh" // 定义监控脚本
interval // 执行监控脚本的闹中间隔时间
} vrrp_instance VI_1 {
state MASTER // 设置节点为主节点,节点的初始状态
interface ens3 // 设置绑定虚拟ip的网络接口
virtual_router_id // VRRP组名,指明节点同属一个组
priority // 节点优先级,主节点应当高于备用节点
advert_int // 组播信息发送间隔 #nopreempt // 禁止抢占服务,只对备用节点生效,主节点根据priority优先级进行抢占,不受nopreempty控制 authentication {
auth_type PASS // 设置认证方式
auth_pass // 密码
} virtual_ipaddress {
10.0.0.100/ // 设置vip
} track_script { // 调用监控脚本
chk_nginx
}
}

2.在备用节点虚拟机,编辑/etc/keepalived/keepalived.conf文件,除以下项,其它与主节点相同

    state BACKUP    // 设置节点为主节点,节点的初始状态
priority // 节点优先级

3.在所有节点执行,创建监控脚本,编辑/root/chk_nginx.sh文件,用于监控nginx进程的运行,及关闭keepalived服务

root@debian:~# vi /root/chk_nginx.sh
#!/bin/bash
A=`ps -C nginx --no-header | wc -l`
if [ $A -eq ]
then
/etc/init.d/keepalived stop
fi

四.验证服务

1.主节点虚拟机,启动nginx和keepalived服务

root@debian:~# /etc/init.d/nginx start
root@debian:~# /etc/init.d/keepalived start


执行ip a命令,主节点网卡ens3已绑定vip(10.0.0.100)

2.在备用节点虚拟机,启动nginx和keepalived服务

root@debian:~# /etc/init.d/nginx start
root@debian:~# /etc/init.d/keepalived start


执行ip a命令,备用节点网卡ens3未绑定vip(10.0.0.100)

3.宿主机浏览器访问http://10.0.0.100

出现10.0.0.3的网页,说明keepalived服务已生效,vip已绑定主节点

4.在主节点虚拟机,关闭nginx服务,模拟宕机
root@debian:~# /etc/init.d/nginx stop 

执行ip a命令,主节点网卡ens3未绑定vip(10.0.0.100)

5.在备用节点虚拟机,查询ip

执行ip a命令,备用节点网卡ens3已绑定vip(10.0.0.100)

6.宿主机浏览器访问http://10.0.0.100

出现10.0.0.4的网页,说明keepalived服务已生效,vip已绑定备用节点

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

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

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

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

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

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

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

  4. nginx + keepalived 双机热备

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. mysql中的prepare介绍和应用

    简单的用set或者declare语句定义变量,然后直接作为sql的表名是不行的,mysql会把变量名当作表名.在其他的sql数据库中也是如此,mssql的解决方法是将整条sql语句作为变量,其中穿插变 ...

  2. 21.QT-QTreeWidget,QTabWidget

    QTreeWidget树形列表 设置标签相关函数 void QTreeWidget::setHeaderItem (QTreeWidgetItem * item ); void QTreeWidget ...

  3. MyEclipse中jsp编码设置

    window->preference->Myeclipse->files and editors->jsp,设置编码为utf-8 2.window->preference ...

  4. Redis的数据结构

    Redis的数据结构 redis是一种高级的key-value的存储系统,其中value支持五种数据类型. 字符串(String) 哈希(hash) 字符串列表(list) 字符串集合(set) 有序 ...

  5. Java学习笔记之——Object类

    所有类的祖先 如果一个类没有显式继承,则继承Object 每一个类都直接或间接的是Object的子类 相关API: protected Objectclone() 创建并返回此对象的副本. boole ...

  6. Java-this

    当方法中的参数和类中变量重名时,使用  this.变量 调用成员变量. public class test1 { String name; int age; public void te(String ...

  7. SpringBoot 之基础学习篇.

    一.概念简介 SpringBoot 的关键词是“约定俗成”,它根据长久以来的 Spring 开发配置经验,整理出一套适用.普遍.大家都认可的配置方案.所以 SpringBoot 的学习过程中心态一定要 ...

  8. Laravel篇之Laravel的安装及使用

      想搭建一个基于Lavarel和vuejs的个人网站,使用git推送到github存储,千里之行,始于足下,首先要做的用composer来下载laravel框架,并成功运行. 一.使用compose ...

  9. PHP无限极分类原理

    1.递归:程序调用自身的编程技巧称为递归 2.案例: /** * @param 递归 $[name] */ function deeploop(&$i=1){ echo $i; $i++; i ...

  10. Spider-two

    一.网络数据加密:1. md5 / sha1 不可逆加密算法: 结果是十六进制数, 结果不可逆, 多用于文件验证 import hashlib md5_obj = hashlib.md5() sha1 ...