User Tools

Site Tools


cloud:aws:servicediscovery

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
cloud:aws:servicediscovery [2018/11/08 13:48] – created skipidarcloud:aws:servicediscovery [2023/11/01 07:13] (current) – ↷ Page moved from business_process_management:camunda:cloud:aws:servicediscovery to cloud:aws:servicediscovery skipidar
Line 1: Line 1:
-==== Service ====+==== Service Discovery ==== 
 + 
 + 
 +Examples 
 + 
 +Add service 
 +<sxh shell> 
 +#/bin/bash -e 
 + 
 +#stop on error 
 +#set -e 
 + 
 + 
 + 
 +######## ARGUMENTS 
 + 
 + 
 +# retrieve the ec2 instance ID: i-0d39e398760299ce0 
 +instanceId=${1?Pass the ec2 instance ID.} 
 + 
 +# retrieve the private ip of the instance: 10.142.251.149 
 +instancePrivateIp=${2?Pass the private ipv4 of the instance.} 
 + 
 +# retrieve name of the building: zurich-klinik 
 +buildingName=${3?Pass the name of the building, to be used in the service url.} 
 + 
 +# retrieve the vpc id: vpc-00aeb2af06257ebf8 
 +vpcid=${4?Pass the vpc id.} 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 +########## SCRIPT START  
 + 
 +dnsnamespace="navvis.local" 
 +servicename="${buildingName}.renderer" 
 + 
 + 
 + 
 + 
 +aws servicediscovery create-private-dns-namespace --name $dnsnamespace --vpc $vpcid 
 + 
 +# retrieve the namespace id 
 +namespaceId=$(aws servicediscovery list-namespaces --query "\"Namespaces\"[?Name==\`$dnsnamespace\`].Id" --output text) 
 +echo "NameSpaceId: $namespaceId" 
 + 
 + 
 +# ignore errors, when service already exists 
 +aws servicediscovery create-service --name $servicename \ 
 + --dns-config "NamespaceId=$namespaceId,RoutingPolicy=WEIGHTED,DnsRecords=[{Type=A,TTL=10}]" 2> /dev/null 
 + 
 + 
 +# retrieve the service id 
 +serviceId=$(aws servicediscovery list-services --query "\"Services\"[?Name==\`$servicename\`].Id" --output text) 
 +echo "ServiceId: $serviceId" 
 + 
 + 
 +aws servicediscovery register-instance --service-id $serviceId \ 
 +--instance-id $instanceId  --attributes "AWS_INSTANCE_IPV4=$instancePrivateIp" 
 + 
 + 
 +# ping the service 
 +echo -e "Service available under '$servicename.$dnsnamespace'" 
 + 
 +</sxh> 
 + 
 + 
 + 
 + 
 +Remove service 
 + 
 + 
 + 
 + 
 +<sxh shell> 
 +#/bin/bash -e 
 + 
 +# Removes the services and the namespace, if no instances are available in the service anymore 
 + 
 + 
 +#stop on error 
 +#set -e 
 + 
 + 
 +######## ARGUMENTS 
 + 
 + 
 +# retrieve the building ID: zurich-klinik 
 +buildingName=${1?Pass in the building id.} 
 + 
 + 
 + 
 + 
 + 
 + 
 +########## SCRIPT START  
 + 
 + 
 +dnsnamespace="navvis.local" 
 +servicename="${buildingName}.renderer" 
 + 
 + 
 + 
 +# get the instance id by service 
 +serviceId=$(aws servicediscovery list-services --query "\"Services\"[?Name==\`$servicename\`].Id" --output text) 2> /dev/null 
 +echo "ServiceId: $serviceId" 
 + 
 +# get the instace id by service 
 +instanceId=$(aws servicediscovery list-instances --service-id $serviceId --query "\"Instances\"[0].Id" --output text)  2> /dev/null 
 +echo "InstanceId: $instanceId" 
 + 
 +# retrieve the namespace id 
 +namespaceId=$(aws servicediscovery list-namespaces --query "\"Namespaces\"[?Name==\`$dnsnamespace\`].Id" --output text)  2> /dev/null 
 +echo "NameSpaceId: $namespaceId" 
 + 
 +# deregister the instance 
 +aws servicediscovery deregister-instance --service-id $serviceId --instance-id $instanceId  2> /dev/null 
 + 
 +# deregister the service, will only work if no instances are left 
 +aws servicediscovery delete-service --id $serviceId  2> /dev/null 
 + 
 +# deregister the namespace, will only work if no services 
 +aws servicediscovery delete-namespace --id $namespaceId  2> /dev/null 
 + 
 + 
 + 
 +# ping the service 
 +echo -e "Removed service '$servicename.$dnsnamespace'" 
 + 
 +</sxh>
  
cloud/aws/servicediscovery.1541684885.txt.gz · Last modified: (external edit)