Compute Node Power Control#
A compute node's power_uri field in the database is optional and informs the head node(s) how to control the power to a given node. A plugin interface allows for different forms of power control, currently supporting Intelligent Platform Management Interface (IPMI) for bare metal nodes, and KVM (virsh) or VirtualBox (vbox) for different types of virtual nodes. In a multi-tenant cluster, bare metal compute nodes inside a tenancy use a power relay plugin.
Setting power_uri on bare metal compute nodes is recommended for most
production environments. If power_uri is not set, you can still use
cw-nodectl reboot and cw-nodectl shutdown ICE ClusterWare ™ commands. However, if
those OS-level commands do not work, you will not have hardware-level power
control functionality.
Power Control with IPMI#
ipmitool is a hardware management utility that supports the IPMI
specification v1.5 and v2.0.
IPMI is an open standard that defines the structures and interfaces used for remote monitoring and management of a computer motherboard (baseboard). IPMI defines a micro-controller, called the baseboard management controller (BMC), which is accessed locally through the managed computer's bus or through an out-of-band network interface connection (NIC).
The root can use ipmitool for a variety of tasks, such as:
Inventory a node's baseboards to determine what sensors are present
Monitor sensors (fan status, temperature, power supply voltages, etc.)
Read and display values from the Sensor Data Repository (SDR)
Read and set the BMC's LAN configuration
Remotely control chassis power
Display the contents of the System Event Log (SEL), which records events detected by the BMC as well as events explicitly logged by the operating system
Print Field Replaceable Unit (FRU) information, such as vendor ID, manufacturer, etc.
Configure and emulate a serial port to the baseboard using the out-of-band network connection known as serial over LAN (SOL)
Several dozen companies support IPMI, including many leading manufacturers of computer hardware. You can learn more about OpenIPMI from the OpenIPMI project page at http://openipmi.sourceforge.net.
Production system compute nodes are generally bare-metal nodes
that can be controlled via the ipmitool command that communicates with
the node's BMC interface.
Set a power_uri with the appropriate BMC IP address and username/password access credentials for bare metal nodes. For example:
cw-nodectl -i n1 update power_uri=ipmi:///admin:password@172.45.88.1
With power_uri, the head node communicates with that compute node's
BMC located at 172.45.88.1 using the username "admin" and password
"password" to perform a cw-nodectl power on, power off,
power cycle, shutdown --hard, or reboot --hard.
If for any reason only a specific remote machine can execute ipmitool to
control a node, then add that server name, and an optional username and
password, to the power_uri. The local head node will ssh to that
remote server and execute the ipmitool command from there.
For example, the following power_uri sends the ipmitool command details to
server "remote_server" for execution:
ipmi://remote_server/admin:password@172.45.88.1
The cw-nodectl "soft" shutdown --soft and
reboot --soft commands do not use the power_uri. Rather, they ssh
to the compute node to execute the local /usr/sbin/shutdown or
/usr/sbin/reboot command with appropriate arguments.
A simple cw-nodectl -i <NODE> reboot (or shutdown) first attempts
a "soft" action if the node is "up" and the head node can communicate with
the node.
If the "soft" action is not possible, or does not complete within a reasonable
time, then the cw-nodectl resorts to a "hard" action using the
power_uri connection.
Virtual Machine Power Control#
On virtual machines, power control is handled by the virtual machine server. For some systems, like libvirt, power control is handled via the QEMU interface over SSH.
For VirtualBox nodes, set the power_uri to:
vbox://<vbox-server-ip-addr>/<vm-name>
Where:
<vbox-server-ip-addr>is the IP address for the VirtualBox server.<vm-name>is the name of the virtual machine inside the underlying virtualization system. The name may not match the node name as given by the ClusterWare software.
For example:
vbox://192.168.56.1/CW_Compute0
For libvirt nodes, set the power_uri to:
libvirt+qemu+ssh://<libvirt-server-ip-addr>/system/<vm-name>
Where:
<libvirt-server-ip-addr>is the IP address for the libvirt server.<vm-name>is the name of the virtual machine inside the underlying virtualization system. The name may not match the node name as given by the ClusterWare software.
For example:
libvirt+qemu+ssh://192.168.100.1/system/comp0
Tenancy Node Power Control#
Note
Tenants, tenancies, and other features are available if you have paid for multi-tenant support. Contact Penguin Computing to learn more.
When viewed within the super-cluster, a bare metal compute node's power_uri uses IPMI. The superadministrator can treat all bare metal compute nodes like nodes in a standard cluster.
Within a tenancy, the same bare metal compute node's power_uri uses a relay plugin with the node's MAC address to allow a tenancy admnistrator to execute power control API actions on the node. The relay uses the tenancy token to authenticate and request power control from the super-cluster. Tenancy administrators do not need to know the super-cluster IPMI address - they only need the relay plugin to control node power within their tenancy. The power_uri for a node within a tenancy is set automatically during tenancy creation.
For example, a node at MAC address 11:22:33:44:55:66 has the following power_uri value at the super-cluster level:
ipmi:///admin:password@172.45.88.1
The same node has the following power_uri value within a tenancy:
relay://super/11:22:33:44:55:66