[Linux-cluster] notes on clustering NIS master (ypserv)

brem belguebli brem.belguebli at gmail.com
Thu May 20 23:04:36 UTC 2010


Interesting.

But why bothering with making your ypserv clustered, as, clients, when
configured in non broadcast or ypset mode
(Unix : /var/lib/yp/binding/ypservers, Linux: /etc/yp.conf) are able to
automatically and almost instantaneously switch to a slave server.

With this kind of setup, which is the most common I have seen in a lot
of companies (managing thousands of Unix/Linux servers), the only thing
to care about is to promote a slave server by regenerating the maps by
changing the Makefile and run a single make.

    
On Thu, 2010-05-20 at 13:48 -0400, bergman at merctech.com wrote:
> Here are some brief notes on using RHCS to cluster an NIS (ypserv) master. 
> These are intended mainly as search-engine fodder, in case anyone is looking 
> for info on the same process in the future.
> 
> NIS was written long, long before HA clustering. The NIS utilities
> make assumptions about hostnames that conflict badly with RHCS. In
> particular, the use of a virtual IP (for example, vdirectory) to separate
> the NIS server from a single physical machine breaks because the name
> returned by gethostbyname (for example, "server1" or "server2") differs
> from the virtual server. There's no way to instruct the NIS processes (yperv, 
> yppush, etc.) to communicate over specified interfaces.
> 
> This difference between the VIP name that should be associated with the NIS
> service and the name of the physical server comes up in several places:
> 
> [1] When running "ypinit -m" to initialize the NIS master,
>     the hostname of the master server is queried by the yphelper
>     program within /var/yp/Makefile and that value is encoded into the
>     DBM map files. This means that, for example, "server1" would be encoded
>     in the NIS maps. If the NIS (ypserv) process fails over to the other 
>     cluster node ("server2"), then NIS clients will refuse to accept updates,
>     since they appear to come from the machine "server2", even if the VIP
>     for the directory service ("vdirectory") also fails over to server2.
> 
>     This can be circumvented by editing the /var/yp/Makefile to avoid using
>     yphelper, but to instead specify the name of the virtual server
>     ("vdirectory"), as in changing from:
>     	DBLOAD = $(YPBINDIR)/makedbm -c -m `$(YPBINDIR)/yphelper --hostname`
>     to:
>     	DBLOAD = $(YPBINDIR)/makedbm -c -m vdirectory.fqdn
>    
> 
> [2] The yppush program compares the value of gethostbyname on the server to
>     the name of the master server encoded in the DBM files. Since
>     they will not be equal, maps will not be pushed to clients. The
>     /var/yp/Makefile can be set not to push maps to clients (which
>     is actually the default), and NIS clients can poll the server to
>     retrieve maps.
> 
>     In our case, I created a "ypxfr-all" script to enumerate and transfer maps
>     using ypxfr, and modified /var/yp/Makefile to connect to each NIS slave
>     and trigger the slave to request maps from the master.
> 
> 
> 
> I hope this helps someone.
> 
> Mark
> 
> 
> 
> --
> Linux-cluster mailing list
> Linux-cluster at redhat.com
> https://www.redhat.com/mailman/listinfo/linux-cluster





More information about the Linux-cluster mailing list