Hello! Just want to share little experience in upgrading Juniper EX4600 virtual-chassis using NSSU (Non-Stop Software Upgrade).
Here is a little checklist that you should go pass thru along with reading official Juniper manuals related to upgrading your VC:
- VC members should be connected in ring topology
- chassis should be configured with
no-split-detection
- enable GRES (Graceful routing engine switchover)
- enable NSR (Non-stop active routing)
- enable NSB (Non-stop brigding)
- VC should be pre-provisioned
Let's go into details...
Ring topology is required so that no member is isolated as a result of another member being rebooted. This topology prevents the Virtual Chassis from splitting during an NSSU.
A two-member Virtual Chassis or mixed Virtual Chassis must have no-split-detection
configured so that the Virtual Chassis or mixed Virtual Chassis does not split when an NSSU upgrades a member.
[edit virtual-chassis]
set no-split-detection
GRES should be enabled to ensure no disruption occurs to the control plane. During the upgrade process, interface, kernel, and routing protocol information is preserved. It can be done under [edit chassis redundancy]
hierarchy level:
[edit chassis redundancy]
set graceful-switchover
NSR should be enabled for the same reason as GRES. Although Juniper manual states that NSB is not required to be enabled, but it is required, or you will receive error message. Both NSB and NSR can be enabled this way:
[edit routing-options]
set nonstop-routing
[edit protocols layer2-control]
set nonstop-brigding
Also recommended to enable VC members automatic config synchronization by adding:
[edit system]
set commit synchronize
Preprovision must be configured so that the linecard role has been explicitly assigned to member switches acting in a linecard role. During an NSSU, the Virtual Chassis and mixed Virtual Chassis members must maintain their roles - the master and backup must maintain their master and backup roles (although mastership will change), and the remaining switches must maintain their linecard roles. You can easily switch from nonprovisioned to preprovisioned mode by changing your configuration in this way:
[edit virtual-chassis]
set preprovisioned
set member 0 serial-number abc123 role routing-engine
set member 1 serial-number def456 role routing-engine
set member 2 serial-number ghi789 role line-card
set member 3 serial-number jkl012 role line-card
Here abc123 and others - are serial numbers of your virtual-chassis members. Also delete mastership priorities if you have them in [edit virtual-chassis]
section, otherwise commit operation will fail as fixed membership priorities is not compatible with preprovisioned mode.
Now you're ready to continue with NSSU by running request system software nonstop-upgrade /path/to/package
. Notice that for upgrading software of non-mixed VC you only need to place new software package on current master RE (often it's placed in /var/tmp).
For more details please refer to official Juniper manual.
Hope this note helped you ;)