Advanced Techniques Paths, Docker Containers, etc. Grape Server Basics
Advanced TechniquesPaths, Docker Containers, etc.
Grape Server Basics
Paths /data/grape/
config/
config.yml - configuration not relevant for application (docker registry credentials etc.) (used only by grape command)
settings.yml - configuration for proxy/application/sentry (used only by grape command)
sub directories for proxy/sentry/application, will be created by web setup
proxy/docker-compose.yml
sentry/docker-compose.yml
application/docker-compose.yml
data/ - persistent data (database, static, media, …)
setup/ – contains the symlinks current and next which point to the respective installed and to-be-upgraded grape versions
logs/ - logs from all services
bin/
websetup/
docker-compose.yml
some configuration files
/home/grape/.local/bin/grape - “grape” command
• grape user must be in the docker group • /data/grape must belong to grape user • Please don’t change the username
Paths
Containers
Grape Server / VM
Grape Web Setup
HTTP Port 80 → redirect HTTPS HTTPS Port 443 WS Port 443 HTTPS Port 8888 (Web Setup)
Grape Docker Compose Sentry Docker Compose
proxy_nginx
websetup_nginx
websetup_django
websetup_redis
application_nginx
application_grape-runtime
application_elasticsearch
application_postgresql
application_redis-transientapplication_redis-persistentapplication_redis-pubsub
sentry_grapesentry-sentry
sentry_grapesentry-redis
sentry_grapesentry-celery1
sentry_grapesentry-postgresql
sentry_grapesentry-celery-beat
application_nignx-elasticsearch
application_pgbouncer
Docker Compose PackagesDocker Containers
Databases
PostgreSQL
• Organization Data • Memberships • User Data • Channels Metadata (Private
Conversation / Groups and their Memberships)
• everything in grape.example.com/admin
• Messages • Data for Grape Search
Elasticsearch
• Cache • User Online Status • PubSub Channels for Realtime
Event Dispatching
Redis
Application Container
Websocket Service (grape-ws)
Handles websocket connections with gunicorn and gevent. All actions from the core chat like sending/updating/deleting a message as well as opening channels are handled over this service (RPC API).
Managed by Supervisor (http://supervisord.org/)
HTTP Request Response Service (grape-rr)
Handles request/response requests over HTTP like image up/download, delivering the webclient on initial call and the web settings pages.
General Purpose Worker for Asynchronous Operations (chatgrape_celery-worker_{n})
Processes asynchronous tasks like cronjobs, syncing user directory or labeling messages with NLP.
Async Worker for Notifications (worker-notifications_{n})
Processes notifications asynchronously to be closer to realtime and does not get blocked by log running “general purpose” tasks and syncs.
Thanks for watching!