双服务器热备系统软件开发
来源:互联网 发布:淘宝店铺名称大全女装 编辑:程序博客网 时间:2024/04/30 06:10
设计思路
依托Windows系统对IP地址冲突的处理原则
1 检查自己是否为FloatIP设置者,如果是,goto 2,如果不是 goto 4
2 开启服务,并检查本机上承载服务是否正常,如果正常 goto 1 ,如果不正常 goto 3
3 关闭服务,清空FloatIP, 设置过期时钟(等会阐述)
4 关闭服务,清空FloatIP .,本检查FloatIP上的承载服务是否正常,如果正常,Goto 1 如果不正常 Goto 5
5 检测过期时钟是否过期,如果没有过期,goto 1 如果过期了 goto 6
6 尝试开启本地服务,检查本机上的承载服务是否正常,如果正常 goto 7 如果不正常 goto 8
7 关闭本地服务,goto 1
8 添加FloatIP给本机,Goto 1
问题:是否存在A B同时设置上FLoatIP后,都认为自己是FloatIP拥有者
根据相通的交换环境规则,一个IP地址对应唯一的网卡地址,所有RArp解析只能对应唯一的固定的服务器网卡上,即使设置同一个FloatIP,但对于相通的交换环境中,只有一个FloatIP有效,而且一定有一个有效,这种有效环境并且根据先来先到的基础上,其他造成冲突的IP地址解析一律不保存,但会每个一段时间取请求解析绑定。所有上面的问题不会出现的。
所以程序需要每次检查到自己不是主服务的时候,需要清空他的FloatIP,虽然增加了点资源的消耗,但可以快速消除IP地址冲突提示。
问题引出,由于可能存在一台主服务刚刚判断自己服务不通了,清空了自己的FloatIP,另外的从服务器还没有来得及设置FloatIP,就会有可能让这个原来的主服务器马上进入设置FloatIP阶段。
这个问题解决就设置了一个过期时钟,当自己从FloatIP变成从服务器的时候,设置过期时钟,只有当这个过期时钟过期后(2s)后,才会进入设置判断阶段。避免IP变更抖动
需要涉及的api
function GetIpAddrTable(pIpAddrTable: PTMibIPAddrTable;
pdwSize: PULONG;
bOrder: BOOL): DWORD;
stdcall; external 'IPHLPAPI.DLL';
需要涉及的api
function GetIpAddrTable(pIpAddrTable: PTMibIPAddrTable;
pdwSize: PULONG;
bOrder: BOOL): DWORD;
stdcall; external 'IPHLPAPI.DLL';
function AddIPAddress(Address, IpMask: TInAddr; IfIndex: DWORD; NTEContext, NTEInstance: PULONG): DWORD;
stdcall; external 'IPHLPAPI.DLL';
stdcall; external 'IPHLPAPI.DLL';
function DeleteIPAddress(NTEContext: ULONG): DWORD;
stdcall; external 'IPHLPAPI.DLL';
实际使用中,windows 2000 与 windows 2003 中的iphlpapi 对 添加floatip后该floatip的编号 (供删除用的NTEContext)排列方式约有不同
- 双服务器热备系统软件开发
- 嵌入式Linux系统软件开发
- 嵌入式系统软件开发答疑
- 嵌入式系统软件敏捷开发
- 银行核心系统软件开发
- 开发谭八爷系统软件
- 嵌入式系统软件开发环境
- 系统软件开发平台
- 水滴互助系统软件开发
- 服务器双机热备解决方案
- 服务器双机热备概述
- keepalived+nginx双网卡服务器双机热备
- 【PM】信息化系统软件开发流程
- 货拉拉系统软件开发模式
- 系统软件
- 系统软件
- 系统软件
- 服务器集群 双机热备基本知识
- JAVA求百分比
- PL/SQL函数总结
- MyEclipse + Weblogic8.1 开发 EJB(1)
- 今天之前是昨天
- 生产 数据库中 存储过程+参数+类型
- 双服务器热备系统软件开发
- DotNet(C#)学习-你学到什么程度!
- 基于windows防火墙系统开发
- 让弹出窗口在屏幕中间显示,没有滚动条,并且点击某行,窗口大小不变化.
- blog更新预告
- 一个Popup的日历控件
- Win32汇编语言教程
- 从Visual Studio 2003到Visual Studio 2005的演化
- 用好VS2005之扩展membership服务