[pve-devel] [RFC cluster 4/6] corosync: allow to set link priorities

Fabian Grünbichler f.gruenbichler at proxmox.com
Wed May 29 10:45:21 CEST 2019


On Tue, May 28, 2019 at 06:33:11PM +0200, Thomas Lamprecht wrote:
> For now in passive mode, a link with a higher value has a lower
> priority. If the current active link fails the one with the next
> higher priority will take over.
> 
> Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
> ---
>  data/PVE/Cluster.pm  |  7 +++++++
>  data/PVE/Corosync.pm | 11 +++++++++--
>  2 files changed, 16 insertions(+), 2 deletions(-)
> 
> diff --git a/data/PVE/Cluster.pm b/data/PVE/Cluster.pm
> index ddb6d2d..8e611d9 100644
> --- a/data/PVE/Cluster.pm
> +++ b/data/PVE/Cluster.pm
> @@ -1853,6 +1853,13 @@ my $corosync_link_format = {
>  	format_description => 'IP',
>  	default => 'same as address',
>      },
> +    priority => {
> +	optional => 1,
> +	type => 'integer',
> +	minimum => 0,

maximum => 7 (since there can be at most 8 links, and thus more
priorities don't make sense)

or

maximum => 255 (since it's a uint8 internally in knet, and anything
bigger gets rejected by Corosync's config parser)

> +	default => 0,
> +	description => "The priority for the link when knet is used in 'passive' mode. Lower value means higher priority.",
> +    },
>  };
>  my $corosync_link_desc = {
>      type => 'string', format => $corosync_link_format,
> diff --git a/data/PVE/Corosync.pm b/data/PVE/Corosync.pm
> index 8752c64..64f0f7c 100644
> --- a/data/PVE/Corosync.pm
> +++ b/data/PVE/Corosync.pm
> @@ -247,16 +247,23 @@ sub create_conf {
>      my $link1 = PVE::Cluster::parse_corosync_link($param{link1});
>      $link1->{bindnet} //= $link1->{address};
>  
> +    my $totem = $conf->{totem};
> +
> +    $totem->{interface}->{0}->{knet_link_priority} = $link0->{priority}
> +	if defined($link0->{priority});
> +
>      if ($link1->{bindnet}) {
>  	die "link 1 addresses must be from same IP family as link 0!\n"
>  	    if $use_ipv6 != ip_is_ipv6($link1->{address}) ||
>  	       $use_ipv6 != ip_is_ipv6($link1->{bindnet});
>  
> -	$conf->{totem}->{interface}->{1} = {
> +	$totem->{interface}->{1} = {
>  	    bindnetaddr => $link1->{bindnet},
>  	    linknumber => 1,
>  	};
> -	$conf->{totem}->{link_mode} = 'passive';
> +	$totem->{link_mode} = 'passive';
> +	$totem->{interface}->{1}->{knet_link_priority} = $link1->{priority}
> +	    if defined($link1->{priority});
>  	$conf->{nodelist}->{node}->{$nodename}->{ring1_addr} = $link1->{address};
>      }
>  
> -- 
> 2.20.1
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel at pve.proxmox.com
> https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel




More information about the pve-devel mailing list