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 ...
随机推荐
- HDU 1715 大菲波数(JAVA, 简单题,大数)
题目 //BigInteger 和 BigDecimal 是在java.math包中已有的类,前者表示整数,后者表示浮点数 import java.io.*; import java.util.*; ...
- sream bytes[] img相互转换
/// <summary> /// 将 Stream 转成 byte[] /// </summary> /// <param name="stream" ...
- ExtJs布局之tabPanel
<!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...
- 【android原生应用】之闹钟应用搭起篇
由于工作原因接触android开发一段时间了,对于开发有了一些了解,于是萌生了搭起android原生应用进行分析和学习的想法.先从闹钟应用开始吧. 1.首先要下载原生应用,原生应用在原生系统里面(当然 ...
- mq_send
NAME mq_send - 将消息发送到消息队列 (REALTIME) SYNOPSIS #include <mqueue.h>int mq_send(mqd_t mqdes, cons ...
- 将EXE作为资源,然后在释放到磁盘上并运行该exe程序(使用了FindResource,LoadResource,然后用CFile写成一个文件)
// 将exe作为资源加入,然后再释放出来,并运行 try { HRSRC hRes = FindResource(NULL, MAKEINTRESOURCE(IDR_EXE1), _T(" ...
- CreateProcess启动隐藏的外部程序(其实就是CreateDesktop,然后指定STARTUPINFO.lpDesktop)
HDESK hDesk = CreateDesktop(_T("MyDesk"), NULL, NULL, 0, GENERIC_ALL, NULL); ASSERT(hDesk) ...
- iOS:模态弹出窗控制器UIPopoverPresentationController
模态弹出窗控制器:UIPopoverPresentationController 实质:就是将内容控制器包装成PopoverPresentationController的形式,然后再模态出来,必须指定 ...
- servlet实现文件下载
之前没怎么用过这个,这次项目中用到了,于是总结一下: 应该说主要注意三方面: 1.写一个servlet 2.在web.xml中配置这个servlet 3.页面上调用这个servlet 第一: 写 ...
- 【Cocos2d实例教程一】xcode5下Cocos2d环境的搭建
(转载请注明出处:http://blog.csdn.net/buptgshengod) 第一步,现在要安装集成环境xcode5,安装xcode5需要系统至少是os x 10.8.5. 第二步,下载co ...