Content
This page is no longer maintained - see this gwdg page instead
goemaxima cluster with kubernetes
Due to a limitation with autoscaling and forwarding POST parameters, each stack version has its own URL. Generally, the format of the URL is stack-maxima.service.rancher.gwdg.de/STACKMAXIMA-VERSION/goemaxima, where STACKMAXIMA-VERSION corresponds to the version of stackmaxima (as seen in the table below).
The goemaxima Server
The goemaxima server is our own, homegrown implementation of the MaximaPool API.
It is written in go and has less startup time and memory utilization than the java implementation.
Internally, it works by forking new maxima processes from an initial mother process instead of starting a new one each time, saving startup time and memory (because the memory is shared between the forked maximas). goemaxima is using precompiled maxima.
It is put into a docker container so that it can be used by kubernetes.
For security, each forked process gets its own user and after execution, every process with a given user is killed.
Also, in the kubernetes cluster outbound internet access is disabled for processes in the container.
It has been tested both on ilias and moodle and seems to work without problems.
goemaxima Cluster GWDG Goettingen
The GWDG Goettingen (https://gwdg.de) offers IT-services for the Univerisity Goettingen and the Max-Planck Society Germany. Further on members and associates of other universities in Lower Saxony, national universities outside of Lower Saxony or other institutions in the aerea of research or education are allowed to use the services by special arrangements. The GWDG offers a goemaxima cluster for universities and schools according to special arrangements. A maximapool instance is not supported on the GWDG cluster.
Matching table ILIAS/Moodle-Version - goemaxima-URL
Here is a table of stack/ilias versions and the corresponding server URLs:
--------------- ---------------------- ------------------- ----------------------------------------------------------
Ilias Version Moodle Stack Version Stackmaxima Build goemaxima
- 4.2.1 2018080600 `stack-maxima.service.rancher.gwdg.de/2018080600/goemaxima`
6-or-7 4.2.2a 2019090200 `stack-maxima.service.rancher.gwdg.de/2019090200/goemaxima`
- 4.3.1 2020042000 `stack-maxima.service.rancher.gwdg.de/2020042000/goemaxima`
- 4.3.2 2020052700 `stack-maxima.service.rancher.gwdg.de/2020052700/goemaxima`
- 4.3.3 2020061000 `stack-maxima.service.rancher.gwdg.de/2020061000/goemaxima`
- 4.3.4 2020070100 `stack-maxima.service.rancher.gwdg.de/2020070100/goemaxima`
- 4.3.6 2020100900 `stack-maxima.service.rancher.gwdg.de/2020100900/goemaxima`
- 4.3.7 2020101501 `stack-maxima.service.rancher.gwdg.de/2020101501/goemaxima`
- 4.3.8 2020120600 `stack-maxima.service.rancher.gwdg.de/2020120600/goemaxima`
7-DEV 4.3.10 2021120900 `stack-maxima.service.rancher.gwdg.de/2021120900/goemaxima`
- 4.3.11 2022060100 `stack-maxima.service.rancher.gwdg.de/2022060100/goemaxima`
- 4.4.0 2022071300 `stack-maxima.service.rancher.gwdg.de/2022071300/goemaxima`
- 4.4.1 2022082900 `stack-maxima.service.rancher.gwdg.de/2022082900/goemaxima`
- 4.4.2 2023010400 `stack-maxima.service.rancher.gwdg.de/2023010400/goemaxima`
- 4.4.3 2023052400 `stack-maxima.service.rancher.gwdg.de/2023052400/goemaxima`
- 4.4.4 2023060500 `stack-maxima.service.rancher.gwdg.de/2023060500/goemaxima`
- 4.4.5 2023072101 `stack-maxima.service.rancher.gwdg.de/2023072101/goemaxima`
--------------- ---------------------- ------------------- ---------------------------------------------------------
Docker Image
The Docker images are available on the docker hub at mathinstitut/goemaxima:[STACKMAXIMA-VERSION]-latest
where [STACKMAXIMA-VERSION]
is replaced with the corresponding stackmaxima version found in the table above. You can run the docker image with
docker run --restart always --tmpfs /tmp -p [HOSTPORT]:8080 mathinstitut/goemaxima:[STACKMAXIMA-VERSION]-latest
where [STACKMAXIMA-VERSION]
is again the version and [HOSTPORT]
is the host and port separated by a colon.
For example, if you were to deploy goemaxima with stackmaxima version 2020070100
on port 80 of host 192.0.2.10
, one would run
docker run --restart always -p 192.0.2.10:80:8080 mathinstitut/goemaxima:2020070100-latest
.
The URL that would be input into stack is then http://192.0.2.10:80/maxima/
(including the trailing slash).
In the docker image, the libraries stats, distrib, descriptive, simplex
are loaded.
Some Prometheus statistics are exported on /metrics
, and some debug information can be logged by setting the environment variable GOEMAXIMA_DEBUG=1
.
Image Source
The source is available at https://github.com/mathinstitut/goemaxima.
Some-Hints
Support
Via work packages: https://projects.academiccloud.de/projects/netzwerk-mathe-digital/work_packages Everybody, logged in at Academic Cloud, can do this. Please adjust yout notifications to get all the messages about your work packages: https://projects.academiccloud.de/my/notifications
Setup-Maxima-Server-Connection
Cluster-not-reachable
Each URL from the table above gives an answer:
> curl http://2017121800.maxima.math.uni-goettingen.de/goemaxima
Hostname: maxima-2017121800-i5zw4y-helmgomaxima-945c89d68-fgvzf, version: 1.1.0
First check this with curl on the command line of your ILIAS- or Moodle-Installation.
If this not work you either has problem with DNS or with a firewall. Port 80 has to be open for requests from your machine.
If it works but not from the setup in ILIAS or Moodle, there is a problem with DNS in php.
Perhaps the user running ILIAS or Moodle can not read /etc/resolv.conf because this name is a link to an other file.