Adding a host: the rack check¶
New in the next release
This is on the dev and qa builds now, and in the next release.
"Add one host and you're good for a year" is only true if the host can be plugged in. When the what-if is add a host like its largest, Ferrule checks everything that host needs beyond CPU and memory, learned from the hosts already in the cluster, and says plainly what's short:
⚠ 1 × 10G SFP+ on core-a: 1 free, the last. esx01 uses 1 × 10G SFP+ on core-a (port 2). 1 reserved, so not counted. A free cage needs an optic or DAC: FS SFP-10GSR-85. Set the new port's VLANs like port 2: untagged 10, tagged 20. Free: port 5. ✓ 1 × 1G copper on core-b: 14 free. ✓ 1 × 1G copper for its BMC, on mgmt-sw (Gi1/0/10). 6 free. ✗ UPS rack-ups: 93% → 120%. One more host like esx01 draws about 402 W (its peak, from its BMC). ⚠ PDU rack-a-pdu: 2 free outlets. One more like it needs 2 outlets. ✓ Rack R1: 8 U free. A host like it takes 2 U. ✓ 10.0.10.0/24 (Servers): 233 free. The first free is 10.0.10.22. ✗ vSphere: 16 more cores to license. ? BMC port not known. No Redfish source reads esx02's BMC.
It's modelled on the cluster's largest host, and appears under the what-if table a few seconds after you choose add a host like its largest. It's re-checked each minute while open.
Verdicts¶
| Mark | Means |
|---|---|
| ✓ fits | There's room, with some to spare after |
| ⚠ tight | It fits, but uses the last of something: the last free port of that kind, the last outlets, a UPS past 80% or under 10 minutes of runtime, room in the rack for just one |
| ✗ blocked | It doesn't fit: no free port of the right kind on a switch the host needs, a UPS or PDU over its rating, a full rack or subnet, too few licenses |
| ? unknown | Ferrule couldn't tell, and says why. It never guesses |
The checks¶
Switch ports¶
For each switch the existing host uses, and each kind of port (copper, or a cage type), the new host needs as many free ports on that switch as the existing host uses there. Two links to two switches means one free on each, not two anywhere: that redundancy is the point.
A port is free when it's:
- down (no link),
- enabled,
- not an uplink,
- not reserved (see below),
- and of the same kind: copper for copper; for a cage, one that takes the speed. A 10G link needs an SFP+, SFP28 or QSFP cage; an SFP (1G) cage doesn't count.
The line names the ports the existing host uses, how many are free and which (the first six, and how many more).
Optics. A free cage always needs an optic or DAC; Ferrule can't see a drawer of spares. The line names the module the existing host's port has, read from the switch (UniFi reports the module; SNMP switches don't).
VLANs. Where the switch reports them, the line compares the free port's VLANs with the existing port's, and if they differ says what to set: "Set the new port's VLANs like port 2: untagged 10, tagged 20."
Where hosts plug in¶
Ferrule learns which switch ports a host uses from:
- The host's own addresses in the switches' MAC tables: vCenter's physical NICs and VMkernel ports, read in the inventory.
- The addresses of the VMs running on it. A vSwitch's uplinks often never send from their own address, but every VM's traffic arrives on them, so the host is found through its VMs.
- The UniFi client list, by MAC, and for Proxmox VE nodes by their address (Proxmox VE doesn't report its NICs' MACs).
- LLDP, where the switch reports a neighbour whose name is the host's.
A port is never taken as a host's when it:
- carries addresses from more than one host (it's a trunk);
- carries another switch's or access point's address;
- has an LLDP neighbour that isn't the host (it leads somewhere else);
- or is marked an uplink.
A host link Ferrule can't place shows as ?: "esx01 has 1 more link up Ferrule can't place." The usual reasons, and fixes:
| Why | Fix |
|---|---|
| The NIC carries no VM and sends nothing from its own address (a standby uplink, a vMotion-only NIC) | Turn on LLDP on the host. On a vSphere Distributed Switch: Configure → Properties → Discovery protocol: LLDP, operation Both |
| It's on a switch Ferrule doesn't read | Add the switch as an SNMP switch |
| The switch doesn't expose its MAC table | SNMP: it needs BRIDGE-MIB or Q-BRIDGE-MIB. Most managed switches have them |
The MAC tables are read every ten minutes, so a change takes up to ten minutes to show.
The BMC's port¶
The out-of-band port (iDRAC, iLO, XCC), found from the BMC's own MAC, read over Redfish. It needs a free port of the same kind on the same switch.
A Redfish server is matched to a hypervisor host by serial number, then by host name (the part before the first dot).
UPS¶
The new host's draw is the existing host's peak over the BMC's own interval (an hour, mostly), else its average, else its draw now, all from Redfish. Against the UPS that feeds the rack:
- load now and after one more host, against its rated watts (or, where the UPS doesn't report its rating, worked out from its load);
- runtime, which falls roughly in proportion to the load.
Past 100% is blocked; past 80%, or under 10 minutes of runtime after, is tight.
Which UPS: the one set for the host's rack on Settings → Racks. If there are no racks and Ferrule reads exactly one UPS, it uses that one and says it assumed it. With two or more and no rack, it asks you to set one.
PDU¶
The PDU whose outlets are named for the host (an outlet called "esx01 PSU1" belongs to esx01). It needs as many free outlets as the host has power supplies (from Redfish; else as many as are named for it), and its draw after one more host against the PDU's rating. Past 95% of the rating is blocked, past 80% tight.
A free outlet is one drawing nothing, which needs a PDU that meters each outlet. See PDUs.
Rack units¶
From NetBox where connected: the rack holding the host, its free units, and the host's own height from its device type. Otherwise from the racks on Settings: the rack that holds the host, its free units, and the units you said a new host takes. Room for only one more is tight.
Addresses¶
From phpIPAM or NetBox: the subnet each of the host's addresses is in (management, vMotion…) and its BMC's, how many addresses are free, and the first free one. A full subnet is blocked; two or fewer free is tight.
Licenses¶
For vCenter clusters: the vSphere licenses' spare cores or CPUs against what a host like the largest needs, under VMware's rules:
| License counted per | One more host needs |
|---|---|
| Core | Each CPU's cores, at least 16 a CPU |
| CPU | One per CPU for each 32 cores |
So a host of two 12-core CPUs needs 32 cores of a per-core license. Enough for only one more host is tight. The evaluation license is left out. Reading licenses needs the Licenses privilege (see vCenter).
Reserved ports¶
Some free ports aren't free: the uplink you're about to patch, the port kept for a client. Mark them, and capacity planning never counts them.
- Sign in as an admin. Reserving is part of capacity planning, so it needs a license.
- On the LAN tab, open the switch and click the port.
- In the port's panel, write what it's kept for and click Reserve this port.
After the next poll the port has a dashed outline on the faceplate, and its tooltip and panel say what it's reserved for, by whom and when. Update changes the note; Free it releases it. Each change is in the audit log.
Reservations are kept in the settings store, so they're in its export and survive updates. They work on UniFi and SNMP switches alike.
Racks¶
Ferrule can't see rack units or which UPS feeds a rack. Tell it, on Settings → Capacity planning → Racks, or connect NetBox. See Settings.
When it's mostly "?"¶
That's normal on day one. In order of how much each adds:
- Run an inventory (Take inventory now), so it knows each host's NICs.
- Make sure the switches your hosts plug into are read: UniFi, or an SNMP slot.
- Add Redfish for the BMCs: power draw and the BMC's port.
- Set your racks on Settings, with their UPS.
- Connect phpIPAM or NetBox for addresses (and NetBox for racks).
- Give vCenter's account the Licenses privilege.