1 介绍¶
MRS部分服务需要使用浮动IP实现高可用,但对于某些场景,例如微软云场景,不支持浮动IP机制。此时部署MRS,需要使用负载均衡器来替代浮动IP。
本文档介绍使用负载均衡器替代浮动IP的原理,以及适配层的开发指导。
2 浮动IP原理¶
浮动IP是一种实现服务主备双机(热备、单活)的方法,访问服务时,无需关注当前服务是哪个节点主用,访问一个特定的IP地址即可。
原理示意如下:
在主备两个节点的HA逻辑中,与浮动IP相关的操作有:
- 启用:当节点作为主节点工作(升主)时,启动浮动IP,即将浮动IP地址配置到该节点。
- 停用:当节点作为备节点工作(降备)时,停用浮动IP,即将浮动IP地址取消配置。
- 检查:定期检查该IP地址是否符合绑定或非绑定的状态。
MRS当前需要使用到的浮动IP的组件有:OMS Server、OMS WebServer、DBService、Hue、Loader、Solr、Mapreduce、GraphBase。
3 使用负载均衡实现HA的基本原理¶
使用负载均衡器替代浮动IP,要点如下:
- 负载均衡器上的公共IP作为浮动IP。
- 使用该浮动IP的主备节点作为后端服务池。
- 负载均衡器的可用性探测跟后端节点的主备关系建立关联,如果是备用状态,则判定为不可用(或者备用的节点暂时不加入可用资源池)。
- 每个浮动IP,都要对应一个负载均衡器。
- 负载均衡器不限制协议(TCP、http、RPC等)。
- MRS原监听浮动IP的进程,会改为监听本机固定IP,负载均衡器实现流量转发。
上述功能需要额外开发一个适配层来实现。
4 适配层总体结构¶
适配层同MRS以及负载均衡器的关系如下:
适配层功能要点:
- 提前按需创建好均衡器,并将适配代码安装在“/opt/loadBalanceAdapt“目录(每个需要使用浮动IP的主机上)。
- 在适配代码中提供三个脚本,实现三种操作。MRS在安装、启动和运行期,会调用这三个脚本。
- 负载均衡器自身保证可靠性。
5 适配层接口说明¶
与MRS的接口列表:
-
linkToLB.sh -lb [负载均衡器IP] [负载均衡器转发目标IP(即本机IP)]
功能:将本节点设为主节点,或将本节点设为负载均衡器服务池的可控主机。
调用:**linkToLB.sh -lb **[负载均衡器IP] [负载均衡器转发目标IP(即本机IP)]
返回:0 启动成功、1 启动失败
例如:
linkToLB.sh -lb 192.168.0.50 192.168.1.2
-
unLinkToLB.sh -lb [负载均衡器IP] [负载均衡器转发目标IP(即本机IP)]
功能:将本节点设为备节点,或将本节点从负载均衡器服务池的可控主机中移除。
调用:unLinkToLB.sh -lb [负载均衡器IP] [负载均衡器转发目标IP(即本机IP)]
返回:0 停止成功、1 停止失败
例如:
unLinkToLB.sh -lb 192.168.0.50 192.168.1.2
-
checkLB.sh -lb [负载均衡器IP] [负载均衡器转发目标IP(即本机IP)]
功能:查询本节点在负载均衡器中的当前状态
调用:**checkLB.sh -lb **[负载均衡器IP] [负载均衡器转发目标IP(即本机IP)]
返回:0 运行正常、1 运行异常、2 停止、3 状态未知
例如:
checkLB.sh -lb 192.168.0.50 192.168.1.2
说明: 1. 一个主机上可能出现多个浮动IP,所以负载均衡适配代码,需要按照浮动IP地址进行管理具有多资源管理能力。 2. 其它用户(**omm**用户)需要有权限操作。 3. 均衡器提前创建并配置好(在有需要的主机上),配置好初始状态(谁都不连)。 4. 如果发生主备倒换或系统启动,主备节点上都会调用相应接口。如果绑定失败,后续通过状态检查发现异常并会主动修复,适配层只需实现功能接口即可。 5. 记录详细日志方便问题定位定界。
6 MRS安装时要求¶
- 安装MRS前,需提前按需创建并配置好负载均衡器。负载均衡器适配程序并安装在所有需要使用浮动IP的节点上。
- 安装MRS时,需要在安装配置文件中,手工添加启用负载均衡方式的控制项。
- 使用RTD产品,安装RTDDB服务时需同时安装python2和python3。