Phriction Welcome to the ClusterLabs Wiki Projects Pacemaker Pacemaker 3.0 Changes Pacemaker 3.0 Configuration Changes History Version 2 vs 47
Version 2 vs 47
Version 2 vs 47
Content Changes
Content Changes
**This describes proposed configuration changes for a possible Pacemaker 3.0.0 release. Discussion should be directed to the [[ /w/clusterlabs/clusterlabs_mailing_lists/ | users mailing list]].**
These changes are only proposed and may not make it into the final release.
== The build process ==
=== Dependencies ===
The intent would be to support dependency versions that are available in supported releases of major Linux distributions (ideally but not always including long-term support), specifically including:
* Debian 10 "buster" and later
* RHEL 8.0 and later
* SUSE 15.0 and later
* Ubuntu 18 "bionic" and later
The only expected changes would be these new minimum dependency versions:
* automake 1.14
* gettext 0.19.6
* libdbus 1.5.12
* libxml2 2.9.2
* pkg-config 0.28 (or pkgconf)
* Python 3.5
=== configure script ===
**Drop support** for the following options:
* `--enable-legacy-links` //(deprecated in Pacemaker 2.1.0)//
* `--enable-compat-2.0` //(introduced in 2.1.0 explicitly for the 2.1 series only)//
* `--enable-upstart` //(deprecated in Pacemaker 2.1.0)//
* `--with-nagios` //(deprecated in Pacemaker 2.1.6)//
=== RPMs ===
* Drop support for setting the `RPMDEST` Makefile variable to `toplevel` (the default of `subtree` and explicit paths will still be supported)
* Drop support for the `--with-doc` and `--without-doc` spec file options (documentation will always be built)
* The `--with-stonithd` and `--without-stonithd` spec file option will be renamed to something more descriptive (it enables support for Linux-HA fencing agents)
== Configuration Information Base (CIB) XML changes ==
XML syntax will now be strictly interpreted. Previously, some simple XML syntax errors would be ignored.
The following will be automatically and silently dropped or converted to current syntax when used in existing configurations, but disallowed in new ones (as well as existing ones after running `cibadmin --upgrade`).
* The schema will have stricter error checking:
** Clones using non-OCF resource agents and the `globally-unique` meta-attribute set to `true` will be considered an error and ignored (currently, a warning is logged but the resource is allowed)
** Invalid topology levels will be disallowed in the CIB rather than wait until they are rejected by the fencer (valid levels are 1 through 9)
** The value of an `acl_target` element's `id` attribute must be of the XML ID type (noncompliant names will be given an auto-generated ID and moved to the `name` attribute)
** Empty groups will be ignored (currently they can have some effect in constraints)
* Drop support for deprecated (and mostly undocumented) features:
** `nagios` class resources
** `upstart` class resources
** `master` resources (they will be converted to `clone` elements with the `promotable` meta-attribute set to `true`)
** `remove-after-stop` cluster option
** `moon` in `date_spec` elements in rules
** The `0.6`, `0.7`, and `pacemaker-next` CIB schemas (used as the value of the `validate-with` CIB property)
** Nodes with `type` set to `ping`
** `ordering` attribute of resource sets in colocation constraints
** `can-fail` (or `can_fail`) resource meta-attribute (if possible, it will converted to `on-fail` operation meta-attributes set to `ignore`)
** `restart-type` resource meta-attribute
** `role-after-failure` resource meta-attribute
** `score` in an ordering constraint (if possible, a value of 0 will be transformed to a `kind` of `optional`)
** `stonith-action` cluster option set to `poweroff` (it will be transformed to `off`)
** `collocated` and `ordered` group options (if possible, a value of `false` will be transformed to resource sets in a colocation or ordering constraint instead)
** `lifetime` elements inside a constraint (any rules they contain will be left inside the constraint directly)
* Rules will now be more strictly interpreted, with the following options causing an error rather than being silently ignored where they aren't relevant:
** `op_expression` in a rule anywhere other than `op_defaults`
** `rsc_expression` in a rule anywhere other than `rsc_defaults` or `op_defaults`
** `score` or `score-attribute` in a rule anywhere other than a location constraint
** `value-source` in a rule `expression` anywhere other than a location constraint
** `monthdays`, `weekdays`, `weekyears`, or `moon` in a `duration`
** `yearsdays` anywhere (`yeardays` is allowed only in a `time_spec`)
** An invalid `role` name in any `rule`
== Start-up environment variables ==
These are typically set under /etc/sysconfig or /etc/default.
* Pacemaker no longer uses the `HA_cib_timeout`, `HA_shutdown_delay`, `PCMK_cib_timeout`, `PCMK_dh_min_bits`, or `PCMK_shutdown_delay` variables.
* Pacemaker now interprets the value of `PCMK_panic_action` case-sensitively, and invalid values will be logged as a warning.
---
== Configuration Information Base (CIB) XML changes ==
* **XML syntax in the CIB must now be correctly formed.** Previously, some simple XML syntax errors would be ignored. Upgrades will not succeed if the XML syntax is invalid, so ensure it is valid //before// upgrading any node in the cluster (if you are running Pacemaker 2.1.8 or later, you can check the logs for deprecation warnings).
* **Deprecated schemas have been dropped.** The `validate-with` attribute of the `cib` XML element may no longer be omitted or set to the deprecated values `pacemaker-0.6`, `transitional-0.6`, `pacemaker-0.7`, `pacemaker-1.1`, `pacemaker-next`, or any unknown value. Upgrades will not succeed unless the CIB has a supported value for `validate-with` //before// the upgrade, so ensure one is set before upgrading any node in the cluster. (Disabling validation by setting `validate-with` to `none` remains allowed and deprecated.)
* **Schema names are now case-sensitive.** The `validate-with` attribute of the `cib` XML element must now match the schema file names by case (all lowercase). Upgrades will not succeed unless the CIB has a supported value for `validate-with` //before// the upgrade, so ensure one is set before upgrading any node in the cluster.
* Support for the following deprecated (and mostly undocumented) features has been dropped. Any uses in existing configurations will be automatically and silently converted to current syntax when possible. They will not be allowed in new configurations, or in existing ones after running `cibadmin --upgrade`.
** cluster options: `crmd-finalization-timeout`, `crmd-integration-timeout`, `crmd-transition-delay`, `remove-after-stop`, and the `stonith-action` cluster option set to `poweroff`
** nodes: `type` set to `ping`
** `primitive` resources: `nagios` or `upstart` class
** `master` resources (use `clone` resource with `promotable` meta-attribute set to `true` instead)
** `bundle` resources: using `rkt` to launch containers; `masters` meta-attribute
** operation options: `can-fail`, `can_fail`, and `role_after_failure`
** resource options: `restart-type`
** rules: `moon` in `date_spec` elements
** constraints: `lifetime` elements in any constraint
* Error checking is stricter (most of these errors are possible only with schema validation disabled, and so will not affect the vast majority of users)
** Invalid fencing topology levels are now disallowed by the schema (rather than waiting until they are rejected by the fencer; valid levels are 1 through 9)
** Resource history entries with an invalid `rc-code` (which should be possible only with manual mis-editing or a bug) will now be ignored rather than treated as action failures
** Location constraints with an invalid `score`, `boolean-op`, or `role`, colocation constraints with an invalid `score`, `rsc-role`, or `with-rsc-role`, and ticket constraints with an invalid `rsc-role` are now ignored (previously, the default value would be used).
** An `nvpair` element with an invalid `id-ref` attribute is now ignored even if it has a `name` and/or `value` attribute as well
** An `nvpair` element with a valid `id-ref` attribute and also `name` and/or `value` attributes now ignores the `name` and `value` attributes
** If a `cluster_property_set`, `instance_attributes`, `meta_attributes`, or `utilization` element contains multiple top-level rules, only the first will now be interpreted
** A `node` with an invalid `type` is now ignored (previously, they were treated as `ping` nodes, contributing to quorum but unable to run resources)
** Any `instance_attributes` in `rsc_defaults` is now ignored
* Rule syntax is more strictly interpreted
** A date expression is now treated as not passing if it is missing an `id`; contains an invalid `operation`; contains a `date_spec` or `duration` with a missing `id` or an attribute with an invalid range; has an `operation` of `in_range`, `gt`, or `lt` with an invalid or missing `start` or `end`; or uses `date_spec` without a `date_spec` element
** An attribute expression is now treated as not passing if it is missing an `id`; has an invalid `value-source` or `type`; or has `value` missing when it is required or present when it is unused
** A resource expression is now treated as not passing if it is missing an `id`
** An operation expression is now treated as not passing if it is missing an `id` or `interval` or has an invalid `interval`
** A rule is now treated as not passing if it is missing an `id` or has an invalid `boolean-op`
** An rule with a `boolean-op` of `or` with no conditions is now properly treated as passing.
** The schema will no longer allow rule syntax where it is unused, including: `op_expression` in a rule anywhere other than `op_defaults`; `rsc_expression` in a rule anywhere other than `rsc_defaults` or `op_defaults`; `score` or `score-attribute` in a rule anywhere other than a location constraint; `value-source` in a rule `expression` anywhere other than a location constraint; `monthdays`, `weekdays`, `weekyears`, or `moon` in a `duration`; `yearsdays` anywhere (the correct spelling `yeardays` is allowed only in a `time_spec`); an invalid `role` name in any `rule`
* Changes in defaults
** `action` configured as a fence device parameter is now ignored rather than treated as a default fencing action
** The `concurrent-fencing` cluster option now defaults to true and is deprecated
** The `globally-unique` clone option now defaults to `true` when `clone-node-max` is greater than 1
* Location constraints may now have at most a single top-level rule (previously, they could have any number; use separate location constraints for each top-level rule instead).
* `nvpair` elements must now contain a `value` attribute (it is no longer optional).
* If an `nvpair` element has an `id-ref` attribute, it can no longer also have a `name` attribute to override the referenced element.
* Pacemaker has always allowed custom names to be configured in cluster options and resource options, which are ignored by Pacemaker but can be used by users' own tooling. The user has to take care not to conflict with any option names that Pacemaker uses. As of Pacemaker 2.0.0, when support for certain deprecated options was dropped, the schema enforced that users could not use those names as custom names, to prevent misunderstandings. Those restrictions have now been dropped, and if those names are configured, they will be ignored as with any other custom name.
**This describes proposed configuration changes for a possible Pacemaker 3.0.0 release. Discussion should be directed to the [[ /w/clusterlabs/clusterlabs_mailing_lists/ | users mailing list]].**== Start-up environment variables ==
These changes are only proposed and may not make it into the final releaseare typically set under /etc/sysconfig or /etc/default.
== The build process ==* Pacemaker no longer uses the `HA_cib_timeout`, `HA_shutdown_delay`, `PCMK_cib_timeout`, `PCMK_dh_min_bits`, or `PCMK_shutdown_delay` variables.
=== Dependencies ===* Pacemaker now interprets the value of `PCMK_panic_action` case-sensitively, and invalid values will be logged as a warning.
The intent would be to support dependency versions that are available in supported releases of major Linux distributions (ideally but not always including long-term support), specifically including:---
* Debian 10 "buster" and later
* RHEL 8.0 and later
* SUSE 15.0 and later
* Ubuntu 18 "bionic" and later== Configuration Information Base (CIB) XML changes ==
The only expected changes would be these new minimum dependency versions:* **XML syntax in the CIB must now be correctly formed.** Previously, some simple XML syntax errors would be ignored. Upgrades will not succeed if the XML syntax is invalid, so ensure it is valid //before// upgrading any node in the cluster (if you are running Pacemaker 2.1.8 or later, you can check the logs for deprecation warnings).
* automake 1.14
* gettext 0.19.6
* libdbus 1.5.12
* libxml2 2.9.2
* pkg-config 0.28 (or pkgconf)
* Python 3.5
=== configure script ===**Deprecated schemas have been dropped.** The `validate-with` attribute of the `cib` XML element may no longer be omitted or set to the deprecated values `pacemaker-0.6`, `transitional-0.6`, `pacemaker-0.7`, `pacemaker-1.1`, `pacemaker-next`, or any unknown value. Upgrades will not succeed unless the CIB has a supported value for `validate-with` //before// the upgrade, so ensure one is set before upgrading any node in the cluster. (Disabling validation by setting `validate-with` to `none` remains allowed and deprecated.)
**Drop support** for the following options: **Schema names are now case-sensitive.** The `validate-with` attribute of the `cib` XML element must now match the schema file names by case (all lowercase). Upgrades will not succeed unless the CIB has a supported value for `validate-with` //before// the upgrade, so ensure one is set before upgrading any node in the cluster.
* `--enable-legacy-links` //(deprecated in Pacemaker 2.1.0)//
* `--enable-compat-2.0` //(introduced in 2.1.0 explicitly for the 2.1 series only)//
* `--enable-upstart` //(deprecated in Pacemaker 2.1.0)//Support for the following deprecated (and mostly undocumented) features has been dropped. Any uses in existing configurations will be automatically and silently converted to current syntax when possible. They will not be allowed in new configurations, or in existing ones after running `cibadmin --upgrade`.
* `--with-nagios` //(deprecated in Pacemaker 2.1.6)//
=== RPMs ===
* Drop support for setting the `RPMDEST` Makefile variable to `toplevel` (the default of `subtree` and explicit paths will still be supported)
* Drop support for the `--with-doc` and `--without-doc` spec file options (documentation will always be built)
* The `--with-stonithd` and `--without-stonithd` spec file option will be renamed to something more descriptive (it enables support for Linux-HA fencing agents)
== Configuration Information Base (CIB) XML changes ==
XML syntax will now be strictly interpreted.* cluster options: `crmd-finalization-timeout`, Previously`crmd-integration-timeout`, some simple XML syntax errors would be ignored.
The following will be automatically and silently dropped or converted to current syntax when used in existing configurations`crmd-transition-delay`, but disallowed in new ones (as well as existing ones after running `cibadmin --upgrade`).
* The schema will have stricter error checking:`remove-after-stop`, and the `stonith-action` cluster option set to `poweroff`
** Clones using non-OCF resource agents and the `globally-unique` meta-attribute set to `true` will be considered an error and ignored (currently, a warning is logged but the resource is allowed)nodes: `type` set to `ping`
** Invalid topology levels will be disallowed in the CIB rather than wait until they are rejected by the fencer (valid levels are 1 through 9)`primitive` resources: `nagios` or `upstart` class
** The value of an `acl_target` element's `id` attribute must be of the XML ID type (noncompliant names will be given an auto-generated ID and moved to the `name` attribute`master` resources (use `clone` resource with `promotable` meta-attribute set to `true` instead)
** Empty groups will be ignored (currently they can have some effect in constraints)
* Drop support for deprecated (and mostly undocumented) features:`bundle` resources: using `rkt` to launch containers; `masters` meta-attribute
** `nagios` class resources** operation options: `can-fail`, `can_fail`, and `role_after_failure`
** `upstart` class resources** resource options: `restart-type`
** `master` resources (they will be converted to `clone` elements with the `promotable` meta-attribute set to `true`)** rules: `moon` in `date_spec` elements
** `remove-after-stop` cluster optionconstraints: `lifetime` elements in any constraint
* Error checking is stricter (most of these errors are possible only with schema validation disabled, and so will not affect the vast majority of users)
** `moon` in `date_spec` elements in rulesInvalid fencing topology levels are now disallowed by the schema (rather than waiting until they are rejected by the fencer; valid levels are 1 through 9)
** The `0.6`, `0.7`, and `pacemaker-next` CIB schemas (used as the value of the `validate-with` CIB property)Resource history entries with an invalid `rc-code` (which should be possible only with manual mis-editing or a bug) will now be ignored rather than treated as action failures
** Nodes with `type` set to `ping`Location constraints with an invalid `score`, `boolean-op`, or `role`, colocation constraints with an invalid `score`, `rsc-role`, or `with-rsc-role`, and ticket constraints with an invalid `rsc-role` are now ignored (previously, the default value would be used).
** `ordering** An `nvpair` element with an invalid `id-ref` attribute of resource sets in colocation constraintsis now ignored even if it has a `name` and/or `value` attribute as well
** `can-fail` (or `can_fail`) resource meta-attribute (if possible, it will converted to `on-fail` operation meta-attributes set to `ignore`)An `nvpair` element with a valid `id-ref` attribute and also `name` and/or `value` attributes now ignores the `name` and `value` attributes
** `restart-type` resource meta-attributeIf a `cluster_property_set`, `instance_attributes`, `meta_attributes`, or `utilization` element contains multiple top-level rules, only the first will now be interpreted
** `role-after-failure` resource meta-attributeA `node` with an invalid `type` is now ignored (previously, they were treated as `ping` nodes, contributing to quorum but unable to run resources)
** `score` in an ordering constraint (if possible, a value of 0 will be transformed to a `kind` of `optional`)** Any `instance_attributes` in `rsc_defaults` is now ignored
* Rule syntax is more strictly interpreted
** `stonith-action` cluster option set to `poweroff` (it will be transformed to `off`)A date expression is now treated as not passing if it is missing an `id`; contains an invalid `operation`; contains a `date_spec` or `duration` with a missing `id` or an attribute with an invalid range; has an `operation` of `in_range`, `gt`, or `lt` with an invalid or missing `start` or `end`; or uses `date_spec` without a `date_spec` element
** `collocated` and `ordered` group options (if possible,** An attribute expression is now treated as not passing if it is missing an `id`; has an invalid `value-source` or `type`; a value of `false` will be transformed to resource sets in a colocationor has `value` missing when it is required or ordering constraint instead)present when it is unused
** `lifetime` elements inside a constraint (any rules they contain will be left inside the constraint directly)
* Rules will now be more strictly interpreted, with the following options causing an error rather than being silently ignored where they aren't relevant:A resource expression is now treated as not passing if it is missing an `id`
** `op_** An operation expression` in a rule anywhere other than `op_defaults` is now treated as not passing if it is missing an `id` or `interval` or has an invalid `interval`
** `rsc_expression` in a rule anywhere other than `rsc_defaults` or `op_defaults`** A rule is now treated as not passing if it is missing an `id` or has an invalid `boolean-op`
** `score` or `score-attribute` in a rule anywhere other than a location constraint** An rule with a `boolean-op` of `or` with no conditions is now properly treated as passing.
** The schema will no longer allow rule syntax where it is unused, including: `op_expression` in a rule anywhere other than `op_defaults`; `rsc_expression` in a rule anywhere other than `rsc_defaults` or `op_defaults`; `score` or `score-attribute` in a rule anywhere other than a location constraint; `value-source` in a rule `expression` anywhere other than a location constraint; `monthdays`, `weekdays`, `weekyears`, or `moon` in a `duration`; `yearsdays` anywhere (the correct spelling `yeardays` is allowed only in a `time_spec`); an invalid `role` name in any `rule`
* Changes in defaults
** `monthdays`, `weekdays`, `weekyears`, or `moon` in a `duraaction` configured as a fence device parameter is now ignored rather than treated as a default fencing action`
** `yearsdays` anywhere (`yeardays` is allowed only in a `time_spec`)** The `concurrent-fencing` cluster option now defaults to true and is deprecated
** An invalid `role` name in any `rule`The `globally-unique` clone option now defaults to `true` when `clone-node-max` is greater than 1
* Location constraints may now have at most a single top-level rule (previously, they could have any number; use separate location constraints for each top-level rule instead).
* `nvpair` elements must now contain a `value` attribute (it is no longer optional).
* If an `nvpair` element has an `id-ref` attribute, it can no longer also have a `name` attribute to override the referenced element.
* Pacemaker has always allowed custom names to be configured in cluster options and resource options, which are ignored by Pacemaker but can be used by users' own tooling. The user has to take care not to conflict with any option names that Pacemaker uses. As of Pacemaker 2.0.0, when support for certain deprecated options was dropped, the schema enforced that users could not use those names as custom names, to prevent misunderstandings. Those restrictions have now been dropped, and if those names are configured, they will be ignored as with any other custom name.