双机热备

转载 2011年01月22日 13:18:00

http://www.cnblogs.com/skykang/archive/2011/01/20/1940289.html

 

1.

1.1. 实现双机热备
1.1 实现思路
1.1.1 在同一局域网的两台服务器上各自同时运行服务程序,其中一台为主,另外一台为辅。
1.1.2 启动前,需要在配置文件中分别设置各个服务器为主还是为辅。配置文件中也要设置各服务器的ip地址和端口。
1.1.3 运行时,主服务器(简称PS)执行数据采集任务,同时定时向辅助服务器(简称AS)发送指令,表示PS运行正常。
1.1.4 运行时,AS会收到来自PS的状态指令,当超过超时时间没有得到指令,就认为PS停止工作。这时将AS切换为PS,同时启动数据采集服 务。
1.1.5 如果PS收到另外一台PS发来的工作指令,就将自己切换为AS。
1.1.6 提供一个配置界面,方便用户修改配置文件。

2.      

      SOCKET断线、死机、异常中断的处理方法。

如果碰到断线或者死机,该如何来判断客户端或者服务器断开。.NET本身并没有很好的函数来支持这点。一种方法是采用心跳数据数据的方式,如下:

//采用发送心跳数据的方式来检测断开。但当前未解决客户端的心跳数据问题,故当前仍采用原始方法

            uint dummy = 0;

            byte[] inOptionValues = new byte[Marshal.SizeOf(dummy) * 3];

            BitConverter.GetBytes((uint)1).CopyTo(inOptionValues, 0);

            BitConverter.GetBytes((uint)1000).CopyTo(inOptionValues, Marshal.SizeOf(dummy));

            BitConverter.GetBytes((uint)1000).CopyTo(inOptionValues, Marshal.SizeOf(dummy) * 2);

            client.IOControl(IOControlCode.KeepAliveValues, inOptionValues, null);

            //心跳结束

这个client是监听得到的SOCKET,如下:

Socket client = oldserver.EndAccept(iar);

           

但是我没有找到客户端的心跳处理方式。

故,最终的实现方式有些愚蠢,就是循环发字节为1的空数据,这也是MSDN上的说法,我的实现方式为:

客户端发送空数据到服务器,服务器转发回客户端。客户端和服务器同时有一个线程来处理是否接收到空包数据,如果有,则连接存在,否则连接断开。

3. 如何设置socket 的超时时间设置

     Socket firstSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个Socket

    firstSocket.SendTimeout = 500; //发送超时时间设定 
    firstSocket.ReceiveTimeout = 500; //接受超时时间设定 

参考:http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.sendtimeout(VS.80).aspx

mysql双机热备的实现

接续上一篇关于mysql双机热备实现原理分析,在本文经过深思熟虑和多次用不同的方式实测试后。最后在这篇文章中,用一个小例子来完成mysql双机热备的实现。 Mysql数据库没有增量备份的机制,当数据量...
  • qq394829044
  • qq394829044
  • 2016年11月17日 17:37
  • 4145

Rose双机热备两款软件原理介绍以及共享存储双机热备方案和镜像双机热备方案介绍

一. RoseHA的工作原理   RoseHA双机系统的两台服务器(主机)都与磁盘阵列(共享存储)系统直接连接,用户的操作系统、应用软件和RoseHA高可用软件分别安装在两台主机上,数据库等共享数据...
  • ershirenwei
  • ershirenwei
  • 2014年12月03日 15:02
  • 4833

冷备份与热备份、双机热备与容错

、冷备份与热备份、双机热备与容错 冷备份与热备份 一、 冷备份      冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份时将关键性文件拷贝到另外的位置...
  • cs408
  • cs408
  • 2015年10月07日 12:52
  • 1322

RedHat5.9通过Keepalived双机热备Nginx

  • 2016年05月03日 23:18
  • 207KB
  • 下载

无磁盘阵列双机热备

  • 2015年01月29日 16:25
  • 20KB
  • 下载

HSRP双机热备

  • 2013年03月04日 20:07
  • 54KB
  • 下载

SqlServer+ServHA Cluster双机热备配置实战

  • 2012年10月25日 17:17
  • 1.32MB
  • 下载

Oracle11g+ServHA Mirror双机热备配置实战

  • 2012年10月25日 17:13
  • 1.37MB
  • 下载

SqlServer+ServHA Mirror双机热备配置实战

  • 2012年10月25日 17:18
  • 1.16MB
  • 下载

双机热备 共享存储 实战 安装前准备

  • 2012年10月22日 16:25
  • 24KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:双机热备
举报原因:
原因补充:

(最多只允许输入30个字)