Requirements

Following is a brief overview of the requirements of Invenio:

  • Supported Python versions:
    • Python 3: v3.6 and v3.7.
  • Supported databases:
    • PostgreSQL v9.4+, MySQL 5.6+ or SQLite (for testing).
  • Supported search engines:
    • Elasticsearch v6 or v7.
  • Supported memory caches:
    • Redis or Memcache.
  • Supported message queues:
    • RabbitMQ, Redis or Amazon SQS (untested).
  • Supported storage protocols:
    • Local, S3, WebDAV, XRootD and many more.
  • Supported WSGI servers:
    • Gunicorn
    • uWSGI
    • mod_wsgi
  • Supported Flask versions:
    • v1.0.4+
  • Supported Celery versions:
    • v4.0, 4.1, 4.2
    • v3.1
  • Supported operating systems:
    • macOS: Newer releases.
    • Linux: Newer distributions such as Ubuntu 16/18 or CentOS 7.

System requirements

Invenio can run in both Docker, virtual machines and physical machines. Invenio can run on a single machine or a cluster of 100s of machines. It all depends on exactly how much data you are handling and your performance requirements.

Following is an estimate of a small, medium and large installation of Invenio. The purpose is only to provide a very rough idea about how an Invenio installation could look like.

Small installation:

  • Web/app/background servers and Redis: 1 node
  • Database: 1 node
  • Elasticsearch: 1 node

Medium installation:

  • Load balancer: 1 node
  • Web/app servers and background workers: 2 nodes
  • Database: 1 node
  • Elasticsearch: 3 nodes
  • Redis/RabbitMQ: 1 node

Large installation:

  • Load balancer: 2 node (with DNS load balancing)
  • Web/app servers: 3+ nodes
  • Background workers: 3+ nodes
  • Database: 2 nodes (master/slave)
  • Elasticsearch: 5 nodes (3 data, 2 clients)
  • Redis: 3 nodes (HA setup)
  • RabbitMQ: 2 nodes (HA setup)