如何在智能告警平台CA触发测试告警
924
2023-03-10
Nginx搭建高可用,高并发的WCF集群教程
很多情况下基于wcf的复杂均衡都首选zookeeper,这样可以拥有更好的控制粒度,但zk对C# 不大友好,实现起来相对来说比较麻烦,实际情况下,如果你的负载机制粒度很粗糙的话,优先使用nginx就可以搞定,既可以实现复杂均衡,又可以实现双机热备,以最小的代码量实现我们的业务,下面具体分享下。
一:准备的材料
1. 话不多说,一图胜千言,图中的服务器都是采用vmware虚拟化,如下图:
三台windows机器 ,两个WCF的windows服务器承载(192.168.23.187,192.168.23.188),一台Client的服务器(192.168.23.1)
一台Centos机器,用来承载web复杂均衡nginx(192.168.23.190)。
二:环境搭建
1、WCF程序
既然是测试,肯定就是简单的程序,代码就不完全给出了。
public class HomeService : IHomeService{ public string DoWork(string msg) { var ip = Dns.GetHostAddresses(Dns.GetHostName()).FirstOrDefault(i => i.AddressFamily == AddressFamily.InterNetwork).ToString(); return string.Format("当前 request 由 server={0} 返回", ip); }}
public class HomeService : IHomeService{ public string DoWork(string msg) { var ip = Dns.GetHostAddresses(Dns.GetHostName()).FirstOrDefault(i => i.AddressFamily == AddressFamily.InterNetwork).ToString(); return string.Format("当前 request 由 server={0} 返回", ip); }}
App.Config代码
因为windows的两台机器的ip地址是192.168.23.187,192.168.23.188,所以部署的时候注意一下config中的baseAddress地址。
2、centos上的nginx搭建
[root@localhost nginx-1.13.6]# ./configure --prefix=/usr/myapp/nginx [root@localhost nginx-1.13.6]# make && make install
[root@localhost nginx-1.13.6]# ./configure --prefix=/usr/myapp/nginx [root@localhost nginx-1.13.6]# make && make install
然后在nginx的安装目录下面找到conf文件,修改里面的nginx.conf 配置。
详细配置如下,注意下面“标红”的地方,权重按照1:5的方式进行调用,关于其他的配置,大家可以在网上搜一下就可以了。
3、 client端的程序搭建
第一件事就是将 192.168.23.190 映射到本机的host中去,因为服务不提供给第三方使用,所以加host还是很轻松的。
class Program { static void Main(string[] args) { for (int i = 0; i < 1000; i++) { HomeServiceClient client = new HomeServiceClient(); var info = client.DoWork("hello world!"); Console.WriteLine(info); System.Threading.Thread.Sleep(1000); } Console.Read(); }
class Program { static void Main(string[] args) { for (int i = 0; i < 1000; i++) { HomeServiceClient client = new HomeServiceClient(); var info = client.DoWork("hello world!"); Console.WriteLine(info); System.Threading.Thread.Sleep(1000); } Console.Read(); }
最后来执行以下程序,看看1000次循环中,是不是按照权重1:5 的方式对后端的wcf进行调用的???
发表评论
暂时没有评论,来抢沙发吧~