Deploy and Configure Virtual Appliance in KVM
Kernel-based Virtual Machine (KVM) uses Linux as a hypervisor to run virtual machines. For more information, see What is KVM?.
Download the QCOW2 image from the Virtual Appliance tab in the Downloads portal, and verify that the file has execute permissions.
You can deploy the Virtual Appliance using the QCOW2 image. Splunk AppDynamics recommends you to use the custom scripts that are available in Splunk AppDynamics GitHub repository. This deployment requires three KVM hypervisors and runs single virtual machine in each hypervisors.
Before you run these scripts, ensure to update or verify the configuration details in config.cfg such as tags, deployment configuration, and IP addresses.
chmod 744 ~/<folder path or filename>Prerequisites
Before you deploy the Virtual Appliance, ensure that:
- The NTP service is enabled to synchronize time across hypervisors.
$ timedatectl status Local time: Thu 2024-10-03 22:36:06 UTC Universal time: Thu 2024-10-03 22:36:06 UTC RTC time: Thu 2024-10-03 22:36:06 Time zone: Etc/UTC (UTC, +0000) System clock synchronized: yes NTP service: active RTC in local TZ: no - The KVM is enabled in the server.
$ kvm-ok INFO: /dev/kvm exists KVM acceleration can be used - The bridged device is available. Make a note of the device name to specify in the
config.cfgfile in a later step.
For more information, see Installing Ubuntu Server Considerations in Readme.md.
Update and Verify the KVM Configuration
The custom scripts uses the configuration specified in the config.cfg file. Update and verify the configuration in the config.cfg file. This file includes the following parameters:
| Parameter | Description |
|---|---|
Storage Pool | This pool stores the image file and disks of the virtual machines. The storage pool parameters specifies the following:
|
Network | Specifies the Linux bridge device that connects the virtual machine to the host network. |
IP Addresses of the Host and Peers | Specifies IP addresses of the host and its peers. The Virtual Appliance cluster deploys in the LIBVIRT_HOST_SELF IP address. In LIBVIRT_HOST_PEERS, list the IP addresses of other KVM hypervisor nodes on which you want to deploy virtual machines. Note: Do not specify the SELF IP address in the peers list. |
Virtual Machine Network | Specifies the virtual machine network parameters such as cluster name, CIDRs, gateway, DNS, and host name. |
| Virtual Machine Size | Specifies the Virtual Appliance profile with its specifications. See Sizing Requirements. Note: Currently, the Virtual Appliance supports only Small profile on KVM. |
Exampleconfig.cfgscript
## libvirt/kvm host user with virt permissions
DEPLOY_ID=${USER} ## defaults to current user
## Libvirt directory storage pool name
# Storage pool parameters
STORAGE_POOL="appdva-storage" # node-local directory
STORAGE_PATH="/data/${STORAGE_POOL}" # path to local storage on each node
# Network parameters (kvm phys host VM bridge name)
BRIDGE_NAME=<Name of the Bridge Network>
# Physical libvirt hypervisor IPs
# used for virsh remote connections:
# VIRT_CONNECTION_URL="qemu+ssh://${DEPLOY_ID}@${HOSTIP}/system"
# enabling remote operations on different physical libvirt nodes
#
LIBVIRT_HOST_SELF="10.0.0.1" # specify the primary node here
LIBVIRT_HOST_PEERS=(
"10.0.0.2"
"10.0.0.3"
)
# LIBVIRT_HOST_PEERS=( )
## VM Network parameters
VM_CLUSTER_NAME="libvirt1"
# these CIDR values change with the cluster name, consult the wiki
VM_CIDRS=(
"10.0.0.11/20"
"10.0.0.12/20"
"10.0.0.13/20"
)
VM_GATEWAY=10.x.x.x
VM_DNS=10.x.x.x
VM_HOSTNAME_PREFIX="appdva-${VM_CLUSTER_NAME}-vm"
VM_NAME_PREFIX="${DEPLOY_ID}-${VM_HOSTNAME_PREFIX}"
## VM size parameters
# profile=small
NUM_VMS=3
VM_VCPUS=16
VM_MEMORY_GB=64
VM_OS_DISK_GB=200
VM_DATA_DISK_GB=500Run the Custom Scripts
Run the scripts in the given order to deploy virtual machines in KVM.
Set Up the Hypervisor
Run 01-prepare-hypervisor.sh to set up the hypervisor. This script:
- Installs required packages for deploying Virtual Appliance:
cloud-image-utils, cpu-checker, libvirt-clients, libvirt-daemon, libvirt-daemon-driver-qemu, libvirt-daemon-system, jq, ovmf, virtinst, virt-viewer, qemu-system-x86 qemu-block-extra, qemu-utils, numad, numactl, and sysstat - Adjusts kernel
cmdlineto host virtual machines. - Updates the KVM parameters.
- Generates SSH keypair.
Run the Cluster
Run the run-cluster command. This script:
- Creates a three-node cluster using the virtual machines.
- Configures the storage in each node in the cluster.
- Enables
libvirtto manage the storage directory for creating images for the virtual machines.
Verify the Cluster Status
cluster-status to verify whether the Virtual Appliance cluster is active.Additional Scripts
If you decide to clean up storage and virtual machines, you can run the following scripts for those tasks:
| Script | Description |
|---|---|
cleanup-storage | Deletes the storage pool of the Virtual Appliance cluster. |
cleanup-vms | Deletes the virtual machines of the Virtual Appliance. |