Doorgaan naar hoofdcontent
pdf?stylesheet=default
Blackboard Help

Redis Cache

Het Building Block Redis Cache is gekoppeld aan de nieuwe versie van de beheerconsole en biedt systeembeheerders een nieuwe manier om de prestaties van hun Learn-instanties te beheren en te controleren. Dit Building Block biedt verbeteringen van de systeemprestaties, schaalbaarheid en beschikbaarheid door ondersteuning van een aanvullend type geheugenopslag buiten de JVM-heap.

Het Building Block Redis Cache zorgt ervoor dat het cache-raamwerk van Blackboard Learn Redis kan gebruiken als een aanvullend type geheugenopslag buiten de heap. Redis is een open-source, geavanceerde geheugenoplossing met geavanceerde netwerkvoorzieningen die zeer veel toegevoegde waarde levert. Craigslist, Github, Stackoverflow en Instagram zijn voorbeelden van andere bedrijven die Redis gebruiken.

Het Building Block Redis Cache wordt ondersteund in Blackboard Learn 9.1 SP 11 en hoger. 

Vereisten

Service Pack 11 en hoger en een Redis-server

Het Building Block Redis Cache zorgt ervoor dat het cache-raamwerk van Blackboard Learn Redis kan gebruiken als een aanvullend type geheugenopslag buiten de heap. Redis is een open-source, geavanceerde geheugenoplossing met geavanceerde netwerkvoorzieningen die zeer veel toegevoegde waarde levert. Twitter, Craigslist, Github, Stackoverflow en Instagram zijn voorbeelden van andere bedrijven die Redis gebruiken.

Belangrijkste voordelen voor wat betreft prestaties, schaalbaarheid en beschikbaarheid

  • Snellere verwerking van aanvragen en kortere responstijden

  • Geen risico van prestatieverlies

  • De cache wordt gedeeld over alle toepassingsservers en de subset met meestgebruikte gegevens wordt lokaal opgeslagen

  • De cache is beschikbaar als de JVM-heap zwaar wordt belast

  • Maakt schaling van het systeem mogelijk met een beheersbare grootte van de JVM-heap

  • Grotere cache en snellere overloopopslag

  • Snelle en efficiënte serialisatie van objectgrafieken

  • Asynchrone 'puts' en updates via write-behind strategie

  • Vergroot de mogelijkheid voor caching buiten de heap

  • Minder overhead bij clusterinvalidatie in de heap

  • Caches die behouden blijven bij het opnieuw opstarten en vastlopen van toepassingen

  • Geavanceerde controlefuncties voor preventief onderhoud en probleemoplossing

Redis Cache-server monitoren

Monitoring van de Redis Cache-server is beschikbaar wanneer de beheerconsole is geïnstalleerd. Zoek "Redis Cache" in het hoofdmenu van de beheerconsole.

Wanneer hebt u Redis Cache nodig?

Het Building Block Redis Cache wordt aanbevolen als een of meer van deze scenario's aan de orde zijn:

  • Hoge cache-verdrijvingssnelheid
  • Systeembronnen belasten de databaseserver
  • Hoge belasting van de JVM-heap
  • Horizontaal grote Blackboard Learn-implementaties om clusterinvalidatieverkeer in de cache te verlagen

Het Building Block Redis Cache installeren en activeren

U kunt Software-updates gebruiken om het Building Block Redis Cache rechtstreeks vanuit het configuratiescherm voor systeembeheer te installeren. U kunt ook naar Behind the Blackboard Downloads gaan en het Building Block Redis Cache daar handmatig downloaden en installeren.

Software-updates

Software-updates worden aangeboden via het configuratiescherm voor systeembeheer. Als er een nieuw Building Block beschikbaar komt, of een update, wordt dit aangegeven via de pictogrammen. Klik op het pictogram Aanbevolen Building Blocks beschikbaar en zoek het Building Block Redis Cache. Klik op Installeren. U moet het Building Block na de installatie nog beschikbaar maken.

Behind the Blackboard Downloads

Download het Building Block Redis Cache van de beginpagina van Behind the Blackboard Downloads, onder Featured Building Blocks for Learn. Bewaar het bestand op een lokale schijf. Pak het bestand uit om toegang te krijgen tot het war-bestand.

  1. Ga naar het configuratiescherm voor systeembeheer > Building Blocks.
  2. Klik op Geïnstalleerde tools.
  3. Klik op Building Blocks uploaden  op de actiebalk.
  4. Blader naar het war-bestand van het Building Block Redis Cache.
  5. Klik op Verzenden.
  6. U ziet een bericht als het Building Block is geïnstalleerd. Stel het Building Block in op Actief en klik op Goedkeuren.

Redis Cache inschakelen

  1. Installeer een Redis-server. Zie Een Redis-server installeren voor de instructies.
  2. Navigeer in het configuratiescherm voor systeembeheer naar de pagina met instellingen voor het Building Block Redis Cache.
  3. Selecteer de lijst met caches om Redis in te schakelen.
  4. Geef instellingen voor de verbinding met Redis op in de velden Host, Poort en Wachtwoord.
  5. Klik op Verzenden.
  6. Zorg ervoor dat de poort voor de Redis-server en de RMI-poorten geopend zijn tussen de Redis-server en de toepassingsservers van Learn.
  7. Start alle Learn-toepassingsservers opnieuw op (doe dit met ingeschakelde systemen voor de productieomgeving).
  8. Navigeer in het configuratiescherm voor systeembeheer naar de pagina met de verbindingsstatus van Redis.
  9. Controleer of alle toepassingsservers zijn verbonden met Redis.

Een Redis-server installeren

Deze stappen zijn bedoeld voor een omgeving waarin u Redis installeert voor Red Hat Enterprise Linux 6.

  1. Bereid een Linux-server voor. Het wordt dringend aanbevolen een gereserveerde machine of VM-instantie te gebruiken. Voer Redis niet uit onder Windows of Solaris. Als u Blackboard Learn gebruikt met Windows en Solaris, kunt u Redis gebruiken met Linux.
    1. Stel de instelling voor het overcommit-geheugen van de Linux-kernel in op 1 door vm.overcommit_memory=1 toe te voegen aan /etc/sysctl.conf. Start de server opnieuw op of voer de opdracht sysctl.vm.overcommit_memory=1 uit om de wijziging door te voeren. Zie Redis FAQ waarom dit nodig is.

      Redis is een server met één thread. Het programma werkt beter met CPU's met een grote cache dan met verschillende kernen. Op dit moment bieden CPU's van Intel de beste resultaten. In de documentatie van Redis wordt vermeld dat het niet ongebruikelijk is dat een AMD Opteron CPU half zo goed presteert als vergelijkbare CPU's van Intel met een Nehalem-EP, Westmere-EP of Sandy Bridge processor.

    2. De doorvoersnelheid van Redis wordt al ver voor de CPU beperkt door het netwerk. Gebruik daarom snelle en/of meerdere NIC's.
    3. (Optioneel) Redis werkt trager in een VM. Om die reden wordt geadviseerd Redis uit te voeren op een fysiek systeem.
  2. Download en build de meest recente, stabiele versie van Redis.

    wget http://redis.googlecode.com/files/redis-x.x.xx.tar.gz
    tar xzf redis-x.x.xx.tar.gz
    mv redis-x.x.xx /usr/local/redis
    cd /usr/local/redis
    make

  3. Maak het configuratiebestand voor de Redis-server door $REDIS_HOME/redis.conf te kopiëren. Stel de volgende eigenschappen in:

    daemonize yes # Gebruik "no" bij uitvoering onder daemontools.
    pidfile /var/run/redis/redis_6379.pid
    port 6379
    timeout 300 # Inactieve verbindingen vrijgeven (seconden).
    tcp-keepalive 0 # Verbindingen in stand houden bij netwerktools zoals een firewall.
    loglevel notice # Niet al te veel info vastleggen.
    logfile /var/log/redis/redis_6379.log
    databases 1
    #save 900 1 # Snapshots uitschakelen.
    #save 300 10 # Snapshots uitschakelen.
    #save 60 10000 # Snapshots uitschakelen.
    requirepass xxxx # Gebruik minimaal 16 tekens met een mix van kleine letters en hoofdletters
    # tekens, getallen en symbolen. Gebruik geen woorden of
    # zinnen in uw wachtwoord.
    maxclients 100000
    maxmemory xxxx # Zorg ervoor dat Redis geen swap-geheugen gebruikt (bytes).
    maxmemory-policy volatile-lru # Wij gebruiken expire.
    maxmemory-samples 3
    appendonly no
    slowlog-log-slower-than 50000 # Drempel uitvoeringstijd (microseconden).
    slowlog-max-len 128 # Lengte van het slow-log.

  4. Voeg een Redis-basismap toe aan root.

    # Redis
    export REDIS_HOME=/usr/local/redis

  5. Maak een Redis-gebruiker.

    useradd -d /home/redis -s /bin/sh redis
    chown -R redis:redis $REDIS_HOME
    chmod 700 $REDIS_HOME

  6. Bereid het Redis-initialisatiescript voor.

    cp utils/redis_init_script /etc/init.d/redis_6379

  7. Configureer het Redis-initialisatiescript.

    # chkconfig: - 85 15
    # description: Redis is a persistent key-value database
    # processname: redis
    REDISUSER="redis"
    REDISPORT=6379
    EXEC=/usr/local/redis/src/redis-server
    CLIEXEC=/usr/local/redis/src/redis-cli
    PIDFILE=/var/run/redis/redis_6379.pid
    CONF="/usr/local/redis/6379.conf"
    $EXEC $CONF ==change to==> /bin/su - $REDISUSER -c "$EXEC $CONF"

  8. Activeer de Redis-service.

    mkdir /var/run/redis/var/log/redis
    chown redis:adm /var/run/redis /var/log/redis
    sudo chmod 750 /var/log/redis
    cd /etc/init.d
    chkconfig --add redis_6379

  9. Start de Redis-service.

    service redis start

Beveiliging

De Redis-server beveiligen

Er zijn twee manieren om de Redis-server te beveiligen:

  • Het toevoegen van geschikte beveiligingsconfiguraties aan de Redis-toepassing.
  • Het toevoegen van veilige configuraties aan de server waarop Redis wordt uitgevoerd.

Het toevoegen van veilige instellingen aan Redis zorgt ervoor dat de Redis-toepassing intern zo veilig is als maar kan zijn. Veilige configuraties op de server bestaan uit instellingen en configuraties waarmee de server en de Redis-toepassing kunnen worden beveiligd zonder dat hiervoor de Redis-toepassing zelf nodig is. Hieronder worden twee soorten configuraties beschreven.

Veilige Redis-instellingen

De twee belangrijke instellingen voor de Redis-server zelf zijn:

  • Een veilig wachtwoord gebruiken voor Redis.
  • De toegang tot bepaalde opdrachten van Redis blokkeren.

Zie Redis Security voor meer informatie over de beveiligingsconfiguratie die wordt geadviseerd door Redis.

Redis-wachtwoord

De Redis-server is zeer efficiënt bij het opzoeken van opeenvolgende tekenreeksen, wat precies is wat de aanvraag voor het opzoeken van het Redis-wachtwoord inhoudt. Daarnaast heeft alleen de Blackboard-toepassing het Redis-wachtwoord nodig. Gebruikers hoeven het wachtwoord dus niet te onthouden en om die reden moet het wachtwoord veel sterker zijn dan een gewoon wachtwoord. Hoewel u normaal gesproken de richtlijnen van owasp moet volgen voor de lengte en complexiteit van wachtwoorden bij het instellen van de wachtwoordlengte, maar eindgebruikers dit wachtwoord niet hoeven te onthouden, is het niet nodig de conventie te volgen dat het gekozen wachtwoord moet kunnen worden onthouden door gebruikers.

Richtlijn Reden
Gebruik minimaal 16 tekens in plaats van acht Een brute force-aanval zou n tot de achtste macht keer zo veel tijd in beslag nemen als bij een wachtwoord van acht tekens, wat het normale minimum is.
Gebruik een combinatie van kleine letters, hoofdletters, cijfers en symbolen Net als bij gewone wachtwoorden, vermindert een combinatie van kleine letters, hoofdletters, cijfers en symbolen de kans op een succesvolle woordenlijstaanval (dictionary attack) en wordt er complexiteit toegevoegd voor een brute force-aanval omdat alle soorten tekens moeten worden gecontroleerd.
Probeer geen woorden of zinnen te gebruiken in uw wachtwoord Aangezien dit wachtwoord niet hoeft te worden onthouden, kunt u woordenlijstaanvallen volledig uitsluiten door geen woorden of zinnen te gebruiken.

De wachtwoordinstelling zelf moet worden toegevoegd aan het Redis-configuratiebestand. Hiervoor gebruikt u de instructie requirepass op deze manier:

requirepass ^a@$4J0|-|k!4P+f%

Opdrachten van Redis blokkeren

Redis wordt alleen als een cache gebruikt door Blackboard. Dit betekent dat verschillende opdrachten niet worden gebruikt. Sommige van deze opdrachten kunnen echter worden gebruikt door een kwaadwillende gebruiker om denial of service te veroorzaken door gemiste cache-hits, denial of service door geheugengebrek op de server en blootlegging van gegevens doordat kwaadwillende gebruikers de complete set cachegegevens onderscheppen. Redis biedt een interface voor het aanpassen of volledig verwijderen van deze opdrachten. Deze laatste oplossing adviseert Blackboard voor de volgende opdrachten:

Sleutel Reden voor complete verwijdering
APPEND Staat aanpassing van sleutels toe om gemiste cache-hits te veroorzaken
BGSAVE Een opdracht waarmee de gegevensset op schijf wordt opgeslagen, waardoor er gegevens vrij beschikbaar kunnen komen als een gebruiker het bestand onderschept
RENAME Hiermee kan de naam van een sleutel worden gewijzigd, waardoor gemiste cache-hits kunnen worden veroorzaakt
SAVE Zie BGSAVE
SPOP "Hiermee wordt een willekeurig lid verwijderd uit de set"
SREM "Hiermee worden een of meer leden verwijderd uit de set"

U kunt deze opdrachten blokkeren door het volgende toe te voegen aan het configuratiebestand van Redis:

rename-command APPEND ""
rename-command BGSAVE ""
rename-command RENAME ""
rename-command SAVE ""
rename-command SPOP ""
rename-command SREM ""

Door de naam van de opdrachten te wijzigen in een lege tekenreeks, zijn de opdrachten niet meer toegankelijk. Alle nieuwe Redis-opdrachten die worden gemaakt, moeten ook op deze manier worden geblokkeerd omdat deze evenmin door het Building Block worden gebruikt.

Veilige serverconfiguratie

U kunt de server beveiligen waarop Redis wordt uitgevoerd door stappen te ondernemen die ervoor zorgen dat de Redis-server alleen toegankelijk is voor gebruikers die toegang moeten hebben. Daarnaast moet u onbevoegde toegang tot de Redis-toepassing voorkomen via bestands- en netwerkmachtigingen.

Redis uitvoeren zonder de root-context

De gebruikers-root, op Linux-machines, heeft volledige toegang tot alle bestanden in het systeem, ongeacht de ingestelde machtigingen of toegangscontrole. Om die reden is het gevaarlijk de root-gebruiker te gebruiken voor het uitvoeren van toepassingen, aangezien zorgvuldig opgebouwde aanvallen tot gevolg kunnen hebben dat een kwaadwillende gebruiker de account overneemt waaronder de toepassing wordt uitgevoerd. Redis heeft dit toegangsniveau echter helemaal niet nodig en daarom moet u een gebruikersaccount met lagere machtigingen gebruiken, net voldoende om Redis uit te voeren, voor het installeren en uitvoeren van de Redis-toepassing.

Blackboard adviseert deze account uitsluitend te gebruiken voor het uitvoeren van de Redis-server. Geef de account geen machtigingen voor het besturingssysteem of voor andere toepassingen of daemons die op deze server worden uitgevoerd.

Het Redis-configuratiebestand beveiligen

Het wachtwoord dat wordt gebruikt door de Redis-server (zie ook hierboven) wordt als leesbare tekst opgeslagen in het configuratiebestand. Hier kan Blackboard verder geen invloed op uitoefenen omdat dit de manier is waarop Redis op dit moment werkt. Dit betekent wel dat u beperkingen moet instellen voor de gebruikers die toegang hebben tot het bestand. Geef daarom alleen de gebruiker die de Redis-toepassing uitvoert toegang tot het bestand.

Dit kan met de volgende opdracht, waarbij het configuratiebestand van Redis hier de naam redis.conf heeft:

chown 600 redis.conf

Overbodig verkeer naar de Redis-server blokkeren

In een scenario waarin Redis de enige toepassing is die op de Redis-server wordt uitgevoerd, mag de server niet toegankelijk zijn vanaf internet. De server mag alleen in de volgende gevallen bereikbaar zijn:

  • Een beheerder moet taken uitvoeren op de Redis-server
  • Blackboard-communicaties over de Redis-poort

Op deze manier voorkomt u dat onbevoegde gebruikers proberen de Redis-server plat te leggen, onbevoegde opdrachten uit te voeren in Redis, enzovoort. In een scenario waarin de standaardpoort van Redis, 6379, wordt gebruikt, moet u de volgende typen regels toevoegen aan de firewall voor deze server:

Regel Toelichting
Al het verkeer naar en van de server blokkeren Dit moet het standaardgedrag zijn, behalve in het geval van de onderstaande uitzonderingen.
Maak een uitzondering voor loopback-verzoeken De server moet voor zichzelf toegankelijk zijn, al is het alleen maar voor het monitoren van binnenkomende verzoeken voor Redis via redis-cli commandmonitor.
Maak een uitzondering voor verkeer van en naar de Blackboard-servers via uitsluitend de Redis-poort De Blackboard-server moet met Redis kunnen communiceren via poort 6379 en Blackboard moet antwoorden kunnen ontvangen van de Redis-server.
Maak een uitzondering om extern beheer vanaf een specifieke machine mogelijk te maken Beheerders kunnen toegang tot de server nodig hebben om Redis te upgraden, logboeken te raadplegen, de prestaties te monitoren, enzovoort. Tenzij beheerders rechtstreeks toegang hebben tot de machine, moeten ze de server extern kunnen benaderen. SSH-verkeer moet worden beperkt tot één machine, of een kleine groep machines, zodat gewone gebruikers niet via poort 22 met de server kunnen communiceren.

Beheerders moeten ook uitzonderingen definiëren voor omgevingsspecifieke items, zoals vereiste gedeelde bronnen. Deze items verschillen per instelling.

Monitoring van verkeer implementeren

Als er van buitenaf een aanval plaatsvindt op de Redis-server, moet er een bepaalde vorm van inbraakdetectie actief zijn. Hier volgen enkele voorbeelden van items die u kunt controleren om verkeer te markeren als mogelijk kwaadwillend of om het verkeer volledig te blokkeren:

  1. Als een andere machine dan een Blackboard-toepassingsserver of server voor systeembeheer toegang probeert te krijgen tot de Redis-server, moet deze worden gemarkeerd.
  2. Als er een onjuist wachtwoord wordt ingevoerd, moet dit worden gemarkeerd.
  3. Als er vanaf dezelfde locatie te veel verzoeken worden verstuurd naar de Redis-server, markeert u dat verkeer. Het monitoren van typische gebruikspatronen, evenals het speculeren op uitzonderingssituaties (bijvoorbeeld tijdens een toetsweek), kan helpen bij het vaststellen van het aantal verzoeken per minuut dat is te verwachten.

Het implementeren van deze regels voor inbraakdetectie helpt vast te stellen of iemand probeert de Redis-server of -toepassing binnen te dringen.

Building Block-machtigingen

Java-type Naam Acties Waarom is deze machtiging nodig?
persist * *
  • De pagina Instellingen moet permanent beschikbaar zijn en configuratiegegevens laden in de tabel SYSTEM_REGISTRY.
  • Onderhoudt en laadt statistieken van de Redis-server en -cache voor de opgegeven duur naar de Stats-database voor trendanalyse.
java.io.FilePermission 1. BB_HOME/-

2. BB_CONTENT/-

3. "${java.home}/-

1. read, write, delete

2. read, write, delete

3. read

  • Leest eigenschappenbestanden onder de basismap van Blackboard Learn.
  • Slaat een hash-waarde op die uniek is voor een Learn-instantie, die wordt gedeeld door alle Learn-toepassingsservers binnen een cluster. De waarde wordt gebruikt in de sleutel van de Redis-cache om conflicten te voorkomen met gebruik van de Redis-cache door een andere Learn-instantie of andere toepassingen.
  • Ehcache diskoverflow-voorziening
java.lang.reflect.
ReflectPermission
suppressAccessChecks * Wordt gebruikt door het Spring-raamwerk en een raamwerk voor de serialisatie van objectgrafieken, Kryo.
java.lang.
RuntimePermission
* * Wordt gebruikt door verschillende onderdelen van Blackboard Learn, inclusief logboekservices en servicemanagers.
java.net.
SocketPermission
* connect, accept, resolve, listen Verbinding met de Redis-server en gelijkwaardige toepassingsknooppunten van Blackboard Learn.
javax.management.
MBeanServerPermission
* * Voor het doorgeven van cachestatistieken aan MBean.
javax.management.
MBeanPermission
* * Voor het doorgeven van cachestatistieken aan MBean.
attribute user.authinfo get Voor het opvragen van gebruikersrollen voor bewerkingen.