Home Up PDF Prof. Dr. Ingo Claßen
Ü: Cassandra Replikation - ADBKT

Übung Cassandra Replikation

Stack cas1 anlegen

networks:
  ncas:
    name: ncas

services:
  cas1:
    container_name: cas1
    image: cassandra:latest
    environment:
      - JVM_OPTS=-Xms1024M -Xmx1024M
      - HEAP_NEWSIZE=1024M
      - MAX_HEAP_SIZE=1024M
    networks:
      - ncas

Etwas warten, bis cas1 up ist

Stack cas2 anlegen

networks:
  ncas:
    name: ncas

services:
  cas2:
    container_name: cas2
    image: cassandra:latest
    environment:
      - CASSANDRA_SEEDS=cas1
      - JVM_OPTS=-Xms1024M -Xmx1024M
      - HEAP_NEWSIZE=1024M
      - MAX_HEAP_SIZE=1024M
    networks:
      - ncas

Stack cas3 anlegen

networks:
  ncas:
    name: ncas

services:
  cas3:
    container_name: cas3
    image: cassandra:latest
    environment:
      - CASSANDRA_SEEDS=cas1
      - JVM_OPTS=-Xms1024M -Xmx1024M
      - HEAP_NEWSIZE=1024M
      - MAX_HEAP_SIZE=1024M
    networks:
      - ncas

Code ausführen

Erst cas1 starten und dann etwas warten, dann erst cas2 und cas3

In cas1, cas2 und cas3 ausführen

  • exec console, jeweils in einem neuen Tab
  • in jeder console cqlsh starten

In cas1 ausführen

create keyspace k1 with replication = {
  'class': 'SimpleStrategy', 'replication_factor' : 3
};
use k1;
create table t (
  pk int, 
  sk int, 
  v int, 
  primary key (pk, sk)
);
insert into t(pk, sk, v) values (1, 1, 100);

In cas1, cas2 und cas3 ausführen

use k1;
consistency quorum;
select * from t where pk=1;

Weitere Schritte

auf cas1
  insert into t(pk, sk, v) values (1, 1, 200);
auf allen Servern: 
  select * from t where pk=1;
cas3 aus Netzwerk lösen
auf allen Servern: 
  select * from t where pk=1;
auf cas3: 
  consistency one;
auf cas3: 
  select * from t where pk=1;
auf cas1: 
  insert into t(pk, sk, v) values (1, 1, 300);
auf allen Servern: 
  select * from t where pk=1;
(Wieder-)Hereinnehmen von cas3 ins Netzwerk ncas
auf cas3: 
  consistency quorum;
auf cas3: 
  select * from t where pk=1;