I was doing some research about open EDX because there’s a cultural organization here in Brazil that wants to establish an open EDX countrywide and we are looking for the best infrastructure for that. This organization already uses AWS as their cloud provider and we want to keep it that way.
For what I have seen until now, the best way to deploy a scalable Open EDX would be to segragate the databases and having an autoscaling group for each service (xserver, commomcluster, xqueue, certificates, insights and analytics-api).
But I couldn’t find any step by step for this kind of configuration. Have anyone here made this before?
I also have some considerations about:
Using MongoDB - The only way to use mongo on AWS is having it installed on a EC2 instance, but that doesn’t allow me to use an multi-az. Would it be possible to use dynamoDB instead?
rabbitqn - AWS has SQS, could it be used instead?
If anyone could help me with this… I thank you all a lot!
That documentation is quite old and points to nonexistent files. Those YAML files are actually the Ansible playbooks you’ll need to run to deploy each service.
What you need is to run the playbook to deploy the services into a pristine VM and turn that into an image for your autoscaling group.
I think it is far from the best way to do it, but now it works! My steps were:
Install Open EDX in a single instance
take mysql dump to a RDS and mongodb dump to a ec2
change the server endpoint in cms.auth.json and lms.auth.json
Now, I wonder how can I take rabbitmq to annother instance? Where do I change the endpoint?
And where EDX saves files, like coursecards? I could point to an S3 bucket, right?
You can make sure of Ansible extra variables to deploy Open edX already pointing to separate servers, but if it works it works
You can find these settings in /edx/etc/lms.yml for the LMS. You’ll also find YAML config files for the other services there. Remember that these are the de-facto configuration files from here on, as the JSON ones have been deprecated and already removed in master. The settings you’ll be looking for are: