SevOne Data Platform Deployment on KVM

Each KVM implementation varies dependent upon your environment. The following workflow reflects an Openstack implementation. The typical implementation is to set up a private, internal network for the Openstack instances to use for communication. This private network is made available to the public network via NAT. You apply a floating IP address from the public network to the instance's main interface in the private network. Users connect to the floating IP address via their regular network. SevOne instances (each virtual appliance you peer into the cluster) is peered to one another via the private IP address. The private IP address must be reachable (i.e., in the same Neutron network, or otherwise routable). Otherwise, you should use floating IP addresses from the public network to establish peering. Metadata service is not supported.

The KVM image file has a QCOW2 file extension. QCOW2 is a file format for disk image files used by QEMU, a hosted virtual machine monitor. It stands for QEMU Copy On Write and uses a disk storage optimization strategy that delays allocation of storage until it is actually needed. You followed the steps earlier in this document to download the QCOW2 image.

Openstack Installation

Perform the following steps to incorporate the SevOne image via Openstack.

Get image into Openstack

glance image-create --name "SevOne Image" --is-public true --disk-format qcow2 \
--container-format bare \
--file SevOne.qcow2

Log on to Openstack. If you do not have the Openstack GUI or you prefer to use command line Openstack, see the end of this section for command line instructions.


admin:admin

openstacklogin

  1. In the Username field, enter your Openstack user name.
  2. In the Password field, enter your Openstack password.
  3. Click Sign In.

The Overview page appears with the System - Overview tab displayed.

InitialOverview

In the left menu, click Project, then select Compute, and then select Overview to display the statistics that enables you to determine if you have enough space for the virtual appliance. For details, please refer to Hardware Requirements.

step1
After you confirm that there are enough resources to install the virtual appliance, perform the following steps to create a flavor.
  1. In the left menu select System then select Flavors.

    flavor

  2. Click Create Flavor.

    createFlavor

  3. In the Name field, enter the name of the flavor.
  4. In the ID field, enter the flavor identifier.
  5. In the VCPUs field, enter the number of virtual CPUs. This is equal to the number of CPUs plus the number of cores listed in the requirements.

  6. In the RAM field, enter the amount of RAM.
  7. In the Root Disk field, enter the amount of space to allocate on the root disk.
  8. In the Ephemeral Disk field, enter the amount of space to allocate on the ephemeral disk.
  9. In the Swap Disk field, enter the amount of space to allocate on the swap disk.
  10. Click Create Flavor to return to the Flavors page with the new flavor displayed in the list.

Perform the following steps to launch the instance for the virtual appliance.

  1. In the left menu, select Compute then select Instances to display the Instances page that displays the status of your instances.

    step2

  2. Click Launch Instance to display the Launch Instance page, Details tab, Advanced Options that enable you to define the details to launch an instance.

    step3

  3. Click the Availability Zone drop-down and select an availability zone.
  4. In the Instance Name field, enter the instance name.
  5. Click the Flavor drop-down and select the flavor you created in the previous section.
  6. In the Instance Count field, enter the instance count.
  7. Click the Instance Boot Source drop-down and select Boot From Image (Creates New Volume).
  8. Click the Image Name drop-down and select the image name.
  9. In the Device Size field, enter the size of the device.
  10. Click Launch to display the Launch Instance page Networking tab.

    step_3_networking

  11. In the Available Networks section, click the + next to Private Network to move the Private Network to the Selected Networks field.
  12. Click Launch to return to the Instances page and to add the new instance to the Instances list.

The Instances list now displays your instance.

step_4_build_finished

Perform the following steps to associate a floating IP address to the instance.

step_5_associate_floating_ip

  1. Click the Create Snapshot drop-down and select Associate Floating IP to display the Allocate Floating IP page.

    step_6_assign_floating_ip

  2. Click the IP Address drop-down and select an IP address or click + next to the IP Address field to display the the Allocate Floating IP pop-up.

    AllocateFloatingIP

  3. Click the Port to be Associated drop-down and select the instance for the virtual appliance.
  4. Click Associate.

step_6_floating_ip_has_been_assigned

Enter the following command to boot the SevOne KVM implemented appliance.

Boot SevOne KVM implemented appliance

qemu SevOne.qcow -boot c -net nic -net user -m 196 -localtime

Openstack / KVM Command Line Implementation

If you do not have the Openstack GUI or you prefer to install the virtual appliance via an Openstack command prompt, please execute the following command.

openstack server create --image nms-<enter version>.qcow2 --flavor
<virtual appliance size> --security-group default --nic net-id=421d3d2d-4b29-4a43-89fa-4717f506fcb3
nms-<enter version>-qcow2-test

Example: for vPAS 20K virtual appliance

openstack server create --image nms-7.1.0-20240530-221824-90c22736.qcow2 --flavor vPAS20K --security-group
default --nic net-id=421d3d2d-4b29-4a43-89fa-4717f506fcb3 nms-7.1.0-20240530-221824-90c22736-qcow2-test

Alternatively, you can use the following command from the KVM command prompt.

virt-install \
-n <virtual appliance size> \
--description "<description>" \
--os-type=Linux \
--os-variant=virtio26 \
--ram=4096 \
--vcpus=4 \
--disk path=/var/lib/libvirt/images/NAME-OF-SEVONE-IMAGE.qcow2,bus=virtio,size=600 \
--graphics none \
--network bridge:br0

Example: for vPAS 20K virtual appliance

virt-install \
-n sevone-vpas-20k \
--description "SevOne vPAS 20K" \
--os-type=Linux \
--os-variant=virtio26 \
--ram=4096 \
--vcpus=4 \
--disk path=/var/lib/libvirt/images/NAME-OF-SEVONE-IMAGE.qcow2,bus=virtio,size=600 \
--graphics none \
--network bridge:br0

where,

  • n - name of your Virtual Machine.
  • description - some valid description about your Virtual Machine.
  • os-type - operating system type. For SevOne virtual appliances, use Linux.
  • os-variant - distribution type for the above os-type. For SevOne virtual appliances, use virtio26.
  • ram - memory for the Virtual Machine in MB. For details, please refer to Hardware Requirements.
  • vcpu - total number of virtual CPUs for the Virtual Machine. For details, please refer to Hardware Requirements.
  • disk path - path where the SevOne virtual appliance image files are stored. For example, /var/lib/libvirt/images/NAME-OF-SEVONE-IMAGE.qcow2,bus=virtio,size=600. The size is in GB. In this example, the image file is 600GB.
  • graphics - this instructs virt-install to use a text console on the Virtual Machine serial port instead of graphical VNC window. If you have the xmanager set up, then you can ignore this parameter.
  • network - SevOne Virtual Machine uses bridged adapter br0. For example, bridge:br0.

KVM Drive Configuration

If an empty data disk is attached to a virtual machine on first boot, it will be automatically formatted, mounted, and configured. However, if the user has already booted and now wants to attach a /data disk, the steps below must be performed.

  1. Using a text editor of your choice, create /opt/kvm_setup.sh file. This file is not available automatically and you must create it.
    
    touch /opt/kvm_setup.sh
    
  2. Edit /opt/kvm_setup.sh file.
    
    vi /opt/kvm_setup.sh
    
  3. Add the following script to configure the data disk and run the script manually with bash.
    Example: kvm_setup.sh
    
    # This script is only valid during initial deployment, and should not be used 
    # to migrate data on an existing environment with a significant amount of 
    # collected historical data
    set -e
    
    MIN_SIZE=$((150 * 1024 * 1024 * 1024))
    DATA_SIZE=$(df -B1 /data 2>/dev/null | awk 'NR==2 {print $3}')
    if [[ "$DATA_SIZE" =~ ^[0-9]+$ ]] && (( DATA_SIZE > MIN_SIZE )); then
    	MIN_SIZE=$DATA_SIZE
    fi
    DISK_NAME=$(lsblk -o NAME,FSTYPE,SIZE -Jb | jq -r --argjson minSize "$MIN_SIZE" '[.blockdevices[] | select((.children|length==0) and (.size|tonumber >= $minSize) and (.fstype|not))] | max_by(.size|tonumber) | select(.) | .name')
    
    if [ -z "$DISK_NAME" ]; then
    	echo "No appropriate blank disks found" >&2
    	exit 1
    fi
    
    systemctl stop nms
    mkdir -p /data_temp /data
    mv /data/* /data_temp
    
    mkfs.xfs /dev/$DISK_NAME
    cat > /etc/systemd/system/data.mount <<__DATA_MOUNT__
    [Unit]
    Description=Mount unit for /data
    Before=nms_deployment.service prometheus_deployment.service collectors_deployment.service
    
    [Mount]
    What=/dev/$DISK_NAME
    Where=/data
    Type=xfs
    DirectoryMode=0755
    
    [Install]
    WantedBy=multi-user.target
    __DATA_MOUNT__
    
    systemctl daemon-reload
    systemctl enable data.mount
    systemctl restart data.mount
    mv /data_temp/* /data
    systemctl start nms
    rmdir /data_temp