It's been a while since the last post here, and I haven't seen much other discussion on setting up a highly-available WeBWorK configuration in AWS. I recently established a HA deployment at Georgia Tech, and it seems to be working well so far. Here's what it looks like:
- Everything automatically deployed to AWS using Terraform (infrastructure) and Ansible (server configuration)
- WebWork configured in multiple EC2 instances (in separate AZs) behind an Application Load Balancer. The ALB handles SSL and the associated certificates.
- Amazon RDB as the MYSQL instance. Better to have this managed by AWS instead of me.
- Shared EFS filesystem for the EC2 instances.
There is discussion upthread about what to put on the shared file system (i.e., all of /opt/webwork, or selected folders). I settled on ONLY putting the courses and htdocs directories on the shared filesystem -- this seemed to be a happy compromise that seems to avoid inconsistent states across the various servers.
I didn't set up any symbolic links to the shared filesystem. Instead, I simply set $webwork_courses_dir and $webwork_htdocs_dir to their respective shared folders in site.conf.
I wanted to keep log files and temporary files on the individual EC2 instances -- both to maximize performance, and to prevent messy diagnostics if something went wrong on an individual server.
We're a week into Summer semester with this configuration, and so far everything seems to be working fine. Let me know if you spot any potential "gotchas" with this approach.