|Saturday||10/20/2018 at 01:00PM|
Ask all your questions on Piazza. Assign assignment2 tag to your posts.
To keep your AWS credit usage to minimum, please terminate your k8s stack when you are done working on it.
The objective of this assignment is run
redis as service in high availability configuration.
Redis Cluster Specification¶
- Run Redis cluster with 3 Redis servers in master/slave configuration.
- Run 3 Redis Sentinels, one for each Redis server.
- Each redis pod will contain one redis server container and one redis sentinel container.
- Each pod must land on different worker node. No worker node should run more than 1 redis pod.
- Implement TCP liveness probe for all containers.
- Expose redis service so external clients can connect to redis cluster. Make sure that redis cluster is accessible from anywhere on the internet for demo.
- You may use Docker images for redis server and sentinel from Docker hub and build your custom images as needed.
- All Kubernetes object definitions, along with docker, and configuration files you create must be approriately named and committed to your github repository under
- Setup k8s cluster using kops with
1master Node (recommended instance size - t2.micro) and
3worker node (recommended instance size - t2.micro). If
t2.microinstance is too small, you can increase the size of the instance.
Resource Limits for Redis Server & Sentinel Containers¶
- CPU: 100m or 0.1
- Memory: 32MB (start with 32 MB and increase as needed to run the container. This will allow us to run the assignment with smallest possible EC2 instance.)
- Docker image for redis 4.0.11
- High-Availability with Redis Sentinels: Connecting to Redis Master/Slave Sets
- Redis Documentation
- Redis Sentinel
- Redis Sentinel — High Availability
- Redis Command Line Interface
Releases created after due date will be considered late.
- All work for this assignment must be done on assignment2 feature branch and merged to master when you are dev complete.
- GitHub release must be created from the master branch.
- All team member’s branches must be in-sync. Each team member must create a release in their repository.
- All assignments will be delivered using GitHub releases feature. See GitHub documentation for details on how to create a release.
Following guidelines are for information only and are subject to change at my discretion.
- Demo bring up of Redis cluster.
- Execute redis commands against your cluster from your local dev environment. You can do this using redis-cli