Skip to main content

Akka Yapılandırması

Akka, Java ve Scala için yüksek düzeyde eşzamanlı, dağıtılmış ve esnek mesaj odaklı uygulamalar oluşturmaya yönelik bir araç setidir

-- https://akka.io/

Akka, TheHive'in birçok düğümünü bir araya getirerek ve sorunsuz bir kullanıcı deneyimi sunarak çalışmasını sağlamak için kullanılır.

Temel yapılandırma

İyi bir küme kurulumu, TheHive uygulamalarının en az 3 düğümünü gerektirir. Her düğüm için Akka şu şekilde yapılandırılmalıdır:

akka {
  cluster.enable = on
  actor {
    provider = cluster
  }
  remote.artery {
    canonical {
      hostname = "<HOSTNAME OR IP_ADDRESS>"
      port = 2551
    }
  }
# seed node list contains at least one active node
  cluster.seed-nodes = [ "akka://application@HOSTNAME1:2551", "akka://application@HOSTNAME2:2551", "akka://application@HOSTNAME3:2551" ]
}

ile:

remote.artery.hostname düğümün ana bilgisayar adını veya IP adresini içerir,
akka düğümlerinin listesini içeren ve tüm düğümlerde aynı olan cluster.seed-nodes

 

Bir Kümenin 3 Düğümlü Yapılandırması:
Düğüm 1:

akka {
    cluster.enable = on
    actor {
      provider = cluster
    }
    remote.artery {
      canonical {
          hostname = "10.1.2.1"
          port = 2551
      }
    }
    # seed node list contains at least one active node
    cluster.seed-nodes = [ "akka://[email protected]:2551", "akka://[email protected]:2551", "akka://[email protected]:2551" ]
}

Düğüm 2:

akka {
    cluster.enable = on
    actor {
    provider = cluster
    }
    remote.artery {
    canonical {
        hostname = "10.1.2.2"
        port = 2551
    }
    }
    # seed node list contains at least one active node
    cluster.seed-nodes = [ "akka://[email protected]:2551", "akka://[email protected]:2551", "akka://[email protected]:2551" ]
}

Düğüm3: 

akka {
    cluster.enable = on
    actor {
    provider = cluster
    }
    remote.artery {
    canonical {
        hostname = "10.1.2.3"
        port = 2551
    }
    }
    # seed node list contains at least one active node
    cluster.seed-nodes = [ "akka://[email protected]:2551", "akka://[email protected]:2551", "akka://[email protected]:2551" ]
}

SSL/TLS desteği

Akka, düğümler arasındaki iletişimi şifrelemek için SSL/TLS'yi destekler. SSL desteği ile tipik bir yapılandırma :

akka {
  cluster.enable = on
  actor {
    provider = cluster
  }
  remote.artery {
    transport = tls-tcp
    canonical {
      hostname = "<HOSTNAME OR IP_ADDRESS>"
      port = 2551
    }

    ssl.config-ssl-engine {
      key-store = "<PATH TO KEYSTORE>"
      trust-store = "<PATH TO TRUSTSTORE>"

      key-store-password = "chamgeme"
      key-password = "chamgeme"
      trust-store-password = "chamgeme"

      protocol = "TLSv1.2"
    }
  }
# seed node list contains at least one active node
  cluster.seed-nodes = [ "akka://application@HOSTNAME1:2551", "akka://application@HOSTNAME2:2551", "akka://application@HOSTNAME3:2551" ]
}

Not: akka.remote.artery.transport'un değiştiğini ve akka.ssl.config-ssl-engine'in yapılandırılması gerektiğini unutmayın.

Referans: https://doc.akka.io/docs/akka/current/remoting-artery.html#remote-security

Sertifikalar Hakkında

Sertifikalar Hakkında

Kendi dahili PKI'nızı veya sertifikalarınızı oluşturmak için keytool komutlarını kullanabilirsiniz.

Referans: https://lightbend.github.io/ssl-config/CertificateGeneration.html#using-keytool

Sunucu sertifikalarınızın her şeyin düzgün çalışması için çeşitli KeyUsage ve ExtendedkeyUsage uzantıları içermesi gerekir:

  • KeyUsage uzantıları
    • nonRepudiation
    • dataEncipherment
    • digitalSignature
    • keyEncipherment
  • ExtendedkeyUsage uzantıları
    • serverAuth
    • clientAuth
Node 1 için SSL ile Akka yapılandırması:
akka {
  cluster.enable = on
  actor {
    provider = cluster
  }
  remote.artery {
    transport = tls-tcp
    canonical {
      hostname = "10.1.2.1"
      port = 2551
    }

    ssl.config-ssl-engine {
      key-store = "/etc/thehive/application.conf.d/certs/10.1.2.1.jks"
      trust-store = "/etc/thehive/application.conf.d/certs/internal_ca.jks"

      key-store-password = "chamgeme"
      key-password = "chamgeme"
      trust-store-password = "chamgeme"

      protocol = "TLSv1.2"
    }
  }
# seed node list contains at least one active node
  cluster.seed-nodes = [ "akka://[email protected]:2551", "akka://[email protected]:2551", "akka://[email protected]:2551" ]
}

Aynı prensibi diğer düğümler için de uygulayın ve tüm hizmetleri yeniden başlatın.