使用C#检查负载平衡服务器

时间:2015-03-18 10:07:45

标签: c# load-balancing

我的应用程序有四个应用程序服务器。应用程序正在使用负载平衡在所有服务器上工作。如果我的一个服务器出现故障,我必须使用我的系统主机文件手动检查它。为了避免这个手动过程,我创建了一个程序使用C#。我在主机文件中逐个写入服务器IP地址并删除前一个。

 private void RunWithUAC()
    {
        List<string> lstIPAddress = new List<string>();
        lstIPAddress.Add("1.1.1.1 example.com");
        lstIPAddress.Add("1.1.1.1 example.com");
        lstIPAddress.Add("1.1.1.1 example.com");
        lstIPAddress.Add("1.1.1.1 example.com");
        var systemPath = Environment.GetFolderPath(Environment.SpecialFolder.System);
        Console.WriteLine(systemPath);
        var path = @"C:\Windows\System32\drivers\etc\hosts";

        foreach (var item in lstIPAddress)
        {
            System.IO.File.WriteAllText(path, string.Empty);
            try
            {
                File.WriteAllText(path, item);

                WebRequest request = WebRequest.Create("https://example.com");
                request.Timeout = 10000;
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            }
            catch (Exception)
            {
                MessageBox.Show(item);
            }
            Thread.Sleep(1000);
        }
    }

但是当第二台服务器出现故障时。它会给我第三台服务器的超时错误。 请检查代码,让我知道此代码有什么问题。

1 个答案:

答案 0 :(得分:1)

可能是某种连接池,HTTP流水线操作或保持活动状态。这首先是错误的做法。

直接连接到正确的IP(WebRequest.Create("https://1.1.1.1"))。如果您需要发送Host标题add that manually to the request