[Linux-cluster] Higher Grained Definition ofIP AddressAssignments

Dustin Henry Offutt dhoffutt at gmail.com
Thu Jun 17 19:59:59 UTC 2010


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)

*** 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
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/linux-cluster/attachments/20100617/ab30f812/attachment.htm>


More information about the Linux-cluster mailing list