首页
云原生
Linux
常用bat文件
Maven教程
mongodb
设计模式
Oracle常用知识梳理
更多……
申请加入课程
虚拟IP(VIP)原理
负载均衡
etcd 分布式key-value存储
Helm 规范及应用开发
Kubernetes 探针
Kubernetes 的备份与迁移
caddy 学习纪要
中标麒麟操作系统安装kubesphere问题处理
Kubernetes 启动命令的使用举例
Kubesphere 健康检查器配置说明手册
Docker 镜像打入python环境私有化案例
Kubernetes 部署sftp
HELM 使用入门
自动化测试
Kubesphere3.2.0 版本单节点安装记录
GitLab 安装和使用
yaml 文件语法
NFS 网络文件存储
Docker 基础知识
Docker 常用操作知识
Docker 创建镜像
Docker Machine
Docker 网络
Harbor 主从复制
Centos7 安装Harbor1.10
Jenkins入门介绍
Jenkins 调度kettle
jenkins+docker+ks8流程推动使用
代码质量管理平台SonarQube的安装、配置与使用和jenkins的集成
详解CI、CD相关概念
k8s 云管理方案
CoreDNS
Kubectl 命令行工具
K8S 的pod相关知识
Kubernetes Ingress
K8S 集群服务器提供要求
K8s 集群服务器信息验证
Kubernetes 添加nfs存储
Kubernetes 搭建mysql集群
Kubernetes 部署sqlserver
k8s 错误处理记录
Kubernetes 资源使用优化
Kubernetes 资源抢占策略
Kubesphere中概念梳理
记录一次客户环境安装kubesphere的流程
Kubesphere 离线自动化安装完整过程
kubesphere 安装错误处理记录
虚拟IP(VIP)原理
星辰
2019-12-16
0
0
6972
人
0
人评论
0
人举报
[TOC] # 虚拟IP(VIP)原理 何为虚IP,就是一个未分配给真实主机的IP,也就是说对外提供数据库服务器的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的任意一个都可以连接到这台主机,所有项目中数据库链接项配置的都是这个虚IP,当服务器发生故障无法对外提供服务时,动态将这个虚IP切换到备用主机。 ## 高可用 ### 高可用性的概念 高可用性HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。HA系统是目前企业防止核心计算机系统因故障停机的最有效手段。 ### 实现高可用性的方式 实现HA的方式,一般采用两台机器同时完成一项功能,比如`数据库`服务器,平常只有一台机器对外提供服务,另一台机器作为热备,当这台机器出现故障时,自动动态切换到另一台热备的机器。 ### 故障检测的实现方式 * 心跳,采用定时发送一个数据包,如果机器多长时间没响应,就认为是发生故障,自动切换到热备的机器上去。怎么实现自动切换那? ## 虚拟IP原理分析 开始我也不明白这是怎么实现的,以为是软件动态改`IP`地址,其实不是这样,其实现原理主要是靠`TCP/IP`的`ARP`协议。因为`ip`地址只是一个逻辑地址,在以太网中MAC地址才是真正用来进行数据传输的`物理地址`,每台主机中都有一个`ARP高速缓存`,存储同一个网络内的`IP地址`与`MAC地址`的对应关 系,以太网中的主机发送数据时会先从这个缓存中查询`目标IP`对应的`MAC地址`,会向这个`MAC地址`发送数据。操作系统会自动维护这个缓存。这就是整个实现的关键。 下边就是我电脑上的arp缓存的内容。 ``` (192.168.1.219) at 00:21:5A:DB:68:E8 [ether] on bond0 (192.168.1.217) at 00:21:5A:DB:68:E8 [ether] on bond0 (192.168.1.218) at 00:21:5A:DB:7F:C2 [ether] on bond0 # 192.168.1.217、192.168.1.218是两台真实的电脑 # 192.168.1.217为对外提供数据库服务的主机 # 192.168.1.218为热备的机器 # 192.168.1.219为虚IP ``` **大家注意,219、217的MAC地址是相同的** 再看看那217宕机后的arp缓存 ``` (192.168.1.219) at 00:21:5A:DB:7F:C2 [ether] on bond0 (192.168.1.217) at 00:21:5A:DB:68:E8 [ether] on bond0 (192.168.1.218) at 00:21:5A:DB:7F:C2 [ether] on bond0 ``` 这就是奥妙所在。当217正常服务时,发送到219的数据包都会发送到`mac地址`为`00:21:5A:DB:68:E8`的机器,也就是217的机器。当218 发现217宕机后会向网络发送一个ARP数据包,告诉所有主机`192.168.1.219`这个IP对应的MAC地址是`00:21:5A:DB:7F:C2`,这样所有发送到219的数据包都会发送到mac地址为`00:21:5A:DB:7F:C2`的机器,也就是218的机器。 # ARP(地址解析协议)Address Resolution Protocol 地址解析协议,即`ARP(Address Resolution Protocol)`,是根据`IP地址`获取物理地址的一个`TCP/IP`协议。主机发送信息时将包含`目标IP地址`的`ARP`请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该`IP地址`和`物理地址`存入本机`ARP缓存`中并保留一定时间,下次请求时直接查询`ARP缓存`以节约资源。`地址解析协议`是建立在网络中各个`主机互相信任`的基础上的,局域网络上的主机可以自主发送`ARP应答消息`,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机`ARP缓存`;由此攻击者就可以向某一主机发送`伪ARP应答报文`,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个`ARP欺骗`。`ARP命令`可用于查询本机`ARP缓存`中`IP地址`和`MAC地址`的对应关系、添加或删除静态对应关系等。相关协议有`RARP`、`代理ARP`。`NDP`用于在`IPv6`中代替地址解析协议。 关于`ARP`更多的知识请查看地址`https://blog.csdn.net/lm409/article/details/80299823`。
所有评论列表
点我发表评论