How We Leveraged DRBD 9 Autopromote for a Simplified Pacemaker Cluster Layout
Historically, NetEye Clusters were configured with DRBD as Master/Slave resources. This led to the following rather cumbersome resource configuration for an N-node cluster:
$SERVICE_drbd_master ( x 1 )
$SERVICE_drbd_master_clone ( x N )
$SERVICE_drbd_fs
$SERVICE_virt_ip
$SERVICE
Note: $SERVICE serves as a placeholder for any Cluster Service running in NetEye 4.
At least ten constraints were necessary to model the required relations (on promote once, collocation 5 times, and after 4 times):
DRBD 9 introduced a nice little convenience feature called “autopromote”. This automatically promotes a node to primary as soon as the DRBD resources’ block device is mounted. If dual primary mode is configured, then this works on up to 2 nodes, otherwise the mount just fails.
We can rely on this behavior to dispose of the ugly Master/Slave part of the above Cluster configuration. The resources can then be reduced to the following:
$SERVICE_drbd_fs
$SERVICE_virt_ip
$SERVICE
The constraints also become a lot simpler:
Why didn’t we just use Resource Groups?
Well, you can’t put Master/Slave resources in a Resource Group. However, as you may have noticed, we just got rid of all master/slave resources. This means we actually can get rid of all constraints! Resource groups already enforce the necessary collocation and order constraints on their members.
The final result is the following 4 Resources ( 1 Group + 3 Members ) per Service/DRBD Device:
$SERVICE_group
$SERVICE_drbd_fs
$SERVICE_virt_ip
$SERVICE
No constraints whatsoever are necessary, and furthermore DRBD is no longer a cluster-controlled service, but can be run and monitored as a local service on each individual node.
Hi, my name is Benjamin, and I'm Software Architect in the Research & Development Team of the "IT System & Service Management Solutions" Business Unit of Würth Phoenix.
I discovered my passion for Computers and Technology when I was 7 and got my first PC. Just using computers and playing games was never enough for me, so just a few months later, started learning Visual Basic and entered the world of Software Development. Since then, my passion is keeping up with the short-lived, fast-paced, ever-evolving IT world and exploring new technologies, eventually trying to put them to good use. I'm a strong advocate for writing maintainable software, and lately I'm investing most of my free time in the exploration of the emerging Rust programming language.
Author
Benjamin Gröber
Hi, my name is Benjamin, and I'm Software Architect in the Research & Development Team of the "IT System & Service Management Solutions" Business Unit of Würth Phoenix.
I discovered my passion for Computers and Technology when I was 7 and got my first PC. Just using computers and playing games was never enough for me, so just a few months later, started learning Visual Basic and entered the world of Software Development. Since then, my passion is keeping up with the short-lived, fast-paced, ever-evolving IT world and exploring new technologies, eventually trying to put them to good use. I'm a strong advocate for writing maintainable software, and lately I'm investing most of my free time in the exploration of the emerging Rust programming language.
Error during generation of SLA reports We have fixed a bug that was causing an error during the generation of SLA reports. List of updated packages To solve the issue mentioned above, the following packages have been updated for NetEye Read More
Fix NagVis navigation using IcingaDB Web URLs When clicking on a host or service from a NagVis map, you were redirected to the legacy Monitoring module. The links have been updated to correctly point to the IcingaDB Web module. List Read More
Fixing Misplaced Plugin Output in Icinga Web Interface When plugin output contained HTML content (like links), it was incorrectly displayed near the service name instead of in the Plugin Output section. The plugin output section now correctly renders all content. Read More
Icinga Director Now Responsive During Configuration Deployments Previously, users were unable to interact with Icinga Director while configuration deployments were running. Any attempt to access the interface or API would be blocked until the deployment completed, causing unnecessary delays in Read More
Bug Fix We updated the version of GLPI in order to fix some relevant vulnerabilities. List of updated packages The following packages have been updated for NetEye 4.45: glpi, glpi-autosetup, glpi-configurator, glpi-neteye-config to version 10.0.22_neteye1.17.5-1.