User Tools

Site Tools


image_cloud

Image Cloud

HOSTS & PORTS

new version Corpex:
ic00: image-cloud.picalike.corpex-kunden.de:5000

connection to the database:

psql "postgresql://image_cloud:Q%25c%21rqHLiszD%232PpS6geZ2Y%5Et5@image-cloud.picalike.corpex-kunden.de:5436/image_cloud"

[Password escaped urllib.parse.quote]

All image cloud nodes (deploy also to those hosts):
ic00: image-cloud.picalike.corpex-kunden.de
ic01: v220220762212195282.goodsrv.de
ic02: v220220762212195284.supersrv.de
ic03: v220220762212195283.ultrasrv.de

Old Netcup:
37.221.193.171 v22019086221294614.goodsrv.de (backup node data, ic0x)
Unused:
188.68.50.113 v22019086221295244.supersrv.de (given to marcus and wellington for experiments)
46.38.233.37 v22019086221295243.yourvserver.n_e_t (DO NOT USE DNS NAME!!! DNS funktioniert nicht!!!)

Load Balancer: FIXME: unused
image-cloud.lb.int.picalike.corpex-kunden.de (hier wird port 80 an port 5000 weitergeleitet)

TCP Ports: 5000

Authentication / Token

Since the Image cloud is used from outside corpex from now on, we use a token to ensure some level of security. Compare the projects README.

DEPLOYMENT

The build_and_deploy.sh script only works with ssh aliases to resolve the actual host name,

build_and_deploy.sh ic00

those ic0{0,1,2,3} must be added to the ssh config to work.

Furthermore, the deployer needs to have SSH access to the netcup machines.

ENDPOINTS

  • /get_image
  • /get_thumbnail
  • /delete_image (nur cloud01)
  • /fire_and_forget
  • /alternative_clouds

V4 Cloud?

inzwischen auf Python V3 migriert

Starten

nohup /home/picalike/venv_image_cloud/bin/uwsgi --ini /mnt/cloud/image_cloud/image_cloud.ini &> /mnt/storage/var/log/imageCloud.log &  # cloud01

git

$ git clone ssh://picalike@sg01.picalike.corpex-kunden.de/home/picalike/repositories/rakete/image_cloud.git

Konfigurationsdatein

  • /mnt/storage/var/etc/image_cloud/image_cloud.ini
  • /mnt/storage/var/etc/image_cloud/max_downloads.json

Ablageorte der Daten

Cloud01

image_storage: /mnt/cloud/images/ (siehe image_cloud.ini)

sqlite_db: /mnt/cloud/icdb.sql (siehe image_cloud.ini)

log_file: /mnt/storage/var/log.imageCloud.log (siehe image_cloud.ini)

Netcup

image_storage: /home/picalike/pg_ic_data

sqlite_db /home/picalike/data/icdb.db

log_file: ?

check clone requests backlog

psql -c “select count(*) from clone_requests;” “postgresql:image_cloud:Q%25c%21rqHLiszD%232PpS6geZ2Y%5Et5@image-cloud.picalike.corpex-kunden.de:5436/image_cloud” ; for host in ic01 ic02 ic03 ; do ssh $host 'psql -c “select count(*) from clone_requests;” “postgresql:image_cloud:Q%25c%21rqHLiszD%232PpS6geZ2Y%5Et5@localhost:5436/image_cloud”' ; done ; date :!: i have no idea how to format this properly

Experiments / Results / Knowledge Base

2020-06-17: Image Cloud Remove Duplicates

Cloud01 is close to its memory limit, so maybe checking for duplicate images (with different urls) and deleting them could be helpful.

Maybe Hashing?

Hackathon-Result: the result of the hackathon was, that deduplication by md5 hash will not save a lot of space (<1%)

Beschreibung der Komponenten

ic_frontend

Stellt get_image und fire_and_forget bereit.

get_image

Nimmt per GET eine Url entgegen und liefert das Bild zurück. Cache wenn möglich, Download wenn nötig.

http://cloud01.picalike.corpex-kunden.de:5000/get_image?url=<url>

Beispiel:

http://cloud01.picalike.corpex-kunden.de:5000/get_image?url=https%3A%2F%2Fs-media-cache-ak0.pinimg.com%2Foriginals%2F91%2Fca%2Ffc%2F91cafceef8204c3ce8375f4fde34a0e5.jpg

Weitere Parameter:

  • no_image; default=false, wenn true wird kein Bild zurückgegeben (nur Download wenn nötig)
  • keep_aspect_ratio; default=true
  • resize_width, resize_height; bei keep_aspect_ratio=true wird bei bedarf einer der Werte angepasst, Bild nicht größer als angegeben
  • force_to_size; default=false, Bild wird mittig auf weißer Fläche der Größe resize_<width,height> eingesetzt
  • format_when_resize; default=jpeg (wenn nicht anders in ini konfiguriert), bei resize wird das Bild neu geschrieben, z.B. als png, jpeg, bmp, … (das was pillow schreiben kann)
  • use_alternativ_clouds; default=false, falls konfiguriert in der ini, werden vor dem Download die alternativen Clouds angefragt
  • only_send_if_local; default=false, sendet das Bild nur, wenn es lokal vorhanden ist, um Endlosschleifen bei alternativen zu verhindern.

Beispiele:

http://cloud01.picalike.corpex-kunden.de:5000/get_image?url=https%3A%2F%2Fs-media-cache-ak0.pinimg.com%2Foriginals%2F91%2Fca%2Ffc%2F91cafceef8204c3ce8375f4fde34a0e5.jpg&resize_width=100&resize_height=100&force_to_size=true
http://cloud01.picalike.corpex-kunden.de:5000/get_image?url=https%3A%2F%2Fs-media-cache-ak0.pinimg.com%2Foriginals%2F91%2Fca%2Ffc%2F91cafceef8204c3ce8375f4fde34a0e5.jpg&resize_width=100&resize_height=100&keep_aspect_ratio=false

fire_and_forget

Übergebe via POST eine json-Datei der Form:

{"urls": [<url>, ...]}

Die Urls der Liste werden in den Cache geladen.

Beispiel:

curl --data-binary @<url_file>.json -H "Content-type: application/json" "http://cloud01.picalike.corpex-kunden.de:5500/fire_and_forget"

ic_backend

Schreibt meta-Daten zum Bild in eine sqlite_db. Angebunden an ic_frontend:get_image via zeroMQ.

faf_fan

Managed den asyncronen Voratsdownload für ic_frontend:fire_and_forget. Via max_downloads.json kann je Domain ein Maximum für parallele Downloads angegeben werden.

faf_worker

Ruft ic_frontend:get_image auf und verwirft das Bild, damit es für eine zukünfige Anfrage bereits im Cache ist.

fw_worker

Speichert das Bild auf Platte ab. Es wird eine Multipart-Message per ZeroMQ geschickt: [path, fname, file content]

iproxy.php

Visualytics/OSA is using iproxy.php to access the image cloud. It used to have its own caching layer

Visualytics iproxy.php kann auf web02 gefunden werden. Images are cached under /mnt/storage/var/www/thumbnails … image file can be found with echo -n “$size$url” | md5sum. For size we found that the values 200 and 250 were used.

OSA iproxy.php kann auf osa.picalike.corpex-kunden.de gefunden werden.

TAGS

iproxy iproxy.php image cloud auth token backup balancer netcup

image_cloud.txt · Last modified: 2024/04/11 14:23 by 127.0.0.1