MattToegel / IT490

Samples for Systems Integration Class
4 stars 37 forks source link

Resiliency Work #37

Closed cmm-66 closed 2 years ago

cmm-66 commented 2 years ago

image

cmm-66 commented 2 years ago
Assignment: IT490 - Milestone 3 - Resiliency
Student: Christopher Mayer(cmm66)
Generated: 8/8/2022 11:41:23 PM
Grading Link: Grading
Instructions:

For this milestone, as a team you'll be implementing a solution to keep your application running ~99.99% (in theory).


In production lane you should already have 4 VMs (app, db, mq, api).

For this milestone you'll need to create at least 4 more (1 of each VM type).

Depending on your solution (discussed below) you may have an additional VM or so.

Once you have 2 pairs of each VM you'll come up with a solution for load balancing.

Note: You do not need to leave all of the production VMs running 24/7, just long enough to setup the solution and gather the evidence

Goal:

  • If any VM of a pair goes down, the system should detect this and cleanly reroute traffic to the healthy VM
    • If APP A goes down, the user should be routed to APP B without losing their session (i.e., the user shouldn't notice a VM went down and should not have to relog)
    • If MQ A goes down, the remaining VMs should utilize MQ B
    • If DB A goes down, DB B should handle the requests
    • If API A goes down, API B should handle the requests
  • Likely the load balancing solution will balance the load evenly across the options, so it won't just be A or B, it'll be simultaneous and the healthy VM would just take over the connections from the unhealthy one
  •  This will be demonstrated during your final presentation as well

  1. Create a new file called resiliency.md
  2. Create a branch called MS3-Resiliency
  3. Have each team member research and write about some resiliency solution (everyone should contribute here)
  4. Submit the direct link to the resiliency.md file from the MS3-Resiliency branch to github


Grading will be based on the following

  • Thoroughness of the research of multiple solutions
  • Unique solutions explored (i.e., 2+ people shouldn't research the same option/topic on the same team)
  • Working Implementation
  • Thorough yet concise explanation/details on the chosen solution

Deliverable 1: Team member Research (2+ people shouldn't research the same option/topic on the same team)
Status:
Sub-Task 1: Team member 1
Response:

Christopher Mayer
I researched RabbitMQ Clustering for my rabbitMQ server.
I used RabbitMQ and learned
about it after researching Load balancing and after testing a few(nginx and apache)
I found that rabbitMQ would be the best option for sending and receiving
messages.
I learned that it is very easy to set up in comparison to
apache, only needing to change the host file and change the MQ cookie.
Pros:
Easy to set up, easy to test.
Cons: Requires RabbitMQ to set up, probably
does not function well for APP/frontend services because it transfers if the server
is down, not caring about how many messages one server is handling


Sub-Task 2: Team member 2
Response:

(missing)


Sub-Task 3: Team member 3
Response:

(missing)


Sub-Task 4: Team member 4
Response:

(missing)


Sub-Task 5: Team member 5
Response:

(missing)


Sub-Task 6: Team member 6
Response:

(missing)


Deliverable 2: Team solution
Status:
Sub-Task 1: Mention what solution the team decided upon and why
Response:

(missing)


Deliverable 3: Evidence of working implementation
Status:
Sub-Task 1: Show before and after screenshots of the following for app
Caption:

Shows that while rabbitmq-1 is down, when another user sent a request, rabbitmq-2
took the request and sent echo

Sub-Task 2: Show before and after screenshots of the following for db
Missing Image
Caption: (missing)
Sub-Task 3: Show before and after screenshots of the following for api
Missing Image
Caption: (missing)
Sub-Task 4: Show before and after screenshots of the following for mq
Missing Image
Caption: (missing)
Grading Link: Grading