From 9ab6ab5bfd3379216c15fb5f0ab646169616757c Mon Sep 17 00:00:00 2001 From: Oyvind Albrigtsen Date: Wed, 8 Mar 2023 13:29:59 +0100 Subject: [PATCH] - IPaddr2/IPsrcaddr: support policy-based routing - lvmlockd: add "use_lvmlockd = 1" if it's commented out or missing - ethmonitor: dont log "Interface does not exist" for monitor-action - mysql: fix replication issues Resolves: rhbz#2040110 Resolves: rhbz#2149970 Resolves: rhbz#2154727 Resolves: rhbz#2039692 --- bz2039692-mysql-replication-fixes.patch | 70 ++++++++++++++++ ...srcaddr-support-policy-based-routing.patch | 84 +++++++++++++++++++ ...lvmlockd-add-use_lvmlockd-if-missing.patch | 42 ++++++++++ ...-dont-log-iface-doesnt-exist-monitor.patch | 24 ++++++ resource-agents.spec | 21 ++++- 5 files changed, 240 insertions(+), 1 deletion(-) create mode 100644 bz2039692-mysql-replication-fixes.patch create mode 100644 bz2040110-IPaddr2-IPsrcaddr-support-policy-based-routing.patch create mode 100644 bz2149970-lvmlockd-add-use_lvmlockd-if-missing.patch create mode 100644 bz2154727-ethmonitor-dont-log-iface-doesnt-exist-monitor.patch diff --git a/bz2039692-mysql-replication-fixes.patch b/bz2039692-mysql-replication-fixes.patch new file mode 100644 index 0000000..e086e07 --- /dev/null +++ b/bz2039692-mysql-replication-fixes.patch @@ -0,0 +1,70 @@ +From 706b48fd93a75a582c538013aea1418b6ed69dd0 Mon Sep 17 00:00:00 2001 +From: Oyvind Albrigtsen +Date: Thu, 9 Mar 2023 15:57:59 +0100 +Subject: [PATCH] mysql: promotable fixes to avoid nodes getting bounced around + by setting -v 1/-v 2, and added OCF_CHECK_LEVEL=10 for promotable resources + to be able to distinguish between promoted and not + +--- + heartbeat/mysql | 19 +++++++++++++------ + 1 file changed, 13 insertions(+), 6 deletions(-) + +diff --git a/heartbeat/mysql b/heartbeat/mysql +index 9ab49ab20e..29ed427319 100755 +--- a/heartbeat/mysql ++++ b/heartbeat/mysql +@@ -757,6 +757,10 @@ mysql_monitor() { + status_loglevel="info" + fi + ++ if ocf_is_ms; then ++ OCF_CHECK_LEVEL=10 ++ fi ++ + mysql_common_status $status_loglevel + rc=$? + +@@ -777,7 +781,13 @@ mysql_monitor() { + return $rc + fi + +- if [ $OCF_CHECK_LEVEL -gt 0 -a -n "$OCF_RESKEY_test_table" ]; then ++ if [ $OCF_CHECK_LEVEL -eq 10 ]; then ++ if [ -z "$OCF_RESKEY_test_table" ]; then ++ ocf_exit_reason "test_table not set" ++ return $OCF_ERR_CONFIGURED ++ ++ fi ++ + # Check if this instance is configured as a slave, and if so + # check slave status + if is_slave; then +@@ -795,18 +805,16 @@ mysql_monitor() { + ocf_exit_reason "Failed to select from $test_table"; + return $OCF_ERR_GENERIC; + fi +- else +- # In case no exnteded tests are enabled and we are in master/slave mode _always_ set the master score to 1 if we reached this point +- ocf_is_ms && $CRM_MASTER -v 1 + fi + + if ocf_is_ms && ! get_read_only; then + ocf_log debug "MySQL monitor succeeded (master)"; + # Always set master score for the master +- $CRM_MASTER -v 2 ++ $CRM_MASTER -v $((${OCF_RESKEY_max_slave_lag}+1)) + return $OCF_RUNNING_MASTER + else + ocf_log debug "MySQL monitor succeeded"; ++ ocf_is_ms && $CRM_MASTER -v 1 + return $OCF_SUCCESS + fi + } +@@ -873,7 +881,6 @@ mysql_start() { + # preference set by the administrator. We choose a low + # greater-than-zero preference. + $CRM_MASTER -v 1 +- + fi + + # Initial monitor action diff --git a/bz2040110-IPaddr2-IPsrcaddr-support-policy-based-routing.patch b/bz2040110-IPaddr2-IPsrcaddr-support-policy-based-routing.patch new file mode 100644 index 0000000..0607ddb --- /dev/null +++ b/bz2040110-IPaddr2-IPsrcaddr-support-policy-based-routing.patch @@ -0,0 +1,84 @@ +From 4d87bcfe5df8a1e40ee945e095ac9e7cca147ec4 Mon Sep 17 00:00:00 2001 +From: Oyvind Albrigtsen +Date: Wed, 29 Jun 2022 10:26:25 +0200 +Subject: [PATCH] IPaddr2/IPsrcaddr: add/modify table parameter to be able to + find interface while using policy based routing + +--- + heartbeat/IPaddr2 | 12 ++++++++++++ + heartbeat/IPsrcaddr | 5 ++++- + heartbeat/findif.sh | 2 +- + 3 files changed, 17 insertions(+), 2 deletions(-) + +diff --git a/heartbeat/IPaddr2 b/heartbeat/IPaddr2 +index 97a7431a2..e8384c586 100755 +--- a/heartbeat/IPaddr2 ++++ b/heartbeat/IPaddr2 +@@ -73,6 +73,7 @@ OCF_RESKEY_ip_default="" + OCF_RESKEY_cidr_netmask_default="" + OCF_RESKEY_broadcast_default="" + OCF_RESKEY_iflabel_default="" ++OCF_RESKEY_table_default="" + OCF_RESKEY_cidr_netmask_default="" + OCF_RESKEY_lvs_support_default=false + OCF_RESKEY_lvs_ipv6_addrlabel_default=false +@@ -97,6 +98,7 @@ OCF_RESKEY_network_namespace_default="" + : ${OCF_RESKEY_cidr_netmask=${OCF_RESKEY_cidr_netmask_default}} + : ${OCF_RESKEY_broadcast=${OCF_RESKEY_broadcast_default}} + : ${OCF_RESKEY_iflabel=${OCF_RESKEY_iflabel_default}} ++: ${OCF_RESKEY_table=${OCF_RESKEY_table_default}} + : ${OCF_RESKEY_lvs_support=${OCF_RESKEY_lvs_support_default}} + : ${OCF_RESKEY_lvs_ipv6_addrlabel=${OCF_RESKEY_lvs_ipv6_addrlabel_default}} + : ${OCF_RESKEY_lvs_ipv6_addrlabel_value=${OCF_RESKEY_lvs_ipv6_addrlabel_value_default}} +@@ -239,6 +241,16 @@ If a label is specified in nic name, this parameter has no effect. + + + ++ ++ ++Table to use to lookup which interface to use for the IP. ++ ++This can be used for policy based routing. See man ip-rule(8). ++ ++Table ++ ++ ++ + + + Enable support for LVS Direct Routing configurations. In case a IP +diff --git a/heartbeat/IPsrcaddr b/heartbeat/IPsrcaddr +index 1bd41a930..cf106cc34 100755 +--- a/heartbeat/IPsrcaddr ++++ b/heartbeat/IPsrcaddr +@@ -155,13 +155,16 @@ Metric. Only needed if incorrect metric value is used. + + + +-Table to modify. E.g. "local". ++Table to modify and use for interface lookup. E.g. "local". + + The table has to have a route matching the "destination" parameter. ++ ++This can be used for policy based routing. See man ip-rule(8). + + Table + + ++ + + + +diff --git a/heartbeat/findif.sh b/heartbeat/findif.sh +index 66bc6d56a..1a40cc9a4 100644 +--- a/heartbeat/findif.sh ++++ b/heartbeat/findif.sh +@@ -32,7 +32,7 @@ prefixcheck() { + getnetworkinfo() + { + local line netinfo +- ip -o -f inet route list match $OCF_RESKEY_ip table local scope host | (while read line; ++ ip -o -f inet route list match $OCF_RESKEY_ip table "${OCF_RESKEY_table=local}" scope host | (while read line; + do + netinfo=`echo $line | awk '{print $2}'` + case $netinfo in diff --git a/bz2149970-lvmlockd-add-use_lvmlockd-if-missing.patch b/bz2149970-lvmlockd-add-use_lvmlockd-if-missing.patch new file mode 100644 index 0000000..ef5e34e --- /dev/null +++ b/bz2149970-lvmlockd-add-use_lvmlockd-if-missing.patch @@ -0,0 +1,42 @@ +From 2695888c983df331b0fee407a5c69c493a360313 Mon Sep 17 00:00:00 2001 +From: Oyvind Albrigtsen +Date: Wed, 30 Nov 2022 12:07:05 +0100 +Subject: [PATCH] lvmlockd: add "use_lvmlockd = 1" if it's commented out or + missing + +--- + heartbeat/lvmlockd | 17 +++++++++++++---- + 1 file changed, 13 insertions(+), 4 deletions(-) + +diff --git a/heartbeat/lvmlockd b/heartbeat/lvmlockd +index dc7bd2d7e..f4b299f28 100755 +--- a/heartbeat/lvmlockd ++++ b/heartbeat/lvmlockd +@@ -180,14 +180,23 @@ setup_lvm_config() + lock_type=$(echo "$out" | cut -d'=' -f2) + + if [ -z "$use_lvmlockd" ]; then +- ocf_exit_reason "\"use_lvmlockd\" not set in /etc/lvm/lvm.conf ..." +- exit $OCF_ERR_CONFIGURED +- fi ++ ocf_log info "adding \"use_lvmlockd=1\" to /etc/lvm/lvm.conf ..." ++ cat >> /etc/lvm/lvm.conf << EOF ++ ++global { ++ use_lvmlockd = 1 ++} ++EOF + +- if [ -n "$use_lvmlockd" ] && [ "$use_lvmlockd" != 1 ] ; then ++ if [ $? -ne 0 ]; then ++ ocf_exit_reason "unable to add \"use_lvmlockd=1\" to /etc/lvm/lvm.conf ..." ++ exit $OCF_ERR_CONFIGURED ++ fi ++ elif [ "$use_lvmlockd" != 1 ] ; then + ocf_log info "setting \"use_lvmlockd=1\" in /etc/lvm/lvm.conf ..." + sed -i 's,^[[:blank:]]*use_lvmlockd[[:blank:]]*=.*,\ \ \ \ use_lvmlockd = 1,g' /etc/lvm/lvm.conf + fi ++ + if [ -n "$lock_type" ] ; then + # locking_type was removed from config in v2.03 + ocf_version_cmp "$(lvmconfig --version | awk '/LVM ver/ {sub(/\(.*/, "", $3); print $3}')" "2.03" diff --git a/bz2154727-ethmonitor-dont-log-iface-doesnt-exist-monitor.patch b/bz2154727-ethmonitor-dont-log-iface-doesnt-exist-monitor.patch new file mode 100644 index 0000000..6b771b6 --- /dev/null +++ b/bz2154727-ethmonitor-dont-log-iface-doesnt-exist-monitor.patch @@ -0,0 +1,24 @@ +From e7a748d35fe56f2be727ecae1885a2f1366f41bf Mon Sep 17 00:00:00 2001 +From: Oyvind Albrigtsen +Date: Wed, 15 Mar 2023 13:03:07 +0100 +Subject: [PATCH] ethmonitor: dont log "Interface does not exist" for + monitor-action + +--- + heartbeat/ethmonitor | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/heartbeat/ethmonitor b/heartbeat/ethmonitor +index 451738a0b5..f9c9ef4bdd 100755 +--- a/heartbeat/ethmonitor ++++ b/heartbeat/ethmonitor +@@ -271,6 +271,9 @@ if_init() { + validate-all) + ocf_exit_reason "Interface $NIC does not exist" + exit $OCF_ERR_CONFIGURED;; ++ monitor) ++ ocf_log debug "Interface $NIC does not exist" ++ ;; + *) + ## It might be a bond interface which is temporarily not available, therefore we want to continue here + ocf_log warn "Interface $NIC does not exist" diff --git a/resource-agents.spec b/resource-agents.spec index 7613def..29e4610 100644 --- a/resource-agents.spec +++ b/resource-agents.spec @@ -69,7 +69,7 @@ Name: resource-agents Summary: Open Source HA Reusable Cluster Resource Scripts Version: 4.9.0 -Release: 40%{?rcver:%{rcver}}%{?numcomm:.%{numcomm}}%{?alphatag:.%{alphatag}}%{?dirty:.%{dirty}}%{?dist} +Release: 41%{?rcver:%{rcver}}%{?numcomm:.%{numcomm}}%{?alphatag:.%{alphatag}}%{?dirty:.%{dirty}}%{?dist} License: GPLv2+ and LGPLv2+ URL: https://github.com/ClusterLabs/resource-agents %if 0%{?fedora} || 0%{?centos_version} || 0%{?rhel} @@ -136,6 +136,10 @@ Patch44: bz2157873-2-Filesystem-CTDB-validate-all-improvements.patch Patch45: bz2157873-3-pgsqlms-validate-all-OCF_CHECK_LEVEL-10.patch Patch46: bz2157873-4-exportfs-pgsql-validate-all-fixes.patch Patch47: bz2157873-5-pgsqlms-alidate-all-OCF_CHECK_LEVEL-10.patch +Patch48: bz2040110-IPaddr2-IPsrcaddr-support-policy-based-routing.patch +Patch49: bz2149970-lvmlockd-add-use_lvmlockd-if-missing.patch +Patch50: bz2154727-ethmonitor-dont-log-iface-doesnt-exist-monitor.patch +Patch51: bz2039692-mysql-replication-fixes.patch # bundle patches Patch1000: 7-gcp-bundled.patch @@ -363,6 +367,10 @@ exit 1 %patch45 -p1 %patch46 -p1 %patch47 -p1 +%patch48 -p1 +%patch49 -p1 +%patch50 -p1 +%patch51 -p1 chmod 755 heartbeat/nova-compute-wait chmod 755 heartbeat/NovaEvacuate @@ -938,6 +946,17 @@ ccs_update_schema > /dev/null 2>&1 ||: %{_usr}/lib/ocf/lib/heartbeat/OCF_*.pm %changelog +* Wed Mar 22 2023 Oyvind Albrigtsen - 4.9.0-41 +- IPaddr2/IPsrcaddr: support policy-based routing +- lvmlockd: add "use_lvmlockd = 1" if it's commented out or missing +- ethmonitor: dont log "Interface does not exist" for monitor-action +- mysql: fix replication issues + + Resolves: rhbz#2040110 + Resolves: rhbz#2149970 + Resolves: rhbz#2154727 + Resolves: rhbz#2039692 + * Tue Jan 17 2023 Oyvind Albrigtsen - 4.9.0-40 - all agents: dont check notify/promotable settings during validate-action