[Linux-cluster] Higher Grained Definition ofIP AddressAssignments

Kaloyan Kovachev kkovachev at varna.net
Fri Jun 18 10:50:38 UTC 2010


On Thu, 17 Jun 2010 14:59:59 -0500, Dustin Henry Offutt
<dhoffutt at gmail.com> wrote:
> Believe this issue has been resolved by altering
/usr/share/cluster/ip.sh.
> 
> The resulting script has added new XML for a new "device" parameter.
> 
> New variable 'device' is passed to the ip_op function and then to
functions
> ipv4 and ipv6. The ipv4 and ipv6 function iterate through all network
> devices and, upon finding a device with a configuration similar to the
IP
> needing to be assigned, would assign the IP there, which caused all the
IPs
> to bunch up on one device. The added logic here will go through the
> iteration, and if there is a "device" variable requested it is matched
> against the device name in the function.
> 
> Is there some way to get this put into the Cluster Suite officially so
that
> it may be supported?
> 
> Thank you...
> 
> (diff -cB)

You should also modify cluster.rng and add 'device' as an optional
attribute to the 'ip' element (around line 1010) or else the config won't
validate

why not use OSCF_RESKEY_device inside ipv4/6 directly, instead of passing
it to ip_op?
  ip_op <family> <operation> <address> <device> [quiet]
... if device is empty, but there is quiet present it will be accepted as
device

> 
> *** ip.sh.original    2010-06-17 10:43:00.000000000 -0500
> --- ip.sh    2010-06-17 14:42:26.000000000 -0500
> ***************
> *** 86,91 ****
> --- 86,104 ----
>               <content type="string"/>
>           </parameter>
> 
> +         <parameter name="device">
> +             <longdesc lang="en">
> +                 Specify network device to bring this
> +                 IP up on. Optional. Example: "eth0"
> +             </longdesc>
> +
> +             <shortdesc lang="en">
> +                 Network device
> +             </shortdesc>
> +
> +             <content type="string" default="auto"/>
> +         </parameter>
> +
>           <parameter name="monitor_link">
>               <longdesc lang="en">
>                   Enabling this causes the status check to fail if
> ***************
> *** 571,576 ****
> --- 583,589 ----
>       declare addr_exp=$(ipv6_expand $addr)
> 
>       while read dev ifaddr_exp maskbits; do
> +             if ([ -z $3 ] || [ "$3" = "auto" ]) || [ "$dev" = "$3" ];
> then
>               if [ -z "$dev" ]; then
>                   continue
>           fi
> ***************
> *** 636,641 ****
> --- 649,655 ----
>           fi
> 
>           return 0
> +             fi
>       done < <(ipv6_list_interfaces)
> 
>       return 1
> ***************
> *** 651,656 ****
> --- 664,670 ----
>       declare addr=$2
> 
>       while read dev ifaddr maskbits; do
> +             if ([ -z $3 ] || [ "$3" = "auto" ]) || [ "$dev" = "$3" ];
> then
>               if [ -z "$dev" ]; then
>                   continue
>           fi
> ***************
> *** 715,720 ****
> --- 729,735 ----
>           fi
> 
>           return 0
> +             fi
>       done  < <(ipv4_list_interfaces)
> 
>       return 1
> ***************
> *** 813,819 ****
> 
>   #
>   # Usage:
> ! # ip_op <family> <operation> <address> [quiet]
>   #
>   ip_op()
>   {
> --- 827,833 ----
> 
>   #
>   # Usage:
> ! # ip_op <family> <operation> <address> <device> [quiet]
>   #
>   ip_op()
>   {
> ***************
> *** 866,872 ****
> 
>       case $1 in
>       inet)
> !         ipv4 $2 $3
>           return $?
>           ;;
>       inet6)
> --- 880,886 ----
> 
>       case $1 in
>       inet)
> !         ipv4 $2 $3 $4
>           return $?
>           ;;
>       inet6)
> ***************
> *** 923,929 ****
>           ocf_log debug "${OCF_RESKEY_address} already configured"
>           exit 0
>       fi
> !     ip_op ${OCF_RESKEY_family} add ${OCF_RESKEY_address}
>       if [ $? -ne 0 ]; then
>           exit $OCF_ERR_GENERIC
>       fi
> --- 937,943 ----
>           ocf_log debug "${OCF_RESKEY_address} already configured"
>           exit 0
>       fi
> !     ip_op ${OCF_RESKEY_family} add ${OCF_RESKEY_address}
> ${OCF_RESKEY_device}
>       if [ $? -ne 0 ]; then
>           exit $OCF_ERR_GENERIC
>       fi
> 
> 
> On Thu, Jun 17, 2010 at 9:00 AM, Dustin Henry Offutt
> <dhoffutt at gmail.com>wrote:
> 
>> Using the node's IPs would not work. The software being made HA must
keep
>> its IPs the same no matter what node its running on. Could script an IP
>> change, but then we're putting IP logic and monitoring in two places:
The
>> cluster software and in our custom scripting. That's not a clean
solution
>> and is rather going backwards.
>>
>> We may as well just do our own HA if we were starting down that road.
>> When
>> we sell our product the customer must also purchase Redhat Support for
>> their
>> OS and cluster software. I would think Redhat should pony up to get
this
>> done as the product we are selling is selling well and inducing Redhat
>> Support sales.
>>
>> An official feature request has been submitted to Redhat.
>>
>> Also, I'm working on the /usr/share/cluster/ip.sh script myself to add
>> the
>> feature. Hopefully it works out.
>>
>>
>>
>> On Thu, Jun 17, 2010 at 2:09 AM, Kit Gerrits <kitgerrits at gmail.com>
>> wrote:
>>
>>>  In that case, might it be easier to simply use the host IP adresses
and
>>> not the cluster IP's?
>>> (the application will need to handle up/down events itself)
>>>
>>>
>>> Regards,
>>>
>>> Kit
>>>
>>>  ------------------------------
>>> *From:* linux-cluster-bounces at redhat.com [mailto:
>>> linux-cluster-bounces at redhat.com] *On Behalf Of *Dustin Henry Offutt
>>> *Sent:* dinsdag 15 juni 2010 14:40
>>> *To:* linux clustering
>>> *Subject:* Re: [Linux-cluster] Higher Grained Definition ofIP
>>> AddressAssignments
>>>
>>> I've spent the past year architecting an HA cluster with RHCS and it's
>>> working wonderfully. I have not seen anything superior.
>>>
>>> Due to a new customer-driven feature of our software, we need to add
the
>>> ability for a cluster service/resource group to have up to eight
>>> distinct
>>> IPs on one particular network due to the software being made highly
>>> available via RHCS performing its own load balancing. Placing the load
>>> balancing elsewhere is not an option due to the nature of the product.
>>>
>>> Regarding "OCF_RESKEY_," will google more on this and appreciate the
>>> tip.
>>> Must work this out some way.
>>>
>>> ~ Dusty
>>>
>>> C. Handel wrote:
>>>
>>> [define interface of cluster controlled ip resource]
>>>
>>>
>>>
>>> /usr/share/cluster/ip.sh appears to perform the link-monitoring in the
>>>
>>>
>>> This is a resource agent script. What attributes a resource agent
>>> accepts can be found by calling it with the option meta-data
>>>
>>> /usr/share/cluster/ip.sh meta-data
>>>
>>> There is no attribute interface. The agent will add the additional
>>> address to the first interface that is in the same subnet.
>>>
>>> You could edit the script and add a parameter interface yourself. Add
>>> a new parameter into the XML at the beginning and access it in the
>>> script with OCF_RESKEY_...
>>>
>>> I don't understand what you are trying to do. If you are only handling
>>> network interfaces as services, then rhcs is most likely the wrong
>>> tool. If you would explain your goal we could probably suggest other
>>> solutions.
>>>
>>> Greetings
>>>    Christoph
>>>
>>> --
>>> Linux-cluster mailing
>>>
listLinux-cluster at redhat.comhttps://www.redhat.com/mailman/listinfo/linux-cluster
>>>
>>>
>>> No virus found in this incoming message.
>>> Checked by AVG - www.avg.com
>>> Version: 9.0.829 / Virus Database: 271.1.1/2939 - Release Date:
06/15/10
>>> 08:35:00
>>>
>>>
>>> --
>>> 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