案例搭建

环境是三台机器,两台也可以

最后一个IP是测试的VIP

 192.168.124.21 centos6-1
192.168.124.22 centos6-2
192.168.124.23 centos6-3 192.168.124.29 centos6-x

每台机器都安装nginx和keepalived(简称KP)

yum install -y nginx
yum install -y keepalived

在每台机器的Nginx静态页面上添加机器标识

vim /usr/share/nginx/html/index.html

位置:

保存后,都把Nginx跑起来,检查页面效果:

配置KP:

将KP的配置文件进行备份

cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

然后清空源文件的所有配置(除了第一行声明),只保留一个配置

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.124.29
}
}

配置项:

    state MASTER  # 节点角色 MASTER / BACKUP
interface eth0 # 网卡名称 默认配置
virtual_router_id 51 # 虚拟路由ID 节点之间一致
priority 100 # 权重,数值越高,路由分配到此节点的几率越高
advert_int 1 # 主备节点间同步检查间隔(秒) virtual_ipaddress { # 配置虚拟地址(VIP) 节点之间一致
192.168.124.29
}

将1号机的主节点配置分发给其他机器

scp /etc/keepalived/keepalived.conf root@centos-2:/etc/keepalived
scp /etc/keepalived/keepalived.conf root@centos-3:/etc/keepalived

其他机器只需要更改下面高亮的地方:

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 {
192.168.124.29
}
}

KP配置完成后,全部启动

service keepalived start

检查主节点是否多出一个VIP地址

[root@centos6-1 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:b3:0b:d7 brd ff:ff:ff:ff:ff:ff
inet 192.168.124.21/24 brd 192.168.124.255 scope global eth0
inet 192.168.124.29/32 scope global eth0
inet6 fe80::20c:29ff:feb3:bd7/64 scope link
valid_lft forever preferred_lft forever

访问VIP地址查看页面:

可以发现访问VIP地址分配到了1号机上面

现在把1号机的KP下线,模拟节点故障

service keepalived stop

可以发现路由分配到了2号机

把2号机的KP也下线,就分配到最后的3号机上面

现在把1号机的KP重新启动起来,访问又会回到1号机上面

KP的作用可以保障服务的正常运作,就是高可用。

MASTER挂了就让BACKUP顶上去用,当MASTER好了,就重新分配回来继续运行

这样保证主节点故障的时候还能持续提供应用服务

从上面的案例可以得知,KP是通过节点下线来完成IP飘逸的

下面的问题如何知道服务是故障的状态

KP监测配置

在KP配置文件追加新的配置块:

# 定义用于实例执行的脚本内容,比如可以在线降低优先级,用于强制切换
vrrp_script CHK_NGIXN {
script "/etc/keepalived/check_nginx.sh" # 脚本位置
interval 2
# 间隔长度(秒)
weight 2 # 权重?
}

原先的实例配置块,绑定这个脚本

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.124.29
}
track_script {
CHK_NGINX
}

}

KP附带一个定时执行任务,周期性的执行这个脚本

检查我们想绑定的服务是否为故障状态

这里是check_nginx脚本的内容:

最重要的是下面我标亮的语句

#nginx是否正常运行,如果不正常重启一次,如不能恢复则关闭keepalive,漂移vip地址
#!/bin/bash
#检测nginx是否启动了
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then #如果nginx没有启动就启动nginx
service nginx start #重启nginx
# systemctl start nginx.service #Centos7.X用此命令
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then #nginx重启失败,则停掉keepalived服务,进行VIP转移
killall keepalived
fi
fi

然后每一台机器都这样进行配置,用来检测Nginx是否健康

总结一下几个关键点:

1、做VIP热备需要绑定一个VIP 和 一个路由ID上面

2、KP的主节点只能存在一个,其余的都是备节点

3、使用Tracer配置块来做心跳检测,检测的脚本触发了故障状态,需要把KP下线,来实现IP飘逸

【Keepalived】KP + NGINX 多机热备学习的更多相关文章

  1. ansible自动部署Keepalived实现Nginx服务双机热备

    脚本实现通过ansible-playbook自动化安装Keepalived和配置,主要解决问题如下: Keepalived自动化安装: keepalived_vrid配置,自动根据vip获取最后一段作 ...

  2. Nginx+keepalived 脚本安装主从双机热备自动切换解决方案

    Nginx+keepalived 脚本安装主从双机热备自动切换解决方案 2013-07-02 19:24:13 标签:filesnginx keepalived 原创作品,允许转载,转载时请务必以超链 ...

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

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

  4. nginx简单双机热备:backup参数的使用

    nginx简单双机热备:backup参数的使用 nginx简单双机热备:backup参数的使用

  5. keepalived+nginx实现双机热备

    keepalived是一个类似于layer3, 4, 5 交换机制的软件,也就是我们平时说的第3层.第4层和第5层交换.Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机, ...

  6. 【Nginx】(主从热备)LVS+Keepalived+Nginx实现高性能负载均衡集群

    一.LVS 1.1 概述 1.2 Nginx与LVS区别什么 二.Keepalived 2.1 概述 2.2 keepalived和其工作原理 三.LVS+Keepalived+Nginx 搭建双机主 ...

  7. Nginx+Keepalived主从配置(双机主从热备)+Tomcat集群

    拓扑环境 以下表格是这次測试须要的拓扑环境,几台server.每台server上安装什么,都有介绍. server名称 系统版本号 预装软件 IP地址/VIP Nginx主server CentOS ...

  8. nginx笔记5-双机热备原理

    1动静分离演示: 将笔记3的Demo改造一下,如图所示: 改造完成后,其实就是在网页上显示一张图片 现在启动Tomcat运行起来,如图: 可以看到图片的请求是请求Tomcat下的图片. 现在,通过把静 ...

  9. 使用keepalived监控tomcat 达到双机热备

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

  10. 使用Keepalived实现Nginx的双机主备高可用

    1.概述 前面我们聊过使用 Nginx 为 后端Tomcat 做负载均衡.高可用,但是这时Nginx又成了单点,如果Nginx不幸挂掉,整个网站便无法访问. 此时我们就会用到另一个软件 -- Keep ...

随机推荐

  1. autojs拉人进群

    /* 微信 version:8.0.1 语言:AutoJs [https://hyb1996.github.io/AutoJs-Docs/#/] @author:奔跑的前端猿 */ auto.wait ...

  2. Visual Studio编程效率提升技巧集(提高.NET编程效率)

    前言 本文大姚将为你介绍一些Visual Studio的使用技巧和建议,旨在帮助.NET开发者更加高效地利用Visual Studio进行编程工作.无论你是.NET初学者还是经验丰富的.NET开发者, ...

  3. Qt-udp通信

    1  简介 参考视频:https://www.bilibili.com/video/BV1XW411x7NU?p=61 说明:UDP是面向无连接的,客户端并不与服务器不建立连接,直接向服务器发送数据, ...

  4. boss直聘__zp_stoken__逆向

    声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标网站 aHR0cHM6 ...

  5. vue-cli 单文件组件 工具安装

    https://cli.vuejs.org/zh/ 在很多 Vue 项目中,我们使用 Vue.component 来定义全局组件,紧接着用 new Vue({ el: '#container '}) ...

  6. 算法学习笔记(39): 2-SAT

    SAT 问题,也就是可满足性问题 Boolean Satisfiability Problem,是第一个被证明的 NPC 问题. 但是特殊的 2-SAT 我们可以通过图论的知识在线性复杂度内求解,构造 ...

  7. rust 程序设计笔记(2)所有权 & 引用

    所有权 数据存储在栈和堆上,存放在栈上的数据都是已知所占据空间的 突然的问题 // 内存中的栈是怎么存储数据的? 好的,想象一下你有一摞盘子.你只能从上面放盘子,也只能从上面拿盘子,这就是栈的工作方式 ...

  8. vite+vue3+ts+elementPlus前端框架搭建 [一]

    记录下搭建vite + vue3 + ts + elementPlus项目的过程及遇到的问题. 建议使用pnpm安装依赖,npm切换到pnpm 链接地址:[https://www.pnpm.cn/in ...

  9. cuda性能优化-2.访存优化

    简介 在CUDA程序中, 访存优化个人认为是最重要的优化项. 往往kernel会卡在数据传输而不是计算上, 为了最大限度利用GPU的计算能力, 我们需要根据GPU硬件架构对kernel访存进行合理的编 ...

  10. Unity 罗技G29接入

    Unity 罗技G29接入 unity g29unity logictech g29g29 Unity 罗技G29接入 一. 使用Unity Standard Assets中的CrossPlatfor ...