A single-instance application is an application that is/was not designed to run more than one copy (or instance) on any cluster member at a time. This is due to lack of synchronization built into the application. As stated above in the introduction, an application that writes to a file without coordinating access to the file must be a single-instance application, because running more than one copy of the application at a time would cause unpredictable results (usually data corruption).
A simple example of this scenario can be illustrated using the cat (1) command to write to a file on both members of our two-member cluster at the exact same time.
member1 | member2 |
# cat > /usr/aRandomFile yadda yadda yadda ^D | # cat > /usr/aRandomFile la dee da ^D |
When you type out the file after the writes complete, however, the result is not what you might expect.
# cat /usr/aRandomFile la dee da a yadda
This is not a good thing.
A single-instance application is not very highly available either – also not a good thing. So, we need a way to take our single-instance applications and make them highly available – precisely what CAA is designed to do. CAA will allow us to take our single-instance application and make it a highly available single-instance application.
What about multi-instance applications? Can we use CAA with multi-instance applications?