Requirements¶
Following is a brief overview of the requirements of Invenio:
- Supported Python versions:
Python 3: v3.6, v3.7 and 3.8.
- Supported databases:
PostgreSQL v9.6+, 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.
- 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:
v5.0, v4.4
- Supported operating systems:
macOS: Newer releases
Linux: Newer distributions such as Ubuntu 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)