一.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. C#隐藏与显示系统任务栏和开始菜单栏按钮

    隐藏与显示系统任务栏和开始菜单栏按钮:直接上代码:       private const int SW_HIDE = 0;  //隐藏       private const int SW_REST ...

  2. spring_05装配bean

    一.前言 <bean id="user1" scope="singleton" init-method="myInit" destro ...

  3. ubuntu中subline无法使用搜狗输入法

    今天使用subline编写python程序,发现在ubuntu下无法调用搜狗输入法输入中文,结果一番搜索发现github上的sublime-text-imfix项目能修复此问题,项目地址是:https ...

  4. Js 控制随机数概率

    如: 取 1~10 之间的随机数,那么他们的取值范围是: 整数 区间 概率 1 [0,1) 0.1 2 [1,2) 0.1 3 [2,3) 0.1 4 [3,4) 0.1 5 [4,5) 0.1 6 ...

  5. js 随机点名

    1.对象构造函数 设置节点与人名 constructor({ printElement, startElement, stopElement , person }) { this.list = per ...

  6. elementUI vue upload完整示例

    elementUI 和vue 还有axios +java的完整示例, 代码敲了很久, 累死了, 以后用就直接复制了 ,很值吧!!! 1.html <!DOCTYPE html> <h ...

  7. maven将依赖依赖打包到jar中

    通过maven-assembly-plugin插件可以实现将依赖jar包打包到自己的jar包中的需求,只需要在pom.xml中配置该插件即可,配置如下: <build> <plugi ...

  8. MongoDB 3.0 WT引擎参考配置文件

    单实例: systemLog: destination: file ###日志存储位置 path: /data/mongodb/log/mongod.log logAppend: true stora ...

  9. springboot Redis 缓存

    1,先整合 redis 和 mybatis 步骤一: springboot 整合 redis 步骤二: springboot 整合 mybatis 2,启动类添加 @EnableCaching 注解, ...

  10. 3Delight feats. OpenVDB

    Full GI, no multiple scattering now (no point-cloud similar solution in 3Delight now) Blackbody Cart ...