Nginx+Keepalived双机热备
一.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双机热备的更多相关文章
- Nginx+keepalived双机热备(主主模式)
之前已经介绍了Nginx+Keepalived双机热备的主从模式,今天在此基础上说下主主模式的配置. 由之前的配置信息可知:master机器(master-node):103.110.98.14/19 ...
- Nginx+keepalived 双机热备(主主模式)
之前已经介绍了Nginx+Keepalived双机热备的主从模式,今天在此基础上说下主主模式的配置. 由之前的配置信息可知:master机器(master-node):103.110.98.14/19 ...
- 【Nginx】如何基于主从模式搭建Nginx+Keepalived双机热备环境?这是最全的一篇了!!
写在前面 最近出版了<海量数据处理与大数据技术实战>,详情可以关注 冰河技术 微信公众号,查看<我的<海量数据处理与大数据技术实战>出版啦!>一文. 也有不少小伙伴 ...
- nginx + keepalived 双机热备
序 双机热备是指两台机器都在运行,但并非两台机器同时在提供服务. 当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,且切换的时间非常短. keepalived的工作原理是VRRP—— ...
- Nginx+keepalived双机热备(主从模式)
负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行.关于负载均衡介绍,可以参考:linux负载 ...
- Nginx+keepalived 双机热备(主从模式)
负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行.关于负载均衡介绍,可以参考:linux负载 ...
- Nginx+keepalived双机热备(默认路径安装)- 基础篇
负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行.关于负载均衡介绍,可以参考:linux负载 ...
- Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)
原文:https://my.oschina.net/xshuai/blog/917097 摘要: Nginx+Keepalived搭建高可用负载均衡环境(HA) http://blog.csdn.ne ...
- Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)-转帖篇
原文:https://my.oschina.net/xshuai/blog/917097 摘要: Nginx+Keepalived搭建高可用负载均衡环境(HA) http://blog.csdn.ne ...
随机推荐
- mysql中的prepare介绍和应用
简单的用set或者declare语句定义变量,然后直接作为sql的表名是不行的,mysql会把变量名当作表名.在其他的sql数据库中也是如此,mssql的解决方法是将整条sql语句作为变量,其中穿插变 ...
- 21.QT-QTreeWidget,QTabWidget
QTreeWidget树形列表 设置标签相关函数 void QTreeWidget::setHeaderItem (QTreeWidgetItem * item ); void QTreeWidget ...
- MyEclipse中jsp编码设置
window->preference->Myeclipse->files and editors->jsp,设置编码为utf-8 2.window->preference ...
- Redis的数据结构
Redis的数据结构 redis是一种高级的key-value的存储系统,其中value支持五种数据类型. 字符串(String) 哈希(hash) 字符串列表(list) 字符串集合(set) 有序 ...
- Java学习笔记之——Object类
所有类的祖先 如果一个类没有显式继承,则继承Object 每一个类都直接或间接的是Object的子类 相关API: protected Objectclone() 创建并返回此对象的副本. boole ...
- Java-this
当方法中的参数和类中变量重名时,使用 this.变量 调用成员变量. public class test1 { String name; int age; public void te(String ...
- SpringBoot 之基础学习篇.
一.概念简介 SpringBoot 的关键词是“约定俗成”,它根据长久以来的 Spring 开发配置经验,整理出一套适用.普遍.大家都认可的配置方案.所以 SpringBoot 的学习过程中心态一定要 ...
- Laravel篇之Laravel的安装及使用
想搭建一个基于Lavarel和vuejs的个人网站,使用git推送到github存储,千里之行,始于足下,首先要做的用composer来下载laravel框架,并成功运行. 一.使用compose ...
- PHP无限极分类原理
1.递归:程序调用自身的编程技巧称为递归 2.案例: /** * @param 递归 $[name] */ function deeploop(&$i=1){ echo $i; $i++; i ...
- Spider-two
一.网络数据加密:1. md5 / sha1 不可逆加密算法: 结果是十六进制数, 结果不可逆, 多用于文件验证 import hashlib md5_obj = hashlib.md5() sha1 ...