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 ...
随机推荐
- 打造XP下可运行的微型PE文件
前几天和朋友交流技术,提到手工打造微型PE文件,他说现在网上流传的大部分版本在XP SP3下都不能运行,于是心血来潮,拍着胸脯说:“你放心,忙完了帮你做一个.”后来花了半天时间,终于打造出一个XP下可 ...
- 1303: [CQOI2009]中位数图
早起一AC,整天萌萌哒. Problem: 1303 User: forgot93 Language: C++ Result: Accepted Time:56 ms Memory:2108 kb * ...
- 全国DNS汇总
全国DNS汇总 来路不明的DNS服务器可能导致你的帐号密码轻易被盗,请谨慎使用!在中国大陆,最科学的方法是将首选DNS服务器设置为114.114.114.114,备用DNS服务器设置为当地电信运营商的 ...
- poj 2068 Nim 博弈论
思路:dp[i][j]:第i个人时还剩j个石头. 当j为0时,有必胜为1: 后继中有必败态的为必胜态!!记忆化搜索下就可以了! 代码如下: #include<iostream> #incl ...
- Django视频教程 - 基于Python的Web框架(全13集)
Django是由Python驱动的开源模型-视图-控制器(MVC)风格的Web应用程序框架,使用Django可以在即可分钟内快速开发一个高品质易维护数据库驱动的应用程序.下面是一大坨关于Django应 ...
- 【hdu2815-Mod Tree】高次同余方程-拓展BadyStepGaintStep
http://acm.hdu.edu.cn/showproblem.php?pid=2815 题意:裸题... 关于拓展BSGS的详细解释我写了一篇博文:http://www.cnblogs.com/ ...
- C#计算时间差值
/// <summary> /// 计算时间差值 /// </summary> /// <param name="DateTime1">< ...
- 李洪强漫谈iOS开发[C语言-041]-计算月份天数
李洪强漫谈iOS开发[C语言-041]-计算月份天数
- Facebook揭密:如何让MySQL数据库集群自主运行
Facebook运行着全球最大的MySQL数据库集群,该集群分布在两个大洲上的多个数据中心中数以千计的服务器上.让人不解的是,Facebook只动用了一个很小的团队来管理这个庞大的MySQL数据库集群 ...
- ibatis2.3中#和$符号的区别(转)
在Ibatis中我们使用SqlMap进行Sql查询时需要引用参数,在参数引用中遇到的符号#和$之间的区分为,#可以进行与编译,进行类型匹配,而$不进行数据类型匹配,例如: select * from ...