AWS Elastic Load Balancing Operations: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
 
(32 intermediate revisions by the same user not shown)
Line 5: Line 5:
* [[AWS Elastic Load Balancing#Subjects|AWS Elastic Load Balancing]]
* [[AWS Elastic Load Balancing#Subjects|AWS Elastic Load Balancing]]


=Create a Network Load Balancer=
=Load Balancer Operations=


{{Note|This network load balancer was created to service ECS FARGATE containers. It must be created '''before''' the [[Amazon_ECS_Operations#Load_Balancing|corresponding FARGATE service is defined]].}}
==Describe Load Balancers==


Go to Amazon EC2 console -> Load Balancers -> Create Load Balancer -> Network Load Balancer.
aws [--region ca-central-1 ...] elbv2 describe-load-balancers


==Basic Configuration==
==Elastic Load Balancing V2 Deployment with CloudFormation==


Name. For more details about load balancer names, see: {{Internal|AWS_Elastic_Load_Balancing_Concepts#Load_Balancer_Name|Name}}
{{Internal|AWS Elastic Load Balancing V2 Deployment with CloudFormation|Elastic Load Balancing V2 Deployment with CloudFormation}}


It should not start with "internal-...".
==Create a Network Load Balancer==


Example: "playground-nlb"
* [[AWS Elastic Load Balancing Operations Create a Network Load Balancer with Amazon Console|Create a Network Load Balancer with Amazon Console]]


Scheme. For more details about load balancer scheme, see: {{Internal|AWS_Elastic_Load_Balancing_Concepts#Load_Balancer_Scheme|Scheme}}
==Test a Network Load Balancer==


I have used "internet-facing", because this is what I was able to make work. <font color=darkgray>Return here and experiment with "internal", so the service endpoints exposed through load balancer are not publicly available, but only through an API Gateway that will be subsequently configured.</font>.
curl http&#58;//playground-nlb-85d74951c7b728b3.elb.us-west-2.amazonaws.com:10001/amazons


==Listeners==
==Create an Application Load Balancer==
* [[AWS_Elastic_Load_Balancing_V2_Deployment_with_CloudFormation#Create_an_Application_Load_Balancer|Create an Application Load Balancer with CloudFormation]]


For more details about listeners, see: {{Internal|AWS_Elastic_Load_Balancing_Concepts#Listener|Listeners}}
==Application Load Balancer GetAtt Attributes==


Use TCP over port 80.
{{External|[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html GetAtt]}}


==Availability Zones==
* DNSName


Specify the VPC in which the targets exist.
==Connecting Internet-Facing Load Balancer to Private IP Address Targets==


Specify at least one, possible more availability zones and one subnet per availability zone.
{{Internal|AWS Elastic Load Balancing Connecting Internet-Facing Load Balancer to Private IP Address Targets|Connecting Internet-Facing Load Balancer to Private IP Address Targets}}


For more details: {{Internal|AWS_Elastic_Load_Balancing_Concepts#Load_Balancer_and_Availability_Zones|Load Balancers and Availability Zones}}
=Register a Target with a Target Group in Command Line=


==Security Settings==
aws elbv2 register-targets --target-group-arn arn:aws:elasticloadbalancing:us-west-2:77777777777:targetgroup/themyscira/4d66315292d681f9 --targets Id=10.7.1.84 Id=10.7.1.151


<font color=darkgray>Return here.</font>
=Listener Operations=


==Configure Routing==
aws [--region ...] elbv2 describe-listeners <--load-balancer-arn ... | --listener-arns ...>


If this load balancer is created to service ECS FARGATE containers that have not been defined yet, that is fine, the target groups will be created during the [[Amazon_ECS_Operations#Load_Balancing|ECS Service creation process]].
aws --region ca-central-1  elbv2 describe-listeners --listener-arns arn:aws:elasticloadbalancing:ca-central-1:777777777777:listener/app/infinity-test-alb/ac8ae6a4de687154/4c3e44faee30b5d2


===Target Group===
=Target Groups Operations=


[[AWS_Elastic_Load_Balancing_Concepts#Target_Group|Target Group]]: New target group
<syntaxhighlight lang='yaml'>
Resources:
  ...
  TargetGroup:
    Type: AWS::ElasticLoadBalancingV2::TargetGroup
    #
    # DependsOn is important, I've seen race conditions with the load balancer
    #
    DependsOn: ApplicationLoadBalancer
    Properties:
      Name: !Sub ${Color}-themyscira-tg
      VpcId: !Ref VPC
      Protocol: HTTP
      Port: !Ref ApplicationPort
      TargetType: ip
      HealthCheckProtocol: HTTP
      HealthCheckIntervalSeconds: 60
      HealthCheckTimeoutSeconds: 10
      HealthyThresholdCount: 3
      UnhealthyThresholdCount: 3
      HealthCheckPath: '/actuator/health'
</syntaxhighlight>


Name: something
=Troubleshooting=


[[AWS_Elastic_Load_Balancing_Concepts#Target_Type|Target type]]: Instance
==Application Load Balancer Troubleshooting==
 
{{External|[https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-troubleshooting.html Troubleshoot Your Application Load Balancers]}}
[[AWS_Elastic_Load_Balancing_Concepts#Target_Group_Protocol|Protocol]]: TCP
 
[[AWS_Elastic_Load_Balancing_Concepts#Target_Group_Port|Port]]: 10001
 
===Health Checks===
 
<font color=darkgray>Return here.</font>
 
==Register Targets==
 
===Registered Targets===
 
===Instances===
 
<font color=darkgray>If the load balancer is created before the ECS deployments, how do I select those?</font>
 
==Network Load Balancers and ECS FARGATE Instances==
 
=Test a Network Load Balancer=
 
=Create an Application Load Balancer=

Latest revision as of 20:56, 1 May 2019

External

Internal

Load Balancer Operations

Describe Load Balancers

aws [--region ca-central-1 ...] elbv2 describe-load-balancers

Elastic Load Balancing V2 Deployment with CloudFormation

Elastic Load Balancing V2 Deployment with CloudFormation

Create a Network Load Balancer

Test a Network Load Balancer

curl http://playground-nlb-85d74951c7b728b3.elb.us-west-2.amazonaws.com:10001/amazons

Create an Application Load Balancer

Application Load Balancer GetAtt Attributes

GetAtt
  • DNSName

Connecting Internet-Facing Load Balancer to Private IP Address Targets

Connecting Internet-Facing Load Balancer to Private IP Address Targets

Register a Target with a Target Group in Command Line

aws elbv2 register-targets --target-group-arn arn:aws:elasticloadbalancing:us-west-2:77777777777:targetgroup/themyscira/4d66315292d681f9 --targets Id=10.7.1.84 Id=10.7.1.151

Listener Operations

aws [--region ...] elbv2 describe-listeners <--load-balancer-arn ... | --listener-arns ...>
aws --region ca-central-1  elbv2 describe-listeners --listener-arns arn:aws:elasticloadbalancing:ca-central-1:777777777777:listener/app/infinity-test-alb/ac8ae6a4de687154/4c3e44faee30b5d2

Target Groups Operations

Resources:
  ...
  TargetGroup:
    Type: AWS::ElasticLoadBalancingV2::TargetGroup
    #
    # DependsOn is important, I've seen race conditions with the load balancer
    #
    DependsOn: ApplicationLoadBalancer
    Properties:
      Name: !Sub ${Color}-themyscira-tg
      VpcId: !Ref VPC
      Protocol: HTTP
      Port: !Ref ApplicationPort
      TargetType: ip
      HealthCheckProtocol: HTTP
      HealthCheckIntervalSeconds: 60
      HealthCheckTimeoutSeconds: 10
      HealthyThresholdCount: 3
      UnhealthyThresholdCount: 3
      HealthCheckPath: '/actuator/health'

Troubleshooting

Application Load Balancer Troubleshooting

Troubleshoot Your Application Load Balancers