Programing/Akka

Akka Cluster Seed Node

BUST 2018. 8. 25. 00:41

Akka Cluster Seed Node

project structure
  • akka cluster로 join하기 위한 node, akka cluster node 중에 아무 노드의 주소를 사용하면 akka cluster에 join을 할수 있다.
    • akka cluster의 진입점이라고 생각을 하면 된다.
  • akka seed node로 사용하는 node가 모두 running 상태일 필요는 없다.
  • seed node 중 첫번쨰 seed node가 중요하다. Akka Cluster가 처음 시작될때에는 첫번째 seed node는 작동되고 있는 (started) node의 주소로 할당을 한다. 시작하는 Node와 첫번째 seed node가 같을 경우 Akka Cluster가 새롭게 생긴다.
  • cluster가 분리되는 현상이 나타날수 있기 때문에 seed node를 잘 활용해야 된다.
  • Seed Node Discovery로 DNS을 이용하여 사용할수 있다.

How to join to seed nodes

Application.conf

akka.cluster.seed-nodes = [
  "akka.tcp://ClusterSystem@host1:2552",
  "akka.tcp://ClusterSystem@host2:2552"]

JVM Options

-Dakka.cluster.seed-nodes.0=akka.tcp://ClusterSystem@host1:2552
-Dakka.cluster.seed-nodes.1=akka.tcp://ClusterSystem@host2:2552

Programatically joining to seed nodes 

import akka.actor.Address;
import akka.cluster.Cluster;

final Cluster cluster = Cluster.get(system);
List<Address> list = new LinkedList<>(); //replace this with your method to dynamically get seed nodes
cluster.joinSeedNodes(list);


Reference


https://doc.akka.io/docs/akka/2.5/cluster-usage.html