keepalived学习记录
一直以来,对于Nginx+Keepalived实现高可用都停留在一个比较模糊的阶段。
只大致理解部署两个Nginx节点,其中只会有一个节点提供服务(主节点)。
当主节点挂了,自动切换到另一个节点(备用节点),这时候就是备用节点来提供服务,以此来达到高可用的目的。
但是对于主备切换的实现原理一直都不太清楚,加上tcp也有个keepalive,很容易和keepalived搞混。
于是专门花点时间来学习一下,通过记录博客来巩固一下。
要理解主备切换的原理,首先得了解什么是VIP(Virtual IP):虚拟IP。
下面两篇文章讲解得比较清楚:
https://www.cnblogs.com/myseries/p/11409895.html
https://www.cnblogs.com/wangwangfei/p/15575929.html
说是虚拟IP,看起来其实也就是一个普通的IP,似乎并没有什么差别。
但是和一般IP不同的是,虚拟IP不会分配给真实的主机。
换句话说,虚拟IP对应的不是某一台固定的主机(可以认为对应多台主机),它所对应的主机是会动态变化的
类似如下图:
VIP实际对应哪个IP,其实是不确定的,因为是可以随实际情况动态变化的。
一个IP对应的主机动态变化,这是怎么实现的呢,这就涉及到ARP协议了,简单理解为一个将IP地址转换为主机MAC地址的协议。
通过修改IP地址和MAC地址的对应关系,即可做到IP切换了(常说的VIP漂移,其实大致就是这样了)。
这个东西如果要自己去做,有大量的细节在里面,最好的方法当然是利用现成的工具软件了。
而且服务高可用可不只是IP切换这么简单,如何检测主节点挂掉,VIP漂移到备用节点,也有很多工作要做。
用keepalived,就可以只用配置一下,就轻松做到。
说了这么多,那keepalived到底是什么
一句话概括:keepalived一个基于VRRP协议来实现的服务高可用方案。
好像还是比较难以理解,
下面实际安装下keepalived来进行体验:
1、安装keepalived:
yum install -y keepalived
keepalived --version
systemctl start keepalived
systemctl status keepalived
2、修改keepalived配置文件
keepalived配置文件默认为:/etc/keepalived/keepalived.conf
默认安装好是有示例配置的,我这边直接把这个文件清空,写入自己的配置:
vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 101advert_int 1authentication {auth_type PASSauth_pass 123456}virtual_ipaddress {172.19.103.240}
}
3、重新加载配置
systemctl reload keepalived
4、查看是否生效
ip addr show eth0
可以看到已经生效
也可以通过执行 ip -br a命令来进行查看
目前只是单台机器,在多台机器上的操作类似
通过修改priority可以控制哪台实际生效
更多参考链接:
http://www.linuxvirtualserver.org/software/ipvs.html
https://www.redhat.com/sysadmin/keepalived-basics
https://www.redhat.com/sysadmin/ha-cluster-linux
keepalived学习记录相关推荐
- Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)
Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...
- HTML5与CSS3权威指南之CSS3学习记录
title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) ...
- springboot @cacheable不起作用_Springboot学习记录13 使用缓存:整合redis
本学习记录的代码,部分参考自gitee码云的如下工程.这个工程有详尽的Spingboot1.x教程.鸣谢! https://gitee.com/didispace/SpringBoot-Learnin ...
- 【Cmake】Cmake学习记录
Cmake学习记录 1.1 常例 add_library(gen_reference_infogen_reference_info/gen_reference_info.hgen_reference_ ...
- ASP.NETCore学习记录(一)
ASP.NETCore学习记录(一) asp.net core介绍 Startup.cs ConfigureServices Configure 0. ASP.NETCore 介绍 ASP.N ...
- Android开发技术周报176学习记录
Android开发技术周报176学习记录 教程 当 OkHttp 遇上 Http 2.0 http://fucknmb.com/2018/04/16/%E5%BD%93OkHttp%E9%81%87% ...
- add函数 pytorch_Pytorch学习记录-Pytorch可视化使用tensorboardX
Pytorch学习记录-Pytorch可视化使用tensorboardX 在很早很早以前(至少一个半月),我做过几节关于tensorboard的学习记录. https://www.jianshu.co ...
- java之字符串学习记录
java之字符串学习记录 public class StringDemo { public static void main(String[] args) { //静态初始化字符串 String s1 ...
- Redis的学习记录
Redis的学习记录 1.先导了解 1.1 NOSQL概述 1.1.1 为什么要用NoSql? 1.1.2 NoSql了解 1.1.3 NoSql特点 1.1.4 NoSQL的四大分类 2. Redi ...
最新文章
- getOwnPropertyNames() keys()
- 字节面试必须拿下的十道算法题,你会几道?
- 【转】Compile、Make和Build的区别
- Free tour II SPOJ - FTOUR2 点分治 + 树状数组
- 自定义 Spark item 的渲染器
- 无锁atomicInteger
- Ubuntu18.04找不到wifi适配器解决办法以及怎么上网
- PCB和PCBA设计及标准
- 大数据与数据分析概述
- HDU 4609 3-idiots (思维+FFT卷积)
- 4.2.1 Duration and Convexity
- docker 执行py文件
- 仿淘宝、京东多重商品属性组合Sku标签
- 此计算机将网络限制为,解决win7无法连接wifi提示“此计算机当前已将连接限制为...”的方法...
- C语言入门习题系列二(含答案)
- 【2019.05】极验滑动验证码破解 geetest
- SQL查询重复记录 sql 查重
- innodb buffer pool管理--数据页的访问
- 【Java】学习日记 Day11
- [CSDN帮助]勤写勋章说明
热门文章
- vue3.2+js,web端canvas实现手写签名
- 闪电网络(三):建立闪电通道+利用闪电通道转账
- SSM拦截ajax请求判断session过期
- AMBA AHB面试题连载(一)
- Winpython环境下mayavi配置
- 天下手游服务器维护需要多久,天下手游22日更新维护内容详细解读
- wordpress免插件实现添加“友情链接”功能,非常简单!
- 解析!2018软件测试官方行业报告
- 请选出可用作c语言用户标识符的是6,请选出可用作C语言用户标识符的一组标识符____...
- 看《功勋》于敏,真的看到了人和人的差距!