Search code examples
dockerdocker-composecassandrascylla

How to create Docker Scylla acorss Multi DC


I have 2 server in difference datacenter.

  • First server in DC1 with public IP 10.10.10.1
  • Second server in DC2 with public IP 20.20.20.2

docker-compose for first server in DC1 look like this :

version: '3'
services:
 scylla-n1:
  restart: always
  image: scylladb/scylla:4.5.2
  container_name: scylla-n1
  command: --seeds=10.10.10.1, 20.20.20.2, scylla-n1,scylla-n2 --smp 8 --memory 16G --authenticator PasswordAuthenticator --authorizer CassandraAuthorizer

  networks:
   netscylla:
    ipv4_address: 172.16.0.11
  ports:
   - 21021:9042
   - 9142:9142
   - 7000:7000
   - 7001:7001
   - 7199:7199
   - 10000:10000
   - 9180:9180
   - 9100:9100
   - 9160:9160
   - 10001:10001
   - 5609:5609
   - 56090:56090


  logging:
   driver: "json-file"
   options:
    max-file: "1"
    max-size: "1m"

 scylla-n2:
  restart: always
  image: scylladb/scylla:4.5.2
  container_name: scylla-n2
  command: --seeds=scylla-n1,scylla-n2 --smp 4 --memory 8G --authenticator PasswordAuthenticator --authorizer CassandraAuthorizer

  networks:
   netscylla:
    ipv4_address: 172.16.0.12
  ports:
   - 21022:9042

  logging:
   driver: "json-file"
   options:
    max-file: "1"
    max-size: "1m"
networks:
 netscylla:
  ipam:
   config:
    - subnet: 172.16.0.10/24

And docker-compose for second server like this :

version: '3'
services:
 scylla-n1:
  restart: always
  image: scylladb/scylla:4.5.2
  container_name: scylla-n1
  command: --seeds=10.10.10.1, 20.20.20.2, scylla-n1,scylla-n2 --smp 8 --memory 16G --authenticator PasswordAuthenticator --authorizer CassandraAuthorizer

  networks:
   netscylla:
    ipv4_address: 172.16.0.11
  ports:
   - 21021:9042
   - 9142:9142
   - 7000:7000
   - 7001:7001
   - 7199:7199
   - 10000:10000
   - 9180:9180
   - 9100:9100
   - 9160:9160
   - 10001:10001
   - 5609:5609
   - 56090:56090

  logging:
   driver: "json-file"
   options:
    max-file: "1"
    max-size: "1m"

 scylla-n2:
  restart: always
  image: scylladb/scylla:4.5.2
  container_name: scylla-n2
  command: --seeds=scylla-n1,scylla-n2 --smp 4 --memory 8G --authenticator PasswordAuthenticator --authorizer CassandraAuthorizer

  networks:
   netscylla:
    ipv4_address: 172.16.0.12
  ports:
   - 21022:9042

  logging:
   driver: "json-file"
   options:
    max-file: "1"
    max-size: "1m"
networks:
 netscylla:
  ipam:
   config:
    - subnet: 172.16.0.10/24

Can it posible to create multi node inside docker in First Server also in second server- and after that connect scylla both 2 of that server. Thanks for your help


Solution

  • After research and consultation with product advisor from scylla. i has resolved the problems :

    Scylla arsitecture if use node in virtual must be a public cloud source https://www.scylladb.com/product/technology/

    So docker-compose.yaml i change map port to public ip like this

    version: '3'
    
    services:
    
     scylla-1:
      restart: always
      image: scylladb/scylla:4.5.2
      container_name: scylla-1
      command: --seeds=[Public-IP-1],[Public-IP-2] --smp 8 --memory 32G --authenticator PasswordAuthenticator --authorizer CassandraAuthorizer
      ports:
       - [Public-IP-1]:9042:9042
       - [Public-IP-1]:9142:9142
       - [Public-IP-1]:7000:7000
       - [Public-IP-1]:7001:7001
       - [Public-IP-1]:7199:7199
       - [Public-IP-1]:10000:10000
       - [Public-IP-1]:9180:9180
       - [Public-IP-1]:9100:9100
       - [Public-IP-1]:9160:9160
       - [Public-IP-1]:10001:10001
       - [Public-IP-1]:5609:5609
       - [Public-IP-1]:56090:56090
    
      logging:
       driver: "json-file"
       options:
        max-file: "1"
        max-size: "1m"
    
     scylla-2:
      restart: always
      image: scylladb/scylla:4.5.2
      container_name: scylla-2
      command: --seeds=[Public-IP-1],[Public-IP-2] --smp 8 --memory 32G --authenticator PasswordAuthenticator --authorizer CassandraAuthorizer
      ports:
       - [Public-IP-2]:9042:9042
       - [Public-IP-2]:9142:9142
       - [Public-IP-2]:7000:7000
       - [Public-IP-2]:7001:7001
       - [Public-IP-2]:7199:7199
       - [Public-IP-2]:10000:10000
       - [Public-IP-2]:9180:9180
       - [Public-IP-2]:9100:9100
       - [Public-IP-2]:9160:9160
       - [Public-IP-2]:10001:10001
       - [Public-IP-2]:5609:5609
       - [Public-IP-2]:56090:56090
    
      logging:
       driver: "json-file"
       options:
        max-file: "1"
        max-size: "1m"