[Pacemaker] RFC: Any interesting in 2.0.0 betas?

Vladislav Bogdanov bubble at hoster-ok.com
Thu Nov 1 01:49:00 EDT 2012


01.11.2012 03:28, Andrew Beekhof wrote:
> On Tue, Oct 30, 2012 at 5:13 PM, Vladislav Bogdanov
> <bubble at hoster-ok.com> wrote:
>> 30.10.2012 04:27, Andrew Beekhof wrote:
>>> On reflection, I think making this configurable is going to cause more
>>> trouble than its worth.
>>> Any sysconfig mismatch between the nodes would result in major breakage.
>>>
>>> We need to pick one way and make it the default - if people want/need
>>> anything else, they need to use the corosync node list.
>>> For consistency with older releases, I think your original "strip
>>> everything" patch is the best way to go.
>>
>> That is OK for me as I currently use it.
>>
>> Although I'd ask you to think again about stripping "known" domain name
>> part from resolver-provided FQDN if uname and FQDN of local node match
>> at the beginning.
> 
> Again though, uname() only works for the current node.
> You can't know what the other nodes are using - and by extension if
> you should strip their name as well.

But you can guess it, as admins usually name nodes the same way. If not
- that is problem of admins.

> 
>> Something says me this would provide better backwards
>> compatibility, while visible result for the discussed use-case will be
>> exactly the same. I know at least one cluster (not mine) which will be
>> broken if just to strip everything at the first dot - it uses long
>> hostnames (and this is the default for a fresh-installed redhat/fedora
>> if you enter FQDN in the anaconda prompt when installing a node).
> 
> How do they configure corosync.conf / cluster.conf though?

That is for corosync1. But when/if they decide to migrate to corosync2 -
they will have the broken cluster (because of location constraints do
not work too).

> The stripping only applies when people put IP addresses in there (or
> use multicast without a node list).
> 
> If people put node names we will use them unmodified.
> Adding a node list is recommended by upstream corosync, so it makes
> sense for us to use it as the official way to use a non-default naming
> scheme.
> 
>>
>> Also, way I propose provides better flexibility
> 
> It feels more fragile to me.  Its going to break really badly if some
> nodes use FQDN and some dont.

That would be the side effect of having zoo in network instead of
well-defined structure. Not your problem.

Well, that should not work for 1.1.8 too...

And, does that work for corosync1?

> 
>> - assume that one sets
>> hostname using two lexems from FQDN - node01.cluster01 (or n01.c01)
>> instead of just node01 or n01. FQDN itself could be
>> n01.c01.some.location.domain.com. That could be done just to add safety
>> for shell actions - hostname is usually shown in the shell prompt (I
>> recall many cases when I issued command on a different host from I
>> thought I do it on). The same applies to cluster commands. If visible
>> nodenames have some (administrator controlled) hints, cluster could be
>> safer to operate. And this way should not cause any breakage - cluster
>> node are usually named the same way and no additional configuration is
>> involved.
>>
>> I can develop patch for that if you want. It would introduce one global
>> var (domain name), and will have one extra call to uname() and three or
>> less calls to string-handling functions.
>>
>>>
>>> On Fri, Oct 26, 2012 at 9:57 PM, Vladislav Bogdanov
>>> <bubble at hoster-ok.com> wrote:
>>>> 26.10.2012 13:38, Vladislav Bogdanov wrote:
>>>>> 26.10.2012 12:43, Andrew Beekhof wrote:
>>>>> ...
>>>>>>> May be also set it forcibly to uname if uname contains full lexem found
>>>>>>> in dns name?
>>>>>>
>>>>>> Run that past me again?
>>>>>
>>>>> I mean that if ip address resolves to fqdn, and that fqdn begins with
>>>>> what uname call returns (so both node itself and DNS agree on a node
>>>>> name for a node with give IP address), then that value from uname could
>>>>> be safely used directly.
>>>>
>>>> Ah, that is for local node only...
>>>> For remote nodes I would strip FQDN part which begins right at that dot
>>>> where FQDN of local node and its uname differ.
>>>>
>>>> my_ring_address == 10.0.0.XXX
>>>> my_uname() == "host232"
>>>> getaddinfo(my_ring_address) == host232.some.very.long.domain.name.com.
>>>>
>>>> my_node_name = "host232"
>>>> my_domain = "some.very.long.domain.name.com."
>>>>
>>>> his_ring_address == 10.0.0.YYY
>>>> getaddinfo(his_ring_address) == host238.some.very.long.domain.name.com.
>>>>
>>>> strstr("host238.some.very.long.domain.name.com.", my_domain) != NULL
>>>>
>>>> his_node_name = "host238"
>>>>
>>>>
>>>>>
>>>>> To illustrate:
>>>>> ring_address == 10.0.0.XXX
>>>>> uname() == "host232"
>>>>> getaddinfo(ring_address) == host232.some.very.long.domain.name.com.
>>>>>
>>>>> then "host232" could be safely used as a node name (but not "host23" and
>>>>> not "host232.s")
>>>>>
>>>>> Of course, it would be even more safe if gentnameinfo("host232") or
>>>>> getnameinfo("host232.some.very.long.domain.name.com.") returns
>>>>> 10.0.0.XXX, so additional check may be introduced.
>>>>>
>>>>> That is normal for "correct" static DNS setups, where PTR record is
>>>>> consistent with what node has configured as a hostname internally.
>>>>>
>>>>> That is also what I have for DHCP-based static address assignments
>>>>> (central configuration place for a whole cluster network), where node
>>>>> usually sets (or at least can be configured to set) its name to what
>>>>> DHCP server says. And DHCP server is usually set up to update A and PTR
>>>>> records in DNS zone.
>>>>>
>>>>> Also that should work correctly when FQDN is used as an uname (long
>>>>> hostname), like redhat setups usually do.
>>>>>
>>>>> Anyways, if FQDN does not begin with uname, then DNS info should be used
>>>>> for node name (like it is now), possibly with that "strip" hack. That
>>>>> could be useful for multi-ring setups I think.
>>>>>
>>>>> Vladislav
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Pacemaker mailing list: Pacemaker at oss.clusterlabs.org
>>>>> http://oss.clusterlabs.org/mailman/listinfo/pacemaker
>>>>>
>>>>> Project Home: http://www.clusterlabs.org
>>>>> Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf
>>>>> Bugs: http://bugs.clusterlabs.org
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Pacemaker mailing list: Pacemaker at oss.clusterlabs.org
>>>> http://oss.clusterlabs.org/mailman/listinfo/pacemaker
>>>>
>>>> Project Home: http://www.clusterlabs.org
>>>> Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf
>>>> Bugs: http://bugs.clusterlabs.org
>>>
>>> _______________________________________________
>>> Pacemaker mailing list: Pacemaker at oss.clusterlabs.org
>>> http://oss.clusterlabs.org/mailman/listinfo/pacemaker
>>>
>>> Project Home: http://www.clusterlabs.org
>>> Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf
>>> Bugs: http://bugs.clusterlabs.org
>>>
>>
>>
>> _______________________________________________
>> Pacemaker mailing list: Pacemaker at oss.clusterlabs.org
>> http://oss.clusterlabs.org/mailman/listinfo/pacemaker
>>
>> Project Home: http://www.clusterlabs.org
>> Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf
>> Bugs: http://bugs.clusterlabs.org
> 
> _______________________________________________
> Pacemaker mailing list: Pacemaker at oss.clusterlabs.org
> http://oss.clusterlabs.org/mailman/listinfo/pacemaker
> 
> Project Home: http://www.clusterlabs.org
> Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf
> Bugs: http://bugs.clusterlabs.org
> 





More information about the Pacemaker mailing list