Cassandra Replikation

Python-Container erstellen

Environment "local" anwählen

  • In Portainer einloggen (nur im Intranet: entweder an der HTW oder über VPN)
  • Host, Userid und Passwort werden in der LV bekannt gegeben
  • https://xxx.f4.htw-berlin.de:9443/
  • Environment "local" auswählen

Container anlegen

Das Folgende dreimal ausführen

  • In der Navigationsleiste links auf "Stacks" klicken
  • Auf Button "Add stack" klicken
  • Name für Container vergeben
  • Auf "Deploy the stack" klicken

cas1

networks:
  ncas:
    name: ncas

services:
  cas1:
    container_name: cas1
    image: cassandra:latest
    ports:
      - 17000:7000
      - 17001:7001
      - 17070:7070
      - 17199:7199 
      - 19042:9042
      - 19160:9160
    environment:
      - JVM_OPTS=-Xms1024M -Xmx1024M
      - HEAP_NEWSIZE=1024M
      - MAX_HEAP_SIZE=1024M
    networks:
      - ncas

cas2

networks:
  ncas:
    name: ncas

services:
  cas2:
    container_name: cas2
    image: cassandra:latest
    ports:
      - 27000:7000
      - 27001:7001
      - 27070:7070
      - 27199:7199 
      - 29042:9042
      - 29160:9160
    environment:
      - CASSANDRA_SEEDS=cas1
      - JVM_OPTS=-Xms1024M -Xmx1024M
      - HEAP_NEWSIZE=1024M
      - MAX_HEAP_SIZE=1024M
    networks:
      - ncas

cas3

networks:
  ncas:
    name: ncas

services:
  cas3:
    container_name: cas3
    image: cassandra:latest
    ports:
      - 37000:7000
      - 37001:7001
      - 37070:7070
      - 37199:7199 
      - 39042:9042
      - 39160:9160
    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;
Top Sitemap