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 ...
随机推荐
- Linux安装Flash player
在线自动更新:Flash Player Update(需java) ===================== 下载得到install_flash_player_11_linux.x86_64.tar ...
- Base64编解码Android和ios的例子,补充JNI中的例子
1.在Android中java层提供了工具类:android.util.Base64; 里面都是静态方法,方便直接使用: 使用方法如下: // Base64 编码: byte [] encode = ...
- Selenium获取input输入框中值的三种方法
第一种用jQuery的val方法: js = "return $('input').val();" driver.execute_script(js) 第二种用jQuery的att ...
- Android开发者应该深入学习的10个开源应用项目
Android 开发带来新一轮热潮让很多移动开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用.其中也有许许多多的开发者提供了应用开源项目,贡献出他们的 智慧和创造力.学习开源代码是掌握技术的 ...
- Linux客户/服务器程序设计范式1——并发服务器(多进程)
引言 本文会写一个并发服务器(concurrent server)程序,它为每个客户请求fork出一个子进程. 注意 1. 信号处理问题 对于相同信号,按信号的先后顺序依次处理.可能会产生的问题是,正 ...
- NameNode HA滚动升级方案
Hadoop 滚动升级非常方便,只需要在配置中增加一些选项就可以通过Hadoop自身的代码进行完成. 步骤: 1.首先到需要升级的NameService的Active NameNode上面,比如我们1 ...
- 【PSR规范专题(2)】PSR-1 基本代码规范
转载自: https://github.com/PizzaLiu/PHP-FIG/blob/master/PSR-1-basic-coding-standard-cn.md 基本代码规范 本篇规范制定 ...
- linux下tomcat下部署项目如何打包压缩备份
范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar[root@linux ~]# tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩![root ...
- iOS开发--iOS及Mac开源项目和学习资料
文/零距离仰望星空(简书作者)原文链接:http://www.jianshu.com/p/f6cdbc8192ba著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 原文出处:codecl ...
- JavaWeb项目开发案例精粹-第4章博客网站系统-001设计
1. 2. 3. # MySQL-Front 5.0 (Build 1.0) /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE */; /*!40101 SET SQL_MO ...