1. ensure you have 3gb disk space free on the system drive of all nodes
2. ensure you are logged on with local admin privileges
*edit* and the account you are using to run the patch (normally your own) has logged onto all nodes previously to create a user profile.
3. take system database backups. I stop the SQL cluster resource copy the system database to a subfolder and restart the cluster resource in case everything goes bang. As copying the system DB from a subfolder is a lot less work than trying to restore system databases from backups using DAC.
4. rename sa account back to sa if it has been renamed KB955706
5. if the distribution db logs have been moved, put them back in the default location KB970892
6. you might need to install Visual Studio 2005 SP1 on all nodes first depending on what components you have installed. Some people say this is a prerequisite but I am not entirely sure.
7. Apply service pack on active node
*edit* there must be no one logged onto the passive node when the active node is being patched or the installer hangs.
8. Apply service pack on passive node
9. Restart each node of the cluster and test SQL works fine on all nodes using client application.
10. run backups of system databases and also run a tlog backup on each node to test SSIS.
11. check patch didn’t cause “Named Instances on Windows Cluster changed from Mixed Mode to Windows only after reboot randomly” http://connect.microsoft.com/SQL/feedback/ViewFeedback.aspx?FeedbackID=480487
Further notes at http://social.technet.microsoft.com/wiki/contents/articles/microsoft-sql-server-2005-sp4-release-notes.aspx and http://download.microsoft.com/download/B/7/3/B73AFEF4-1A6C-42E6-B5A8-CBF990687A9E/ReadmeSQL2005SP4.htm
If there are problems consult “Failover Cluster Troubleshooting” http://msdn.microsoft.com/en-us/library/ms189117(v=SQL.90).aspx
Not that you would do it during a service pack but make sure the service account does not get changed on a cluster when the SQL resource is down or offline on any nodes. I have had this cause issues like SQL Agent only running on one node. http://msdn.microsoft.com/en-us/library/ms178061(SQL.90).aspx