nginx+wcf负载均衡实验

准备资料

1、三台服务器,其中两台服务器(192.168.0.27、192.168.0.28)在IIS部署WCF服务,一台服务器(192.168.0.30)安装nginx;

2、http://nginx.org/en/download.html下载nginx;

3、所有的客户端Client的Hosts文件中增加映射:192.168.0.30 cluster.com.

安装配置nginx

把下载的nginx压缩包放在30服务器,然后解压,双击nginx.exe即可安装,安装完成后,打开conf文件夹里面的nginx配置文件,加入内容,如图:

192.168.0.28:9100和192.168.0.27是WCF的部署地址,要带上端口号,默认80则不用。

至此nginx安装配置完成。

项目开发

做一个简单的实验,只要两个项目就好了,一个WCF服务,一个Console客户端,项目图如下:

其中NginxWcfService就只有一个服务Service1,我们改造一下默认的GetData方法:

public string GetData(int value)
        {
            string ip = "";

            System.Net.IPAddress[] address = System.Net.Dns.GetHostAddresses(System.Net.Dns.GetHostName());
            if (address != null)
            {
                foreach (var item in address)
                {
                    if (item.AddressFamily.Equals(AddressFamily.InterNetwork))
                    {
                        ip = item.ToString();
                        break;
                    }
                }
            }

            return string.Format("You entered: {0},当前 request 由 server={1} 返回.", value, ip);
        }

就是返回当前服务器的IP地址。

然后编译发布到27、28两台服务器,地址分别是http://192.168.0.27/NginxWcfService/Service1.svc和http://192.168.0.28:9100/NginxWcfService/Service1.svc。

客户端项目NginxConsole,添加服务引用http://cluster.com/NginxWcfService/Service1.svc,然后多次调用服务,即可看到效果,代码如下:

static void Main(string[] args)
        {
            for (int i = 0; i < 100; i++)
            {
                ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
                var data = client.GetData(i);
                Console.WriteLine(data);

                System.Threading.Thread.Sleep(1000);
            }
            Console.Read();
        }

效果如图:

这就是最简单的负载均衡,一个nginx就可以搞定了。

原文地址:https://www.cnblogs.com/tingqianzhu/p/8670440.html