2017-08-24 7 views
0

Je suis en train de mettre en place un cluster à Akka docker, en ElasticBeanstalk. Les nœuds doivent communiquer entre eux comme ceci:Akka Cluster à Docker dans ElasticBeanstalk

+-------------------------------------------------------+ 
| ElasticBeanstalk/ECS         | 
|              | 
| +----------------------+  +----------------------+ | 
| | EC2     |  | EC2     | | 
| |      |  |      | | 
| | +------------------+ |  | +------------------+ | | 
| | | Docker   | |  | | Docker   | | | 
| | |     | |  | |     | | | 
| | | +------------+ | |  | | +------------+ | | | 
| | | |   | | |  | | |   | | | | 
| | | |   +---------->->-->   | | | | 
| | | | Akka  | | |  | | | Akka  | | | | 
| | | |   <--<-<----------+   | | | | 
| | | |   | | |  | | |   | | | | 
| | | +------------+ | |  | | +------------+ | | | 
| | +------------------+ |  | +------------------+ | | 
| +----------------------+  +----------------------+ | 
+-------------------------------------------------------+ 

En utilisant les informations contenues dans les messages de blog Akka Cluster EC2 Autoscaling (qui ne comprend pas Docker) et Akka Cluster in Docker (qui ne comprend pas EC2) J'ai mis en place un presque là solution.

Le dernier obstacle est comms entre les nœuds. Chaque noeud identifie correctement l'adresse IP interne de l'autre. Je suppose que les instances EC2 peuvent communiquer directement, sans passer par l'équilibreur de charge ECS.

Les nœuds AKKA sont à l'écoute sur le port 2551.

/app # netstat -a 
Active Internet connections (servers and established) 
Proto Recv-Q Send-Q Local Address   Foreign Address   State 
tcp  0  0 :::sunproxyadmin  :::*     LISTEN 
tcp  0  0 d0a81ebbe72a:2551  :::*     LISTEN 

Les instances docker exposent le port 2551.

# docker ps 
CONTAINER ID  IMAGE         COMMAND     CREATED    STATUS    PORTS     NAMES 
d0a81ebbe72a  mystuff/potter:v1.0.7-cluster04  "sh -c 'java -jar -Xm" About an hour ago Up About an hour 0.0.0.0:2551->2551/tcp ecs-awseb-maptiles-dev-uicd96apyp-6-potter-b8d6a7aef2c4c9c0a001 
d6bc31f1798b  amazon/amazon-ecs-agent:latest  "/agent"     About an hour ago Up About an hour        ecs-agent 

Les instances EC2 ont un groupe de sécurité qui permet les connexions entrantes sur le port 2551.

良 aws ec2 describe-instances --instance-ids "i-0750627a98ba930d4" "i-0bcd64a4121165327"|jq '.Reservations[].Instances[].SecurityGroups[]' 
{ 
    "GroupName": "akka-remoting", 
    "GroupId": "sg-6c267e16" 
} 
{ 
    "GroupName": "akka-remoting", 
    "GroupId": "sg-6c267e16" 
} 

良 aws ec2 describe-security-groups --group-names akka-remoting | jq -c '.SecurityGroups[].IpPermissions' 
[{"PrefixListIds":[],"FromPort":2551,"IpRanges":[{"CidrIp":"0.0.0.0/0"}],"ToPort":2551,"IpProtocol":"tcp","UserIdGroupPairs":[],"Ipv6Ranges":[{"CidrIpv6":"::/0"}]}] 

良 aws ec2 describe-security-groups --group-names akka-remoting | jq -c '.SecurityGroups[].IpPermissionsEgress' 
[{"PrefixListIds":[],"FromPort":2551,"IpRanges":[{"CidrIp":"0.0.0.0/0"}],"ToPort":2551,"IpProtocol":"tcp","UserIdGroupPairs":[],"Ipv6Ranges":[{"CidrIpv6":"::/0"}]}] 

Mais les nœuds ne peuvent toujours pas se voir.

[INFO] [08/23/2017 23:31:37.227] [main] [akka.remote.Remoting] Starting remoting 
[INFO] [08/23/2017 23:31:37.805] [main] [akka.remote.Remoting] Remoting started; listening on addresses :[akka.tcp://[email protected]:2551] 
[INFO] [08/23/2017 23:31:37.818] [main] [akka.cluster.Cluster(akka://potter)] Cluster Node [akka.tcp://[email protected]:2551] - Starting up... 
[INFO] [08/23/2017 23:31:37.867] [main] [akka.cluster.Cluster(akka://potter)] Cluster Node [akka.tcp://[email protected]:2551] - Registered cluster JMX MBean [akka:type=Cluster] 
[INFO] [08/23/2017 23:31:37.867] [main] [akka.cluster.Cluster(akka://potter)] Cluster Node [akka.tcp://[email protected]:2551] - Started up successfully 
[WARN] [08/23/2017 23:31:38.053] [New I/O boss #3] [NettyTransport(akka://potter)] Remote connection to [null] failed with java.net.ConnectException: Connection refused: /172.31.35.149:2551 
[WARN] [08/23/2017 23:31:38.056] [potter-akka.remote.default-remote-dispatcher-7] [akka.tcp://[email protected]:2551/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2Fpotter%40172.31.35.149%3A2551-0] Association with remote system [akka.tcp://[email protected]:2551] has failed, address is now gated for [5000] ms. Reason: [Association failed with [akka.tcp://[email protected]:2551]] Caused by: [Connection refused: /172.31.35.149:2551] 

Qu'est-ce que j'ai manqué/mal compris?

Répondre