负载均衡方案
第一层:DNS负载均衡(同一个域名绑定多个ip实现运营商级的基础轮询负载均衡/地理位置负载均衡/运营商负载均衡)
后续可以考虑运营商级负载均衡(同一个运营商的请求转发到同一个运营商/运营商线路主备)
走DNS级的负载均衡是最基础的一层负载均衡,缺点在于dns的解析不够智能,无法根据负载自动转发,也无法在某个服务器的ip不可达后自动转发到其他的ip,此时可通过对域名的监控来进一步优化,通过域名监控(域名服务商提供)的不同切换规则来实现智能解析(某些服务商可能提供了智能DNS功能,需根据不同的产品进行考虑)。
某些服务商提供了宕机回调来实现个性化宕机切换
常见的切换规则有(规则来自腾讯云域名自带的D监控):
- 不对该域名记录做任何修改(不切换)
- 停止解析该域名记录(智能暂停)
- 切换到您设置的备用IP(自定义切换)
- 切换到其它可用IP(智能切换, 可能会出现跨运营商切换,谨慎选择)
宕机切换介绍:目前D监控只对在DNSPod解析的域名提供监控。当监控节点探测到用户添加监控的某域名指向的IP或CNAME无法正常访问时,D监控将依据用户设置的切换规则来修改相关的域名记录,以避免用户访问到宕机的服务器。
名词解释:
a. 暂停:停止解析当前宕机的域名记录,用户将不会访问到该记录指向的IP。
b. 切换:修改当前宕机的域名记录的记录值,用户将访问到修改后的新IP。
c. 可用记录:该域名记录的记录值(IP或CNAME)可以正常访问。
-
不切换
不对宕机的域名记录进行任何操作。 -
智能暂停
a. 如果非默认线路宕机,则暂停该记录的解析;
b. 如果默认线路宕机,且默认线路还存在其他可用记录,则暂停该记录的解析;
c. 如果默认线路宕机,且默认线路无其他可用记录,则把该宕机IP随机切换为其他可用线路IP;
d. 如果默认线路宕机,且所有线路记录均不可用,则无操作;
可能会出现类似情况,电信线路设置了2个IP,一个IP宕机后,电信的所有用户都访问另一个IP,该服务器负载会翻倍。
-
自定义切换
用户可以对一条域名记录设置一个或多个备用IP,当宕机时,则切换到可用的备用IP。 -
智能切换(请谨慎启用)
a. 如果默认线路宕机,则随机切换到非默认线路的可用IP;
b. 如果非默认线路宕机,则优先切换到默认线路的可用IP;
c. 如果非默认线路宕机,但默认线路无可用记录,则切换到其他可用线路记录;
d. 如果所有线路记录均不可用,则无操作。
如果以上规则不能满足您的需求,则您可以使用宕机URL回调功能和官方API自行实现。
第二层采用告诉的lvs+keepalive实现高可用
第三层走nginx实现位于第七层的解析
第四次走微服务网关
联系我:renhanlinbsl@163.com
原文地址:https://www.cnblogs.com/ives/p/15111722.html
- 使用Kotlin开发一个Spring Boot Webflux Streaming应用(附视频)
- 插入排序算法
- Javascript 的addEventListener()及attachEvent()区别分析
- 设计模式-用接口来实现filter!梭梭就是干!
- OpenDaylight实现轮询策略的负载均衡服务
- 微服务业务开发三个难题-拆分、事务、查询(上)
- 总结了一些指针易出错的常见问题(五)
- 微服务业务开发三个难题-拆分、事务、查询(下)
- C语言之控制台读取上下左右方向键指令
- C程序之修改Windows的控制台大小
- VS2010/MFC编程(对话框:模态对话框及其弹出过程)
- 设计模式-抽象类,只是想为你做更多
- 设计模式-搞个接口,留有余地,让你我不再尴尬
- vs2010点调试,显示系统找不到指定的文件
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 使用Mybatis反配置逆向工程,错误eg:This is not a MyBatis Generator Configu
- DTS(数据库传输服务)
- R语言关联挖掘实例(购物篮分析)
- 用R语言中的神经网络预测时间序列:多层感知器和极限学习机
- 基于R语言股票市场收益的统计可视化分析
- Mac系统R语言升级后无法加载包报错 package or namespace load failed in dyn.load
- 如何从xml文件创建R语言数据框dataframe
- Matlab马尔可夫链蒙特卡罗法(MCMC)估计随机波动率(SV) 模型
- 如何从xml文件创建R语言数据框dataframe
- R语言POT超阈值模型和极值理论EVT分析
- R语言使用灰色关联分析(Grey Relation Analysis,GRA)中国经济社会发展指标
- R语言中的模拟过程和离散化:泊松过程和维纳过程
- R语言Lee-Carter模型对年死亡率建模预测预期寿命
- R语言有极值(EVT)依赖结构的马尔可夫链(MC)对洪水极值分析
- RxSwift 封装 CoreBluetooth(一) 配置