Nodes in a cluster can be upgraded independently of other nodes in the cluster. These upgrades include:
Product versions
Application versions
Operating system versions
The upgrade functionality ensures that a cluster never has to be completely brought down for any upgrades.
All nodes in a cluster can be at different product versions. Different product versions are detected when a node joins a cluster and any required protocol negotiation is done automatically at that time. This allows product versions to be upgraded on each node independently.
Different application versions can also be running on each node in a cluster. Application differences between two nodes are detected, and the objects are made compatible at runtime, either transparently, or by application specific code to resolve the inconsistencies. This allows application versions to be upgraded on each node independently.
All nodes in a cluster can use different operating system versions. This allows operating system version upgrades to be done on each node independently.