AWS 之Load Balance篇
public class CreateELB
{
/// <summary>
/// 连接AWS服务器
/// </summary>
/// <param name="awsAccessKeyId">Access Key Id</param>
/// <param name="awsSecretAccessKey">Secret Access Key</param>
/// <param name="regionEndpoint">服务器区域</param>
/// <returns></returns>
public AmazonElasticLoadBalancingClient CreateELB(string awsAccessKeyId, string awsSecretAccessKey, RegionEndpoint regionEndpoint)
{
AmazonElasticLoadBalancingClient client = new AmazonElasticLoadBalancingClient(awsAccessKeyId, awsSecretAccessKey, regionEndpoint);
return client;
} #region 添加负载均衡器
/// <summary>
/// 添加负载均衡器
/// </summary>
/// <param name="client">连接请求</param>
/// <param name="LoadBalancerName">负载均衡器名称</param>
/// <returns></returns>
private string CreateLoadBalancer(AmazonElasticLoadBalancingClient client, string LoadBalancerName)
{
string DNSName = "";
try
{
List<string> availabilityZonesList = GetAvailabilityZonesList();
List<Listener> listenerList = GetListenerList();
List<Tag> tagList = GetTagList();
List<string> securityGroupslist = GetSecurityGroupslist();
if (!ExistLoadBalancer(client, LoadBalancerName))
{
CreateLoadBalancerRequest request = new CreateLoadBalancerRequest()
{
//可用区域
AvailabilityZones = availabilityZonesList,
//侦听器
Listeners = listenerList,
//负载平衡名称
LoadBalancerName = LoadBalancerName,
//设置负载平衡是面向 Internet , 默认 面向Internet
// Scheme = "",
//安全组
SecurityGroups = securityGroupslist,
//子网
// Subnets = list,
//标签
Tags = tagList
};
CreateLoadBalancerResponse response = client.CreateLoadBalancer(request);
DNSName = response.DNSName;
if (RegisterInstancesWithLoadBalancer(client, LoadBalancerName))
{
Console.Write("添加实例成功");
Console.WriteLine("");
}
if (ConfigureHealthCheck(client, LoadBalancerName))
{
Console.Write("配置运行状况检查成功");
Console.WriteLine("");
}
}
else
{
Console.Write("名为<" + LoadBalancerName + ">负载均衡存在");
Console.WriteLine("");
}
}
catch (Exception)
{
throw;
}
return DNSName;
}
#endregion
#region 可用区域实体
/// <summary>
/// 可用区域实体
/// </summary>
/// <returns></returns>
private List<string> GetAvailabilityZonesList()
{
List<string> availabilityZonesList = new List<string>();
string availabilityZones = "ap-southeast-1a";
availabilityZonesList.Add(availabilityZones);
return availabilityZonesList;
}
#endregion
#region 监听器实体
/// <summary>
/// 监听器实体
/// </summary>
/// <returns></returns>
private List<Listener> GetListenerList()
{
List<Listener> listenerList = new List<Listener>();
Listener listener = new Listener();
listener.InstancePort = ;
listener.InstanceProtocol = "HTTP";
listener.LoadBalancerPort = ;
listener.Protocol = "HTTP";
listenerList.Add(listener);
return listenerList;
}
#endregion
#region 标签实体
/// <summary>
/// 标签实体
/// </summary>
/// <returns></returns>
private List<Tag> GetTagList()
{
//添加标签
List<Tag> tagList = new List<Tag>(); Tag tag = new Tag();
tag.Key = "key";
tag.Value = "value";
tagList.Add(tag);
return tagList;
}
#endregion
#region 安全组实体
/// <summary>
/// 安全组实体
/// </summary>
/// <returns></returns>
private List<string> GetSecurityGroupslist()
{
string str = "sg-4afa562f";
List<string> securityGroupslist = new List<string>();
securityGroupslist.Add(str);
return securityGroupslist;
}
#endregion
#region 添加实例
/// <summary>
/// 添加实例
/// </summary>
/// <param name="client"></param>
/// <param name="LoadBalancerName"></param>
/// <returns></returns>
private bool RegisterInstancesWithLoadBalancer(AmazonElasticLoadBalancingClient client, string LoadBalancerName)
{
bool result = false;
try
{
List<Instance> instanceList = new List<Instance>();
Instance instance = new Instance();
instance.InstanceId = "i-18de45d5";
instanceList.Add(instance); Instance instance1 = new Instance();
instance1.InstanceId = "i-26d918e9";
instanceList.Add(instance1);
RegisterInstancesWithLoadBalancerRequest requestInstance = new RegisterInstancesWithLoadBalancerRequest()
{
Instances = instanceList,
LoadBalancerName = LoadBalancerName
};
RegisterInstancesWithLoadBalancerResponse responseInstance = client.RegisterInstancesWithLoadBalancer(requestInstance);
result = true;
}
catch (Exception)
{
throw;
}
return result;
}
#endregion
#region 配置运行状况检查
/// <summary>
/// 配置运行状况检查
/// </summary>
/// <param name="client"></param>
/// <param name="LoadBalancerName"></param>
/// <returns></returns>
private bool ConfigureHealthCheck(AmazonElasticLoadBalancingClient client, string LoadBalancerName)
{
bool result = false;
try
{
HealthCheck healthCheck = new HealthCheck();
healthCheck.HealthyThreshold = ;
healthCheck.Interval = ;
healthCheck.Target = "HTTP:80/index.html";
healthCheck.Timeout = ;
healthCheck.UnhealthyThreshold = ;
ConfigureHealthCheckRequest requestHealth = new ConfigureHealthCheckRequest()
{
HealthCheck = healthCheck,
LoadBalancerName = LoadBalancerName
};
ConfigureHealthCheckResponse responseHealth = client.ConfigureHealthCheck(requestHealth);
result = true;
}
catch (Exception)
{
throw;
}
return result;
}
#endregion
#region 删除负载均衡器
/// <summary>
/// 删除负载均衡器
/// </summary>
/// <param name="client"></param>
/// <param name="LoadBalancerName"></param>
/// <returns></returns>
private string DeleteLoadBalancer(AmazonElasticLoadBalancingClient client, string LoadBalancerName)
{
string result = "";
try
{
DeleteLoadBalancerRequest request = new DeleteLoadBalancerRequest()
{
LoadBalancerName = LoadBalancerName
};
DeleteLoadBalancerResponse response = client.DeleteLoadBalancer(request);
result = response.HttpStatusCode.ToString();
}
catch (Exception)
{
throw;
}
return result;
}
#endregion
#region 负载均衡器是否存在
/// <summary>
/// 负载均衡器是否存在
/// </summary>
/// <param name="client"></param>
/// <param name="LoadBalancerName"></param>
private bool ExistLoadBalancer(AmazonElasticLoadBalancingClient client, string LoadBalancerName)
{
bool result = false;
DescribeLoadBalancersResponse response = client.DescribeLoadBalancers();
List<LoadBalancerDescription> loadBalancerDescriptionList = response.LoadBalancerDescriptions;
foreach (LoadBalancerDescription loadBalancerDescription in loadBalancerDescriptionList)
{
if (loadBalancerDescription.LoadBalancerName == LoadBalancerName)
{
result = true;
}
}
return result;
}
#endregion
#region 得到负载均衡器DNS名称
/// <summary>
/// 得到负载均衡器DNS名称
/// </summary>
/// <param name="client"></param>
/// <param name="LoadBalancerName"></param>
/// <returns></returns>
private string GetLoadBalancerDescription(AmazonElasticLoadBalancingClient client, string LoadBalancerName)
{
string DNSName = "";
DescribeLoadBalancersResponse response = client.DescribeLoadBalancers();
List<LoadBalancerDescription> loadBalancerDescriptionList = response.LoadBalancerDescriptions;
foreach (LoadBalancerDescription loadBalancerDescription in loadBalancerDescriptionList)
{
if (loadBalancerDescription.LoadBalancerName == LoadBalancerName)
{
DNSName = loadBalancerDescription.DNSName;
}
}
return DNSName;
}
#endregion }
AWS 之Load Balance篇的更多相关文章
- AWS的load balance
Route53实现了地理上的load balance; ELB实现了region内的load balance CloudFront实现了静态内容的全网加速 ZULh?*;&T(
- 亲密接触Redis-第三天(Redis的Load Balance)
前言 上两天讲述了Redis的基本搭建和基于HA的集群布署方式以及相关的策略和注意点.今天开始讲述Redis的Cluster功能,而这块目前来说网上资料不是太全,就算有1,2篇也只是单讲服务端的搭建也 ...
- LB(Load balance)负载均衡集群--{LVS-[NAT+DR]单实例实验+LVS+keeplived实验} 菜鸟入门级
LB(Load balance)负载均衡集群 LVS-[NAT+DR]单实例实验 LVS+keeplived实验 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一 ...
- Server Data Synchronization Via Linux rsync、rsync+inotify Between Load Balance Server
目录 . 远程文件同步的应用场景 . rsync+crontab . rsync+inotify 1. 远程文件同步的应用场景 在负载均衡集群的应用场景中,往往在多台web server的前端有一个提 ...
- Oracle RAC 服务器端连接负载均衡(Load Balance)
Oracle RAC服务器端的负载均衡是根据RAC中各节点的连接负荷数情况,将新的连接请求分配到负荷最小的节点上去.当数据库处于运行时,RAC中各节点的PMON进程每3秒会将各自节点的连接负荷数更新到 ...
- Oracle RAC 客户端连接负载均衡(Load Balance)
实现负载均衡(Load Balance)是Oracle RAC最重要的特性之一,主要是把负载平均分配到集群中的各个节点,以提高系统的整体吞吐能力.通常情况下有两种方式来实现负载均衡,一个是基于客户端连 ...
- Using load balance for thrift servers
Software load balance .Nginx(http://nginx.org) 1.Install nginx download source code from http://ngin ...
- Neutron: Load Balance as a Service(LBaaS)负载均衡
load balancer 负责监听外部的连接,并将连接分发到 pool member. LBaaS 有三个主要的概念: Pool Member,Pool 和 Virtual IP Pool M ...
- Flume 高可用配置案例+load balance负载均衡+ 案例:日志的采集及汇总
高可用配置案例 (一).failover故障转移 在完成单点的Flume NG搭建后,下面我们搭建一个高可用的Flume NG集群,架构图如下所示: (1)节点分配 Flume的Agent和Colle ...
随机推荐
- MySQL 5.7 reference about JSON
最近需要用到MySQL 5.7中的JSON,总结一下MySQL中关于JSON的内容 参考: 11.6 The JSON Data Type 12.16 JSON Functions JSON Func ...
- 服务接口API限流 Rate Limit 续
一.前言 上一篇文章中粗浅的介绍使用Redis和基于令牌桶算法进行对服务接口API限流,本文介绍另一种算法---漏桶算法的应用.Nginx想必大家都有所了解是一个高性能的 HTTP 和反向代理服务器, ...
- HDU3487 Play With Chains(Splay)
很裸的Splay,抄一下CLJ的模板当作复习,debug了一个下午,收获是终于搞懂了以前看这个模板里不懂的内容.以前用这个模板的时候没有看懂为什么get函数返回的前缀要加个引用,经过一下午的debug ...
- jmeter学习预热
对jmeter有些兴趣,最近想抽点时间熟悉下,个人熟悉某个工具的方法: 1.官网http://jmeter.apache.org/,一般官网会有Tutorials或者Getting Started之类 ...
- 二维码(支持arc,苹果自带扫描,zbar扫描,二维码生成)
下载地址:http://pan.baidu.com/s/1mgvJzyo
- 无法激活服务,因为它不支持 ASP.NET 兼容性
wcf错误直接上图: 原因: 一般是因为程序添加了启用了AJAX的WCF服务而缺少相关设置出现的错误. 解决方案: 1.webconfig <system.serviceModel> &l ...
- 什么是Nib文件?(Nib文件是一种特殊类型的资源文件,它用于保存iPhone OS或Mac OS X应用程序的用户接口)
Nib文件是一种特殊类型的资源文件,它用于保存iPhone OS或Mac OS X应用程序的用户接口.Nib文件是Interface Builder文档.通常您会使用Interface Builder ...
- QTP10.0安装说明
QTP10.0 安装手册 注:安装之前检查清理相关注册表:运行->regdit-HKEY_LOCAL_MACHINE->HKEY_LOCAL_MACHINE\SOFTWARE->HK ...
- Edius 安装 looks插件整理
需要安装looks插件到指定目录,在后面桥接时选择该目录. 包括安装looksbuilder插件.
- volatile 关键字的复习
今天早上看何登成的微博(http://hedengcheng.com/?p=725) 对volatile 关键字语意进行了深入分析. 看完之后,用自己的话总结如下: 1.c/c++ volatile中 ...