diff --git a/.travis.yml b/.travis.yml index a49cdbb..ab298c9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -39,7 +39,7 @@ script: - sed -i "s@SolaceStackRegionNAME@${AWS_DEFAULT_REGION}@g" ci/solace-aws-ha-3az-prod-travistest.json - aws s3 mb s3://solace-cf-quickstart-travistest || echo "s3 bucket already existed" - aws s3 sync . s3://solace-cf-quickstart-travistest/solace/eventbroker/latest --acl public-read - - export TESTSTACKPREFIX="T$(date +%s)"; export TESTSTACKNAME="$TESTSTACKPREFIX-sol-aws-travistest"; + - export TESTSTACKPREFIX=T`echo "$(date +%s)" | rev`; export TESTSTACKNAME="$TESTSTACKPREFIX-sol-aws-travistest"; - aws cloudformation create-stack --stack-name $TESTSTACKNAME --template-body file://templates/solace-master.template --parameters file://ci/solace-aws-ha-3az-prod-travistest.json --on-failure DO_NOTHING --capabilities CAPABILITY_IAM - echo "Waiting for stack create complete" - "travis_wait 30 sleep 1800 &" @@ -47,10 +47,17 @@ script: - aws cloudformation describe-stack-events --stack-name $TESTSTACKNAME - aws cloudformation describe-stacks --stack-name $TESTSTACKNAME - echo "Pausing to get the ELB ready"; sleep 10 - - url="$(aws elb describe-load-balancers | grep DNSName | grep $TESTSTACKPREFIX | awk -F '"' '{print $4}')"; echo $url + - export url="$(aws elbv2 describe-load-balancers | grep DNSName | grep `echo $TESTSTACKPREFIX | head -c4` | awk -F '"' '{print $4}')"; echo $url + - until curl http://$url:8080; do sleep 10; done - curl -O https://sftp.solace.com/download/SDKPERF_C_LINUX64 - tar -xvf SDKPERF_C_LINUX64 - pubSubTools/sdkperf_c -cip=$url -mn=100000 -mr=0 -ptl=t1 -stl=t1 | grep "Total Messages" + - sleep 30 + - curl -sS -u admin:admin http://$url:8080/SEMP -d "" + - curl -sS -u admin:admin http://$url:8080/SEMP -d "" + - bash -c 'if [[ -z `curl -sS -u admin:admin http://$url:8080/SEMP -d "" + | grep "Up"` ]] ; then echo "config-sync not up!"; exit + 1; fi' after_success: - echo "Test Success - Branch($TRAVIS_BRANCH) Pull Request($TRAVIS_PULL_REQUEST) Tag($TRAVIS_TAG)" diff --git a/README.md b/README.md index 6688006..6583cef 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ Below is the list of AWS resources that will be deployed by the Quick Start. Ple ## Required IAM roles -Look for `AWS::IAM::Role` in the templates source for the list of required IAM roles to create the stacks. +Look for `AWS::IAM::Role` in the templates source for the list of required IAM roles to create the stacks. # How to Deploy PubSub+ Software Event Broker in an HA Group diff --git a/templates/solace.template b/templates/solace.template index 81cd58c..bf7df15 100644 --- a/templates/solace.template +++ b/templates/solace.template @@ -536,6 +536,10 @@ Resources: VpcId: !Ref 'VPCID' GroupDescription: Event Broker Security Group SecurityGroupIngress: + - IpProtocol: tcp + FromPort: '5550' + ToPort: '5550' + CidrIp: !Ref 'RemoteAccessCIDR' - IpProtocol: tcp FromPort: '55555' ToPort: '55555' @@ -594,60 +598,309 @@ Resources: Timeout: '600' Count: '1' ELB: - Type: AWS::ElasticLoadBalancing::LoadBalancer + Type: AWS::ElasticLoadBalancingV2::LoadBalancer DependsOn: - EventBrokerPrimaryStack + - EventBrokerBackupStack Condition: UsePrivateSubnetsCondition Properties: - SecurityGroups: - - !Ref 'EventBrokerSecurityGroup' - - !Ref 'SolaceInternalSecurityGroupMember' + Scheme: internet-facing Subnets: !Ref 'PublicSubnetIDs' - Instances: - - !GetAtt 'EventBrokerPrimaryStack.Outputs.EC2ID' - - !GetAtt 'EventBrokerBackupStack.Outputs.EC2ID' - - !GetAtt 'MonitorStack.Outputs.EC2ID' - HealthCheck: - Target: !Join - - '' - - - 'HTTP:' - - 5550 - - /health-check/guaranteed-active - Timeout: '3' - Interval: '5' - UnhealthyThreshold: '2' - HealthyThreshold: '2' - Listeners: - - LoadBalancerPort: '55555' - InstancePort: '55555' - Protocol: TCP - - LoadBalancerPort: '55003' - InstancePort: '55003' - Protocol: TCP - - LoadBalancerPort: '55443' - InstancePort: '55443' - Protocol: TCP - - LoadBalancerPort: '1443' - InstancePort: '1443' - Protocol: TCP - - LoadBalancerPort: '8000' - InstancePort: '8000' - Protocol: TCP - - LoadBalancerPort: '5672' - InstancePort: '5672' - Protocol: TCP - - LoadBalancerPort: '9000' - InstancePort: '9000' - Protocol: TCP - - LoadBalancerPort: '1883' - InstancePort: '1883' - Protocol: TCP - - LoadBalancerPort: '8008' - InstancePort: '8008' - Protocol: TCP - - LoadBalancerPort: '8080' - InstancePort: '8080' - Protocol: TCP - - LoadBalancerPort: '1943' - InstancePort: '1943' - Protocol: TCP \ No newline at end of file + Type: network + Port55555NetworkLoadBalancerTargetGroup: + Type: AWS::ElasticLoadBalancingV2::TargetGroup + DependsOn: + - ELB + Properties: + Port: 55555 + Protocol: TCP + VpcId: !Ref 'VPCID' + HealthCheckPath: '/health-check/guaranteed-active' + HealthCheckPort: 5550 + HealthCheckProtocol: 'HTTP' + Targets: + - Id: !GetAtt 'EventBrokerPrimaryStack.Outputs.EC2ID' + Port: 55555 + - Id: !GetAtt 'EventBrokerBackupStack.Outputs.EC2ID' + Port: 55555 + Port55003NetworkLoadBalancerTargetGroup: + Type: AWS::ElasticLoadBalancingV2::TargetGroup + DependsOn: + - ELB + Properties: + Port: 55003 + Protocol: TCP + VpcId: !Ref 'VPCID' + HealthCheckPath: '/health-check/guaranteed-active' + HealthCheckPort: 5550 + HealthCheckProtocol: 'HTTP' + Targets: + - Id: !GetAtt 'EventBrokerPrimaryStack.Outputs.EC2ID' + Port: 55003 + - Id: !GetAtt 'EventBrokerBackupStack.Outputs.EC2ID' + Port: 55003 + Port55443NetworkLoadBalancerTargetGroup: + Type: AWS::ElasticLoadBalancingV2::TargetGroup + DependsOn: + - ELB + Properties: + Port: 55443 + Protocol: TCP + VpcId: !Ref 'VPCID' + HealthCheckPath: '/health-check/guaranteed-active' + HealthCheckPort: 5550 + HealthCheckProtocol: 'HTTP' + Targets: + - Id: !GetAtt 'EventBrokerPrimaryStack.Outputs.EC2ID' + Port: 55443 + - Id: !GetAtt 'EventBrokerBackupStack.Outputs.EC2ID' + Port: 55443 + Port1443NetworkLoadBalancerTargetGroup: + Type: AWS::ElasticLoadBalancingV2::TargetGroup + DependsOn: + - ELB + Properties: + Port: 1443 + Protocol: TCP + VpcId: !Ref 'VPCID' + HealthCheckPath: '/health-check/guaranteed-active' + HealthCheckPort: 5550 + HealthCheckProtocol: 'HTTP' + Targets: + - Id: !GetAtt 'EventBrokerPrimaryStack.Outputs.EC2ID' + Port: 1443 + - Id: !GetAtt 'EventBrokerBackupStack.Outputs.EC2ID' + Port: 1443 + Port8000NetworkLoadBalancerTargetGroup: + Type: AWS::ElasticLoadBalancingV2::TargetGroup + DependsOn: + - ELB + Properties: + Port: 8000 + Protocol: TCP + VpcId: !Ref 'VPCID' + HealthCheckPath: '/health-check/guaranteed-active' + HealthCheckPort: 5550 + HealthCheckProtocol: 'HTTP' + Targets: + - Id: !GetAtt 'EventBrokerPrimaryStack.Outputs.EC2ID' + Port: 8000 + - Id: !GetAtt 'EventBrokerBackupStack.Outputs.EC2ID' + Port: 8000 + Port5672NetworkLoadBalancerTargetGroup: + Type: AWS::ElasticLoadBalancingV2::TargetGroup + DependsOn: + - ELB + Properties: + Port: 5672 + Protocol: TCP + VpcId: !Ref 'VPCID' + HealthCheckPath: '/health-check/guaranteed-active' + HealthCheckPort: 5550 + HealthCheckProtocol: 'HTTP' + Targets: + - Id: !GetAtt 'EventBrokerPrimaryStack.Outputs.EC2ID' + Port: 5672 + - Id: !GetAtt 'EventBrokerBackupStack.Outputs.EC2ID' + Port: 5672 + Port9000NetworkLoadBalancerTargetGroup: + Type: AWS::ElasticLoadBalancingV2::TargetGroup + DependsOn: + - ELB + Properties: + Port: 9000 + Protocol: TCP + VpcId: !Ref 'VPCID' + HealthCheckPath: '/health-check/guaranteed-active' + HealthCheckPort: 5550 + HealthCheckProtocol: 'HTTP' + Targets: + - Id: !GetAtt 'EventBrokerPrimaryStack.Outputs.EC2ID' + Port: 9000 + - Id: !GetAtt 'EventBrokerBackupStack.Outputs.EC2ID' + Port: 9000 + Port1883NetworkLoadBalancerTargetGroup: + Type: AWS::ElasticLoadBalancingV2::TargetGroup + DependsOn: + - ELB + Properties: + Port: 1883 + Protocol: TCP + VpcId: !Ref 'VPCID' + HealthCheckPath: '/health-check/guaranteed-active' + HealthCheckPort: 5550 + HealthCheckProtocol: 'HTTP' + Targets: + - Id: !GetAtt 'EventBrokerPrimaryStack.Outputs.EC2ID' + Port: 1883 + - Id: !GetAtt 'EventBrokerBackupStack.Outputs.EC2ID' + Port: 1883 + Port8008NetworkLoadBalancerTargetGroup: + Type: AWS::ElasticLoadBalancingV2::TargetGroup + DependsOn: + - ELB + Properties: + Port: 8008 + Protocol: TCP + VpcId: !Ref 'VPCID' + HealthCheckPath: '/health-check/guaranteed-active' + HealthCheckPort: 5550 + HealthCheckProtocol: 'HTTP' + Targets: + - Id: !GetAtt 'EventBrokerPrimaryStack.Outputs.EC2ID' + Port: 8008 + - Id: !GetAtt 'EventBrokerBackupStack.Outputs.EC2ID' + Port: 8008 + Port8080NetworkLoadBalancerTargetGroup: + Type: AWS::ElasticLoadBalancingV2::TargetGroup + DependsOn: + - ELB + Properties: + Port: 8080 + Protocol: TCP + VpcId: !Ref 'VPCID' + HealthCheckPath: '/health-check/guaranteed-active' + HealthCheckPort: 5550 + HealthCheckProtocol: 'HTTP' + Targets: + - Id: !GetAtt 'EventBrokerPrimaryStack.Outputs.EC2ID' + Port: 8080 + - Id: !GetAtt 'EventBrokerBackupStack.Outputs.EC2ID' + Port: 8080 + Port1943NetworkLoadBalancerTargetGroup: + Type: AWS::ElasticLoadBalancingV2::TargetGroup + DependsOn: + - ELB + Properties: + Port: 1943 + Protocol: TCP + VpcId: !Ref 'VPCID' + HealthCheckPath: '/health-check/guaranteed-active' + HealthCheckPort: 5550 + HealthCheckProtocol: 'HTTP' + Targets: + - Id: !GetAtt 'EventBrokerPrimaryStack.Outputs.EC2ID' + Port: 1943 + - Id: !GetAtt 'EventBrokerBackupStack.Outputs.EC2ID' + Port: 1943 + Port55555NetworkLoadBalancerListener: + Type: AWS::ElasticLoadBalancingV2::Listener + DependsOn: + - ELB + Properties: + DefaultActions: + - Type: forward + TargetGroupArn: !Ref 'Port55555NetworkLoadBalancerTargetGroup' + LoadBalancerArn: !Ref 'ELB' + Port: '55555' + Protocol: TCP + Port55003NetworkLoadBalancerListener: + Type: AWS::ElasticLoadBalancingV2::Listener + DependsOn: + - ELB + Properties: + DefaultActions: + - Type: forward + TargetGroupArn: !Ref 'Port55003NetworkLoadBalancerTargetGroup' + LoadBalancerArn: !Ref 'ELB' + Port: '55003' + Protocol: TCP + Port55443NetworkLoadBalancerListener: + Type: AWS::ElasticLoadBalancingV2::Listener + DependsOn: + - ELB + Properties: + DefaultActions: + - Type: forward + TargetGroupArn: !Ref 'Port55443NetworkLoadBalancerTargetGroup' + LoadBalancerArn: !Ref 'ELB' + Port: '55443' + Protocol: TCP + Port1443NetworkLoadBalancerListener: + Type: AWS::ElasticLoadBalancingV2::Listener + DependsOn: + - ELB + Properties: + DefaultActions: + - Type: forward + TargetGroupArn: !Ref 'Port1443NetworkLoadBalancerTargetGroup' + LoadBalancerArn: !Ref 'ELB' + Port: '1443' + Protocol: TCP + Port8000NetworkLoadBalancerListener: + Type: AWS::ElasticLoadBalancingV2::Listener + DependsOn: + - ELB + Properties: + DefaultActions: + - Type: forward + TargetGroupArn: !Ref 'Port8000NetworkLoadBalancerTargetGroup' + LoadBalancerArn: !Ref 'ELB' + Port: '8000' + Protocol: TCP + Port5672NetworkLoadBalancerListener: + Type: AWS::ElasticLoadBalancingV2::Listener + DependsOn: + - ELB + Properties: + DefaultActions: + - Type: forward + TargetGroupArn: !Ref 'Port5672NetworkLoadBalancerTargetGroup' + LoadBalancerArn: !Ref 'ELB' + Port: '5672' + Protocol: TCP + Port9000NetworkLoadBalancerListener: + Type: AWS::ElasticLoadBalancingV2::Listener + DependsOn: + - ELB + Properties: + DefaultActions: + - Type: forward + TargetGroupArn: !Ref 'Port9000NetworkLoadBalancerTargetGroup' + LoadBalancerArn: !Ref 'ELB' + Port: '9000' + Protocol: TCP + Port1883NetworkLoadBalancerListener: + Type: AWS::ElasticLoadBalancingV2::Listener + DependsOn: + - ELB + Properties: + DefaultActions: + - Type: forward + TargetGroupArn: !Ref 'Port1883NetworkLoadBalancerTargetGroup' + LoadBalancerArn: !Ref 'ELB' + Port: '1883' + Protocol: TCP + Port8008NetworkLoadBalancerListener: + Type: AWS::ElasticLoadBalancingV2::Listener + DependsOn: + - ELB + Properties: + DefaultActions: + - Type: forward + TargetGroupArn: !Ref 'Port8008NetworkLoadBalancerTargetGroup' + LoadBalancerArn: !Ref 'ELB' + Port: '8008' + Protocol: TCP + Port8080NetworkLoadBalancerListener: + Type: AWS::ElasticLoadBalancingV2::Listener + DependsOn: + - ELB + Properties: + DefaultActions: + - Type: forward + TargetGroupArn: !Ref 'Port8080NetworkLoadBalancerTargetGroup' + LoadBalancerArn: !Ref 'ELB' + Port: '8080' + Protocol: TCP + Port1943NetworkLoadBalancerListener: + Type: AWS::ElasticLoadBalancingV2::Listener + DependsOn: + - ELB + Properties: + DefaultActions: + - Type: forward + TargetGroupArn: !Ref 'Port1943NetworkLoadBalancerTargetGroup' + LoadBalancerArn: !Ref 'ELB' + Port: '1943' + Protocol: TCP