JustLudo
JustLudo

Reputation: 1790

Micro integrator hostname problem in cloud

When running WSO2 Micro-integrator inside a docker container as a task in AWS, I get an error in the logs about the hostname? In the Dockerfile I don't specifically set the hostname of the container in any way. I created the task using the Cloudformation tool and do not get this error when running the container locally. I tried running on a different VPC as well, without any result. The error remains.

FYI: It is supposed to accept traffic on port 8290 and allow it to send outbound to any IP in the world. Currently I have both inbound and outbound rules set to allow on 0.0.0.0/0 with all protocols.

The full error is as follows:

at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:544) at org.wso2.micro.integrator.ntask.core.internal.TasksDSComponent.activate(TasksDSComponent.java:88) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:260) at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146) at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:345) at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620) at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197)

In case anyone is wondering: I have setup a new VPC, complete with internet gateway, routes and route tables. The instance will run but I am unable to connect to it in any way.

The following script is run to get the task and make it available:

{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Resources": {
        "myVPC": {
            "Type": "AWS::EC2::VPC",
            "Properties": {
                "CidrBlock": "10.0.1.0/16",
                "Tags": [
                    {"Key":"Name", "Value":"myVPC"
                    }
                ]
            },
        },
        "myInternetGateway" : {
          "Type" : "AWS::EC2::InternetGateway",
              "Properties" : {
              }
           },
        "myRouteTable": {
          "Type" : "AWS::EC2::RouteTable",
          "Properties" : {
              "VpcId" : {
                    "Ref": "myVPC"
              }
            }
        },
        "mySubPublic": {
            "Type": "AWS::EC2::Subnet",
            "Properties": {
                "AvailabilityZone": "eu-central-1a",
                "CidrBlock": "10.0.1.0/28",
                "MapPublicIpOnLaunch": true,
                "VpcId": {
                    "Ref": "myVPC"
                }
            },
            "DependsOn": "myInternetGateway"
        },
        "mySubnetRoutetable": {
          "Type" : "AWS::EC2::SubnetRouteTableAssociation",
          "Properties" : {
              "RouteTableId" : {
                    "Ref": "myRouteTable"
                },
              "SubnetId" : {
                    "Ref": "mySubPublic"
                }
            }
        },
        "myVPCGatewayAttachment": {
          "Type" : "AWS::EC2::VPCGatewayAttachment",
          "Properties" : {
              "InternetGatewayId" : {
                    "Ref": "myInternetGateway"
                },
              "VpcId" : {
                    "Ref": "myVPC"
                }
            }
        },
        "myRoute": {
          "Type" : "AWS::EC2::Route",
          "Properties" : {
              "GatewayId" : {
                    "Ref": "myInternetGateway"
                },
            "DestinationCidrBlock": "0.0.0.0/0",
              "RouteTableId" : {
                    "Ref": "myRouteTable"
                }
            }
        },
        "mySecGroup": {
          "Type" : "AWS::EC2::SecurityGroup",
          "Properties" : {
              "GroupDescription" : "my security group for all incoming and outgoing.",
              "GroupName" : "mySecGroup",
              "SecurityGroupEgress" : [ {
                  "CidrIp" : "0.0.0.0/0",
                  "Description" : "Allow machine to reach internet.",
                  "FromPort" : -1,
                  "IpProtocol" : -1,
                  "ToPort" : -1
                } ],
              "SecurityGroupIngress" : [ {
                  "CidrIp" : "0.0.0.0/0",
                  "Description" : "Allow machine to be reached from the entire internet.",
                  "FromPort" : -1,
                  "IpProtocol" : -1,
                  "ToPort" : -1
                } ],
              "VpcId" : {"Ref": "myVPC"}
            },
            "DependsOn": "myVPC"
        },
        "myCluster": {
            "Type": "AWS::ECS::Cluster",
            "Properties": {
                "ClusterName": "myCluster"
            },
            "DependsOn": [
                "myVPC"
            ]
        },
        "myLogs": {
          "Type" : "AWS::Logs::LogGroup",
          "Properties" : {
              "LogGroupName" : "myLogGroup",
              "RetentionInDays" : 7
            }
        },
        "myDockerTask": {
            "Type": "AWS::ECS::TaskDefinition",
            "Properties": {
                "ContainerDefinitions": [
                    {
                        "Cpu": 1024,
                        "Image": "<NRHERE>.dkr.ecr.eu-central-1.amazonaws.com/my",
                        "Memory": 2048,
                        "MemoryReservation": 2048,
                        "Name": "myESBContainer",
                        "LogConfiguration": {
                            "LogDriver": "awslogs",
                            "Options": {
                                "awslogs-group": {"Ref": "myLogs"},
                                "awslogs-region": "eu-central-1",
                                "awslogs-stream-prefix": "my"
                            }
                        }
                    }
                ],
                "Cpu": "1024",
                "ExecutionRoleArn": "arn:aws:iam::<NRHERE>:role/ecsTaskExecutionRole",
                "Family": "myESB",
                "Memory": "2048",
                "NetworkMode": "awsvpc",
                "RequiresCompatibilities": [
                    "FARGATE",
                    "EC2"
                ],
                "TaskRoleArn": "arn:aws:iam::<NRHERE>:role/ecsTaskExecutionRole"
            },
        },
        "myService": {
          "Type" : "AWS::ECS::Service",
          "Properties" : {
              "Cluster" : {"Fn::GetAtt": ["myCluster", "Arn"]},
              "DesiredCount" : 1,
              "DeploymentController": {"Type": "ECS"},

              "LaunchType" : "FARGATE",
              "NetworkConfiguration" : {
                 "AwsvpcConfiguration" : {
                      "AssignPublicIp" : "ENABLED",
                      "SecurityGroups" : [ {"Fn::GetAtt": ["mySecGroup", "GroupId"]} ],
                      "Subnets" : [ {"Ref": "mySubPublic"}]
                    }
              },
              "SchedulingStrategy" : "REPLICA",
              "ServiceName" : "myService",
              "TaskDefinition": {"Ref": "myDockerTask"}
            },
            "DependsOn": "mySubPublic"
        },
        "myDeadLetterQueue": {
          "Type" : "AWS::SQS::Queue",
          "Properties" : {
              "QueueName" : "myDeadLetterQueue"
            }
        },
        "myQueue": {
          "Type" : "AWS::SQS::Queue",
          "Properties" : {
              "QueueName" : "myQueue",
              "RedrivePolicy": {
                  "deadLetterTargetArn" : {"Fn::GetAtt": ["myDeadLetterQueue", "Arn"]},
                  "maxReceiveCount" : 2
              }
            },
          "DependsOn": "myDeadLetterQueue"
        }
    }
}

Upvotes: 0

Views: 56

Answers (1)

JustLudo
JustLudo

Reputation: 1790

Ultimately found the problem. The software could not identify itself because it used localhost instead of 127.0.0.1 for local loopback. Since I am not in control of the software I tried adding the following to the VPC:

"EnableDnsSupport": true,
"EnableDnsHostnames": true,

This worked and the task is now able to resolve it's own hostname, no longer crashing.

Upvotes: 2

Related Questions