Server Setup

This guide walks you through a procedure for serversSetup for on-prem deployments. Every deployment on-site should follow this requirements for the physical servers that will run HyperCX.

Minimum hardware requisites for physical server

  • CPU: 2x 6 core processors
  • Memory RAM: 128GB
  • Storage: Direct-attached storage (DAS).
    • OS: Need a minimum of (2) drives 480GB or bigger (SSD or NVMe are preferred), RAID1 mode (hardware controller or Software controller).
    • Local: Requires at least 2 drives 980GB or bigger (SSD or NVMe are preferred). The modalities for this storage solutions are RAID0 for each disk if the storage controller does not allow HBA/passthrough mode.
    • SDS: Requires at least 1 drive 980GB or bigger (SSD or NVMe are preferred). It is required a minimum of 3 servers with this amount of disks to create the desired replica level 3.

Upgrade Firmware

To ensure optimal performance and reliability and the absence of bugs, it is advised to visit the official website to check whether the firmware version of the current computer is the latest one. If not, it is advised to upgrade it to the latest one. Server firmware includes BIOS, BMC, and CPLD.

Optimal Configuration of BIOS

For the application to all scenarios, various factors will be considered for the general BIOS default configura-tion. If the optimal performance is required, it is advised to provide the following configuration.

CPU Hardware Prefetcher

BIOS Configuration OptionRecommended ValueDescription
Hardware PrefetcherEnabledSpecifies whether to enable the hardware prefetching function. If enabled, the CPU prefetches instructions or data from memory to the L2 cache before processing them. This helps reduce memory access time and eliminate potential bottlenecks, improving system efficiency.
Adjacent Cache Line PrefetchEnabledSpecifies whether to enable the adjacent cache line prefetching function. If enabled, the computer intelligently identifies and prefetches data adjacent to the data being accessed, helping accelerate data access.
DCU Streamer PrefetcherEnabledOnce enabled, the DCU streamer prefetcher prefetches data for the CPU to speed up data access.
DCU IP PrefetcherEnabledSpecifies whether to enable the Data Cache Unit (DCU) IP prefetcher. This function decides whether to prefetch data based on historical access patterns to speed up data access.

Also, server needs to be configured in HDD passthrough (HBA mode) and be bootable from HDD/SSD or AHCI mode for on-board controller config.

Hyper-Threading (HT) Technology

It is generally advised by Intel® not to disable HT. Intel® HT improves the overall system throughput by increas-ing the number of CPU cores. For multi-thread applications, it is advised to enable HT, therefore enhancing CPU usage and overall performance. However, for a single thread, HT will degrade its performance. Therefore, for some applications sensitive to delay and with not high concurrency, it is advised to disable HT. Moreover, some applications or system bugs limit the total number of CPU cores, and it is advised to disable HT to reduce the number.

BIOS Configuration OptionRecommended ValueDescription
Intel(R) HT TechnologyEnabledSpecifies whether to enable Intel® HT technology.

Lockstep Mode

The Lockstep mode carries out a higher-level check for the memory, improving the system reliability, but low-ering the bandwidth and delay of memory access. It has high real-time requirements, and is not applicable to service scenarios with high throughput. For such scenarios, there are sound protection mechanisms, from sys-tem to software, and to solutions. Therefore, it is advised to disable the Lockstep mode.

BIOS Configuration OptionRecommended ValueDescription
LockstepDisableSpecifies whether to enable the lockstep mode of memory.

EIST and Turbo Boost

EIST is an intelligent frequency control technology of Intel® which automatically adjusts the voltage and fre-quency of processors based on the system workload to reduce power consumption and heat productivity. The Turbo Boost Technology of Intel®, or commonly known as automatic overclocking technology, is mainly used to improve the frequency of processors and maximize the performance of processors. The latest CPU supports the Turbo Boost which is not dependent on OS and features single core.

BIOS Configuration OptionRecommended ValueDescription
EIST (P-states)EnableSpecifies whether to enable intelligent frequency adjustment.
Turbo ModeEnableSpecifies whether to enable the Dynamic Acceleration Technology of Turbo Boost.

NUMA Technology

NUMA is short for Non-uniform Memory Access architecture, that is, the Non-uniform Memory is concept in-troduced from the multiprocessor system. In the conventional single-processor system, the time during which the processor accesses external memories is the same. In the multiprocessor system, however, each processor has its own memory. When a processor accesses the memory of another processor, the access time differs from time during which it accesses its own memory. The efficiency of accessing the local memory is higher than that of accessing farther memories.

The Xeon CPUs of Intel® are designed based on the NUMA architecture. When it is enabled, the OS will identify the NUMA architecture of hardware to optimize applications and improve the processing efficiency of applica-tions. It is advised to enable NUMA for computers with more than 2 sockets or Virtualization Hosts.

BIOS Configuration OptionRecommended ValueDescription
NUMA SupportEnableSpecifies whether to enable the NUMA feature.

Hardware Virtualization

To boost the virtualization performance, Intel® provides CPU hardware virtualization features. If a server does not use virtualization, it is advised to disable all virtualization features, preventing additional system overheads, improving the performance, and reducing the energy consumption.

IOS Configuration OptionRecommended ValueDescription
VT-xEnableSpecifies whether to enable the CPU Virtualization Technology.
SR-IOV SupportEnable (only in those systems that will use the GPU or network virtualization)Supports virtualization I/O.
VT-xEnableSpecifies whether to enable the CPU Virtualization Technology.

Energy Consumption Management

The CPU dynamic energy management technology (DEMT) is used to reduce the server power consumption. The server power consumption can be reduced to a certain extent by selecting different power management policies if the system is idle. Lower power consumption means slower CPU wake-up and greater impact on the performance.

It is advised to disable the C-States of CPU to prevent delay increase and performance reduction due to the switch between different states. Keep that all CPU cores are operating.

BIOS Configuration OptionRecommended ValueDescription
Package C State limitC0/C1 stateSets the limit of the CPU C State.
CPU C3 reportDisableEnables or disables the CPU C3 report function.
CPU C6 reportDisableEnables or disables the CPU C6 report function.
Enhanced Halt State (C1E)Disable-

BIOS configuration recommendations for servers in a Dell EMC Solutions for HyperCX HCI

BIOS SectionBIOS TokenPE Default ValueHyperCX ValuePlatform
Processor SettingsVirtualization TechnologyEnabledEnabledR630, R620, R740xd
Processor Settingsx2APIC ModeEnabledEnabledR630, R620, R740xd
Integrated DevicesSR-IOV Global EnableDisabledEnabledR630, R640, R740xd (Only for required Clusters)
System Profile SettingsSystems ProfilePerformance Per WATT (DAPC)PerformanceR650, R640, R40xd
Systems SecurityTPM SecurityOffOnR650, R750, R640, R740xd
Systems SecurityAC Power recoveryNAOnR650, R750, R640, R740xd
Systems SecurityAC Power Recovery DelayNARandomR650, R750, R640, R740xd, R630, R620

Configuration recommendations for servers with intel-based BIOS for HyperCX HCI

BIOS ItemRecommended Value
Hyper-Threading[ALL]Enabled
Monitor/MwaitDisabled
VMXEnabled
PCIe SR-IOVEnabled
Intel VT for Direct I/O (VT-d)Enabled
Interrupt RemappingEnabled
PCI 64-Bit Resource AllocationEnabled
Hardware PrefetcherEnabled
Adjacent Cache PrefetchEnabled
DCU Streamer PrefetcherEnabled
DCU IP PrefetcherEnabled

BIOS configuration recommendations for servers in a HPE Solutions for HyperCX HCI

For HPE Proliant Gen10/Gen10plus generation

This gen has a predefined workload profile to do the whole configuration. The workload is called “Virtualization: Static High Performance”.

For HPE Proliant G9/G8 generation

BIOS SectionBIOS TokenHyperCX Value
Power managementPower ProfileCustom
Power managementPower RegulatorOS Control Mode
Power managementMinimum Processor Idle Power Core C-StateNo C-State
Power managementMinimum Processor Idle Power Package C-StateNo Package State
Power managementIntel QPI Link Power ManagementDisabled
Power managementIntel QPI Link FrequencyAuto
Power managementEnergy/Performance BiasMaximum Performance
Power managementMaximum Memory Bus FrequencyAuto
Power managementChannel InterleavingEnabled
Power managementMaximum PCI Express SpeedMaximum Supported
Power managementDynamic Power Saving Mode ResponseFast
Power managementCollaborative Power ControlEnabled
Power managementIntel DMI Link FrequencyAuto
Performance OptionsIntel(R) Turbo Boost TechnologyEnabled
Performance OptionsACPI SLITEnabled
Performance OptionsNode interleavingDisabled
Performance OptionsIntel NIC DMA ChannelsEnabled
Performance OptionsHW PrefetcherEnabled
Performance OptionsAdjacent Sector PrefetchEnabled
Performance OptionsDCU Stream PrefetcherEnabled
Performance OptionsDCU IP PrefetcherEnabled
Performance OptionsQPI Snoop ConfigurationHome Snoop
Performance OptionsQPI bandwidth Optimization (RTID)Balanced
Performance OptionsMemory Proximity Reporting for I/OEnabled
Performance OptionsI/O Non-posted PrefetchingEnabled
Performance OptionsNUMA Group Size OptimizationClustered
Performance OptionsIntel Performance Monitoring SupportDisabled
System OptionsIntel Hyper-ThreadingEnabled
System OptionsProcessor Core Disabled0
System OptionsProcessor x2APIC SupportEnabled
System OptionsVirtualization TechnologyEnabled
System OptionsIntel(R) VT-dEnabled
System OptionsSR-IOVEnabled
System OptionsExtended Memory TestEnabled
System OptionsMemory Fast TrainingDisabled
System OptionsAdvanced Memory OperationAdvanced ECC Support
Availability ConfigASR StatusDisabled

For HP Proliant G6/G7 genaration

BIOS SectionBIOS TokenHyperCX Value
Power managementPower ProfileMaximum Performance
Power managementPower RegulatorOS Control Mode
Availability ConfigASR StatusDisabled
Availability ConfigThermal ShutdownEnabled
System OptionsNo-Execute page-ProtectionEnabled
System OptionsNo-Execute page-ProtectionEnabled

Node OS installation

This documentation describes how should be installed the Operative System (OS) Ubuntu Server 22.04 ISO. Follow the right indications to make the OS ready for the automated deployment.

OS curtin installation

Start the installation of the Ubuntu Server:

><

Set the default language to English:

><

Same for keyboard layaout:

><

Select Ubuntu Server for installation:

><

Continue without configure the network:

><

Do not configure a proxy:

><

Leave the default mirror for Ubuntu:

><

Configure a custom storage layout:

><

The configuration must use a Soft-RAID 1, with the specified partitions and FS, but with the bootloader outside of the Soft-RAID.

Select the disk that will be used as primary boot device:

><

Select the disk that will be used as secondary boot device:

><

After previous actions, the configuration must looks like follow:

><

For each device (those for the OS), create a new partition (DO NOT FORMAT THE PARTITION!):

  • swap: 24G
  • /var/log: 100G
  • /: The rest of the available space.

After previous actions, the configuration must looks like follow:

><

Create a Soft-RAID for the created swap partition:

><

Create a Soft-RAID for the created /var/log partition:

><

Create a Soft-RAID for the created / partition:

><

The following screenshot shows how is going the configuration:

><

Format md0 device for swap (DO NOT PARTITIONATE THE SOFTRAID DEVICE!):

><

Format md1 device for ext4 and mount it on /var/log:

><

Format md2 device for ext4 and mount it on /:

><

Select md0 device for swap.

The custom storage layout should look like follow, after all previous configurations:

><

Confirm the configuration in order to continue with the installation:

><

Complete de profile setup, adapting the hostname to the deployment:

><

Skip Ubuntu Pro:

><

Enable the installation of OpenSSH server:

><

As the server is still not connected to the network, it wont e able to reach the snap store. Continue without updating:

><

Reboot when the installation finish:

><

Once the system is up, the lsblk command output should look like follow:

><

Set the right hostname for the deployment:

CLUSTER_NAME=ECASA-NC-CLOUD
hostnamectl set-hostname ${CLUSTER_NAME}-node1
sed -i "s#127.0.1.1.*#127.0.1.1 $HOSTNAME ${CLUSTER_NAME}-node1#" /etc/hosts

Node OS bootable on both devices

From previous screenshot we can appreciate that OS drivers sda and sdb are being used for the Soft-RAID and the primary ESP is being used by sdb.

At this point so far, the server has a redundant setup. The Soft-RAID 1 of each partition could be checked as follow:

For md0 (where is the swap)

mdadm --detail /dev/md0
><

For md1 (where is the /var/log)

mdadm --detail /dev/md1
><

For md2 (where is the /)

mdadm --detail /dev/md2
><

Check the Soft-RAID status:

cat /proc/mdstat
><

Once finished the resyncing, it should look like follow:

><

Beside of this, the custom storage layout is not reeady yet, as the bootloader is only enabled for the primary disk. While having this redundancy is fine, there is one potential lurking issue. If one drive is removed, the server might be unable to boot the system. So let’s make sure the ESP is the same on both drives, and that the system will try to boot from either of the hard drives and not just one.

The lsblk command output should look like follow:

><

Check which disk is currently using the bootloader:

mount | grep boot
><

In this case, the output shows that the boot partition is mounted on sdb1 (same conclusion lsbk output).

OS drives sda and sdb are being used for the Soft-RAID and the primary ESP is being used by partition sdb1. Lets define the following variables:

part_boot_on=sdb1
part_boot_backup=sda1

Check for the PARTUUID for those partitions:

blkid | egrep "${part_boot_on}|${part_boot_backup}"
><

or

ls -la /dev/disk/by-partuuid/ | egrep "${part_boot_on}|${part_boot_backup}"
><

From previous outputs we have gathered the PARTUUIDs for each partition device:

  • sda1: 2f5db39f-9944-4eda-b15c-d6fc45313480
  • sdb1: f0072633-9c78-4fa5-9212-594574fa6f2e

Clone /dev/sdb1 into /dev/sda1:

dd if=/dev/${part_boot_on} of=/dev/${part_boot_backup}
><

The server has now a working ESP on both drives, so the next step is to make sure both ESP exists in the boot-list:

efibootmgr -v | grep ubuntu
><

It should be shown two entries called ubuntu. Make sure the PARTUUIDs are the same as the two taken note of earlier.

You should now be able to remove any of the two drives and still boot the system.

More information about this procedure on this article.

Network configuration

The network will be configured on each server, using the netplan. For this, become root user and follow the next steps:

rm -rm /etc/netplan/*.yaml
nano /etc/netplan/01-netcfg.yaml

In the following picture, are exposed all needed configurations for the netplan configuration. Take in mind that VLANs and IP could differ on each deployment.

Example for HCX1 deployment:

# Network configuration
network:
  version: 2
  renderer: networkd

  ## Physical NICs configuration
  ethernets:
    eno1:
      dhcp4: no
      optional: true
    eno2:
      dhcp4: no
      optional: true

  ## Bonds configuration
  bonds:
    ### MGM_NET, PUBLIC_NET, CLIENT_NET and cluster private networks
    bond0:
      mtu: 9000
      interfaces:
        - eno1
        - eno2
      parameters:
        mode: 802.3ad
        lacp-rate: fast
        mii-monitor-interval: 100

  ## VLANs configuration
  vlans:
    ### MGM_NET
    bond0.2971:
      mtu: 9000
      id: 2971
      link: bond0

    ### PUBLIC_NET
    bond0.950:
      mtu: 9000
      id: 950
      link: bond0

    ### CLIENT_NET
    bond0.2972:
      mtu: 9000
      id: 2972
      link: bond0

  ## Bridges configuration
  bridges:
    ### MGM_NET
    br0:
      interfaces: [bond0.2971]
      addresses: [172.17.71.11/24]
      routes:
        - to: default
          via: 172.17.71.1
      nameservers:
        addresses: [1.1.1.1,8.8.8.8]

    ## PUBLIC_NET
    br1:
      interfaces: [bond0.950]

    ## CLIENT_NET
    br100:
      interfaces: [bond0.2972]

Example for BENTO deployment:

# Network configuration
network:
  version: 2
  renderer: networkd

  ## Physical NICs configuration
  ethernets:
    eno1:
      dhcp4: no
      optional: true
    eno2:
      dhcp4: no
      optional: true
    eno3:
      dhcp4: true
      optional: true
    eno4:
      dhcp4: true
      optional: true
    enp4s0f0:
      dhcp4: no
      optional: true
    enp4s0f1:
      dhcp4: no
      optional: true

  ## Bonds configuration
  bonds:
    ### MGM_NET, PUBLIC_NET, CLIENT_NET, MIGRATION_NET and cluster private networks
    bond0:
      mtu: 9050
      interfaces:
        - eno1
        - eno2
      parameters:
        mode: 802.3ad
        lacp-rate: fast
        mii-monitor-interval: 100

    ### STORAGE_NET
    bond1:
      mtu: 9000
      interfaces:
        - enp4s0f0
        - enp4s0f1
      parameters:
        mode: 802.3ad
        lacp-rate: fast
        mii-monitor-interval: 100
      addresses: [172.16.66.11/24]

  ## VLANs configuration
  vlans:
    ### MGM_NET
    bond0.2966:
      mtu: 9000
      id: 2966
      link: bond0

    ### PUBLIC_NET, MIGRATION_NET
    bond0.950:
      mtu: 9000
      id: 950
      link: bond0

    ### CLIENT_NET
    bond0.2967:
      mtu: 9000
      id: 2967
      link: bond0

    ### CLIENT_VXLAN
    vxlan_vtep:
      mtu: 9050
      id: 2968
      link: bond0
      addresses: [172.18.66.11/24]

  ## Bridges configuration
  bridges:
    ### MGM_NET
    br0:
      interfaces: [bond0.2966]
      addresses: [172.17.66.11/24]
      routes:
        - to: default
          via: 172.17.66.1
      nameservers:
        addresses: [1.1.1.1,8.8.8.8]

    ### PUBLIC_NET
    br1:
      interfaces: [bond0.950]
      addresses: [172.19.100.41/24]

    ### CLIENT_NET
    br100:
      interfaces: [bond0.2967]
  • The network interfaces for the server are bonded and configured in LACP mode for redundancy.
  • These are the required VLANs for the deployment:
    • MGM_NET VLAN
    • PUBLIC_NET VLAN
    • CLIENT_NET VLAN The VLAN numbering is at your discretion. The choice of the private IP segments to be used for the MGM and Client VLANs are also at your discretion, but we recommend as /24 to allow the cluster expansion.

• (3) Bridges need to be created, which are: o br0 for MGM o br1 for Public o br100 for Client

In a single node installation, the Client bridge and client VLAN are not mandatory, but recommended if there are other networks from outside the clusters that need to stablish communication with the VMs in-side the cluster.

Apply network configuration:

netplan apply