mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-10-31 19:32:31 +00:00 
			
		
		
		
	Merge pull request #2534 from gurevichmark/bonding_doc
Update bonding configuration instructions
This commit is contained in:
		| @@ -1,121 +1,10 @@ | ||||
| Advanced Networking Configuration | ||||
| ================================= | ||||
|  | ||||
| The ``confignetwork`` postscript can be used to configure the network interfaces on the compute nodes to support VLAN, BONDs, and BRIDGES. In order to use the ``confignetwork`` postscript, the following attributes must be configured for the node in the ``nics`` table: | ||||
|  | ||||
|     * ``nicips`` | ||||
|     * ``nictypes`` | ||||
|     * ``nicnetworks`` | ||||
|     * ``nicdevices`` - resolves the relationship among the physical network intereface devices | ||||
|  | ||||
| The following example set the xCAT properties for compute node ``cn1`` to achieve the following network configuration using the ``confignetwork`` postscript: | ||||
|  | ||||
|   * Compute node ``cn1`` has two physical NICs: eth2 and eth3   | ||||
|   * Bond eth2 and eth3 as ``bond0``  | ||||
|   * From ``bond0``, create 2 VLANs: ``bond0.1`` and ``bond0.2`` | ||||
|   * Make bridge ``br1`` using ``bond0.1`` with IP (10.0.0.1) | ||||
|   * Make bridge ``br2`` using ``bond0.2`` with IP (20.0.0.1) | ||||
|  | ||||
| Define attributes in the ``nics`` table | ||||
| --------------------------------------- | ||||
|  | ||||
| #. Using the ``mkdef`` or ``chdef`` commands   | ||||
|  | ||||
|     a. Compute node ``cn1`` has two physical NICs: ``eth2`` and ``eth3`` :: | ||||
|   | ||||
|         chdef cn1 nictypes.eth2=ethernet nictypes.eth3=ethernet | ||||
|     | ||||
|     b. Define ``bond0`` and bond ``eth2`` and ``eth3`` as ``bond0`` :: | ||||
|  | ||||
|         chdef cn1 nictypes.bond0=bond \ | ||||
|                   nicdevices.bond0="eth2|eth3" | ||||
|  | ||||
|     c. Fom ``bond0``, create 2 VLANs: ``bond0.1`` and ``bond0.2`` :: | ||||
|      | ||||
|         chdef cn1 nictypes.bond0.1=vlan \ | ||||
|                   nictypes.bond0.2=vlan \ | ||||
|                   nicdevices.bond0.1=bond0 \ | ||||
|                   nicdevices.bond0.2=bond0 | ||||
|  | ||||
|     d. Create bridge ``br1`` using ``bond0.1`` with IP (10.0.0.1) :: | ||||
|  | ||||
|         chdef cn1 nictypes.br1=bridge \ | ||||
|                   nicdevices.br1=bond0.1 \ | ||||
|                   nicips.br1=10.0.0.1 \ | ||||
|                   nicnetworks.br1="net10" | ||||
|  | ||||
|     e. Create bridge ``br2`` using ``bond0.2`` with IP (20.0.0.1) :: | ||||
|  | ||||
|         chdef cn1 nictypes.br2=bridge \ | ||||
|                   nicdevices.br2=bond0.2 \ | ||||
|                   nicips.br2=20.0.0.1 \ | ||||
|                   nicnetworks.br2="net20" | ||||
|  | ||||
| #. Using an xCAT stanza file | ||||
|  | ||||
|     - Prepare a stanza file ``<filename>.stanza`` with content similiar to the following: :: | ||||
|  | ||||
|         # <xCAT data object stanza file> | ||||
|         cn1: | ||||
|           objtype=node | ||||
|           arch=x86_64 | ||||
|           groups=kvm,vm,all | ||||
|           nicdevices.br1=bond0.1  | ||||
|           nicdevices.br2=bond0.2  | ||||
|           nicdevices.bond0.1=bond0  | ||||
|           nicdevices.bond0.2=bond0  | ||||
|           nicdevices.bond0=eth2|eth3 | ||||
|           nictypes.eth2=ethernet  | ||||
|           nictypes.eth3=ethernet  | ||||
|           nictypes.bond0=bond  | ||||
|           nictypes.bond0.1=vlan  | ||||
|           nictypes.bond0.2=vlan  | ||||
|           nictypes.br1=bridge  | ||||
|           nictypes.br2=bridge  | ||||
|           nicips.br1=10.0.0.1  | ||||
|           nicips.br2=20.0.0.1  | ||||
|           nicnetworks.br1=net10 | ||||
|           nicnetworks.br2=net20 | ||||
|  | ||||
|     - Using the ``mkdef -z`` option, define the stanza file to xCAT: :: | ||||
|  | ||||
|         cat <filename>.stanza | mkdef -z | ||||
|  | ||||
| #. Using ``tabedit`` to edit the ``nics`` database table directly | ||||
|  | ||||
|     The ``tabedit`` command opens the specified xCAT database table in a ``vi`` like editor and allows the user to edit any text and write the changes back to the database table. | ||||
|  | ||||
|     After changing the content of the ``nics`` table, here is the result from ``tabdump nics`` :: | ||||
|  | ||||
|         # tabdump nics | ||||
|         #node,nicips,nichostnamesuffixes,nichostnameprefixes,nictypes,niccustomscripts,nicnetworks,nicaliases,nicextraparams,nicdevices,comments,disable | ||||
|         "cn1","br1!10.0.0.1,br2!20.0.0.1",,,"br1!bridge,eth2!ethernet,eth3!ethernet,bond0.2!vlan,bond0!bond,br2!bridge,bond0.1!vlan",,"br1!net10,br2!net20",,,"br1!bond0.1,bond0!eth2|eth3,bond0.2!bond0,bond0.1!bond0,br2!bond0.2",, | ||||
|  | ||||
| Add network object into the networks table | ||||
| ------------------------------------------ | ||||
|  | ||||
| The ``nicnetworks`` attribute only defines the nic that uses the IP address. | ||||
| Other information about the network should be defined in the ``networks`` table. | ||||
|  | ||||
| Use the ``chdef`` command to add/modify the networks in the ``networks`` table :: | ||||
|  | ||||
|     chdef -t network net10 net=10.0.0.0 mask=255.0.0.0 mgtifname=eth0 | ||||
|     chdef -t network net20 net=20.0.0.0 mask=255.0.0.0 mgtifname=eth1 | ||||
|  | ||||
| Add ``confignetwork`` into the node's postscripts list | ||||
| ------------------------------------------------------ | ||||
|  | ||||
| Using below command to add ``confignetwork`` into the node's postscripts list :: | ||||
|  | ||||
|     chdef cn1 -p postscripts=confignetwork | ||||
|  | ||||
|  | ||||
| During OS deployment on compute node, ``confignetwork`` will be run in postscript.  | ||||
| If the compute node has OS, use ``updatenode`` command to run ``confignetwork`` :: | ||||
|  | ||||
|     updatenode cn1 -P confignetwork | ||||
|  | ||||
|  | ||||
| Advanced Networking Configuration - confignetwork | ||||
| ================================================= | ||||
|  | ||||
| **Note:** ``confignetwork`` postscript is only supported on RHEL releases. | ||||
|  | ||||
| .. toctree:: | ||||
|       :maxdepth: 2 | ||||
|  | ||||
| .. include:: ../../../common/deployment/cfg_network_vlan.rst | ||||
| .. include:: ../../../common/deployment/cfg_network_bond.rst | ||||
|   | ||||
| @@ -0,0 +1,58 @@ | ||||
| Configure Two Bonded Adapters | ||||
| ----------------------------- | ||||
|  | ||||
| The following example set the xCAT properties for compute node ``cn1`` to create: | ||||
|  | ||||
|   * Compute node ``cn1`` has two physical NICs: eth2 and eth3   | ||||
|   * Bond eth2 and eth3 as ``bond0``  | ||||
|   * Assign ip ``40.0.0.1`` to the bonded interface ``bond0``  | ||||
|  | ||||
| Define attributes in the ``nics`` table | ||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
|  | ||||
|  | ||||
| #. Using the ``mkdef`` or ``chdef`` commands   | ||||
|  | ||||
|     a. Compute node ``cn1`` has two physical NICs: ``eth2`` and ``eth3`` :: | ||||
|   | ||||
|         chdef cn1 nictypes.eth2=ethernet nictypes.eth3=ethernet | ||||
|     | ||||
|     b. Define ``bond0`` and bond ``eth2`` and ``eth3`` as ``bond0`` :: | ||||
|  | ||||
|         chdef cn1 nictypes.bond0=bond nicdevices.bond0="eth2|eth3" | ||||
|         chdef cn1 nicips.bond0=40.0.0.1 | ||||
|  | ||||
| Add network object into the networks table | ||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
|  | ||||
| Use the ``chdef`` command to add/modify the networks in the ``networks`` table :: | ||||
|  | ||||
|     chdef -t network net40 net=40.0.0.0 mask=255.0.0.0 | ||||
|     chdef cn1 nicnetworks.bond0=net40 | ||||
|  | ||||
| Add ``confignetwork`` into the node's postscripts list | ||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
|  | ||||
| Use command below to add ``confignetwork`` into the node's postscripts list :: | ||||
|  | ||||
|     chdef cn1 -p postscripts=confignetwork | ||||
|  | ||||
|  | ||||
| During OS deployment on compute node, ``confignetwork`` postscript will be executed.  | ||||
| If the compute node is already running, use ``updatenode`` command to run ``confignetwork`` postscript without rebooting the node:: | ||||
|  | ||||
|     updatenode cn1 -P confignetwork | ||||
|  | ||||
|  | ||||
| Verify bonding mode | ||||
| ~~~~~~~~~~~~~~~~~~~ | ||||
|  | ||||
| Login to compute node cn1 and check bonding options in ``/etc/sysconfig/network-scripts/ifcfg-bond0`` file :: | ||||
|  | ||||
|    BONDING_OPTS="mode=802.3ad xmit_hash_policy=layer2+3" | ||||
|  | ||||
|  | ||||
| * ``mode=802.3ad`` requires additional configuration on the switch.  | ||||
| * ``mode=2`` can be used for bonding without additional switch configuration.  | ||||
|  | ||||
| If changes are made to ``/etc/sysconfig/network-scripts/ifcfg-bond0`` file, restart network service. | ||||
| @@ -0,0 +1,109 @@ | ||||
| Configure BOND, VLAN and BRIDGES | ||||
| -------------------------------- | ||||
|  | ||||
| The ``confignetwork`` postscript can be used to configure the network interfaces on the compute nodes to support VLAN, BONDs, and BRIDGES. In order for the ``confignetwork`` postscript to run successfully, the following attributes must be configured for the node in the ``nics`` table: | ||||
|  | ||||
|     * ``nicips`` | ||||
|     * ``nictypes`` | ||||
|     * ``nicnetworks`` | ||||
|     * ``nicdevices`` - resolves the relationship among the physical network interface devices | ||||
|  | ||||
| The following example set the xCAT properties for compute node ``cn1`` to achieve the following network configuration using the ``confignetwork`` postscript: | ||||
|  | ||||
|   * Compute node ``cn1`` has two physical NICs: ``eth2`` and ``eth3``   | ||||
|   * Bond ``eth2`` and ``eth3`` as ``bond0``  | ||||
|   * From ``bond0``, create 2 VLANs: ``bond0.1`` and ``bond0.2`` | ||||
|   * Make bridge ``br1`` using ``bond0.1`` with IP (10.0.0.1) | ||||
|   * Make bridge ``br2`` using ``bond0.2`` with IP (20.0.0.1) | ||||
|  | ||||
| Define attributes in the ``nics`` table | ||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
|  | ||||
| Chose one of two methods described below: | ||||
|  | ||||
| #. Using the ``mkdef`` or ``chdef`` commands   | ||||
|  | ||||
|     a. Compute node ``cn1`` has two physical NICs: ``eth2`` and ``eth3`` :: | ||||
|   | ||||
|         chdef cn1 nictypes.eth2=ethernet nictypes.eth3=ethernet | ||||
|     | ||||
|     b. Define ``bond0`` and bond ``eth2`` and ``eth3`` as ``bond0`` :: | ||||
|  | ||||
|         chdef cn1 nictypes.bond0=bond \ | ||||
|                   nicdevices.bond0="eth2|eth3" | ||||
|  | ||||
|     c. From ``bond0``, create 2 VLANs: ``bond0.1`` and ``bond0.2`` :: | ||||
|      | ||||
|         chdef cn1 nictypes.bond0.1=vlan \ | ||||
|                   nictypes.bond0.2=vlan \ | ||||
|                   nicdevices.bond0.1=bond0 \ | ||||
|                   nicdevices.bond0.2=bond0 | ||||
|  | ||||
|     d. Create bridge ``br1`` using ``bond0.1`` with IP (10.0.0.1) :: | ||||
|  | ||||
|         chdef cn1 nictypes.br1=bridge \ | ||||
|                   nicdevices.br1=bond0.1 \ | ||||
|                   nicips.br1=10.0.0.1 \ | ||||
|                   nicnetworks.br1="net10" | ||||
|  | ||||
|     e. Create bridge ``br2`` using ``bond0.2`` with IP (20.0.0.1) :: | ||||
|  | ||||
|         chdef cn1 nictypes.br2=bridge \ | ||||
|                   nicdevices.br2=bond0.2 \ | ||||
|                   nicips.br2=20.0.0.1 \ | ||||
|                   nicnetworks.br2="net20" | ||||
|  | ||||
| #. Using an xCAT stanza file | ||||
|  | ||||
|     - Prepare a stanza file ``<filename>.stanza`` with content similiar to the following: :: | ||||
|  | ||||
|         # <xCAT data object stanza file> | ||||
|         cn1: | ||||
|           objtype=node | ||||
|           arch=x86_64 | ||||
|           groups=kvm,vm,all | ||||
|           nicdevices.br1=bond0.1  | ||||
|           nicdevices.br2=bond0.2  | ||||
|           nicdevices.bond0.1=bond0  | ||||
|           nicdevices.bond0.2=bond0  | ||||
|           nicdevices.bond0=eth2|eth3 | ||||
|           nictypes.eth2=ethernet  | ||||
|           nictypes.eth3=ethernet  | ||||
|           nictypes.bond0=bond  | ||||
|           nictypes.bond0.1=vlan  | ||||
|           nictypes.bond0.2=vlan  | ||||
|           nictypes.br1=bridge  | ||||
|           nictypes.br2=bridge  | ||||
|           nicips.br1=10.0.0.1  | ||||
|           nicips.br2=20.0.0.1  | ||||
|           nicnetworks.br1=net10 | ||||
|           nicnetworks.br2=net20 | ||||
|  | ||||
|     - Using the ``mkdef -z`` option, define the stanza file to xCAT: :: | ||||
|  | ||||
|         cat <filename>.stanza | mkdef -z | ||||
|  | ||||
| Define the additional networks to xCAT | ||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
|  | ||||
| If this is a new network being created on the compute nodes, an entry needs to be created into the xCAT database. | ||||
|  | ||||
| The ``nicnetworks`` attribute only defines the nic that uses the IP address. | ||||
| Other information about the network should be defined in the ``networks`` table. | ||||
|  | ||||
| Use the ``chdef`` command to add/modify the networks in the ``networks`` table :: | ||||
|  | ||||
|     chdef -t network net10 net=10.0.0.0 mask=255.0.0.0 | ||||
|     chdef -t network net20 net=20.0.0.0 mask=255.0.0.0 | ||||
|  | ||||
| Add ``confignetwork`` into the node's postscripts list | ||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
|  | ||||
| Use the following command to add ``confignetwork`` into postscript list to execute on reboot: :: | ||||
|  | ||||
|     chdef cn1 -p postscripts=confignetwork | ||||
|  | ||||
| If the compute node is already running, use ``updatenode`` command to run ``confignetwork`` postscript without rebooting the node:: | ||||
|  | ||||
|     updatenode cn1 -P confignetwork | ||||
|  | ||||
| @@ -1,5 +1,5 @@ | ||||
| Configure Additional Network Interfaces | ||||
| ======================================= | ||||
| Configure Additional Network Interfaces - confignics | ||||
| ==================================================== | ||||
|  | ||||
| The **nics** table and the **confignics** postscript can be used to automatically configure additional network interfaces (mutltiple ethernets adapters, InfiniBand, etc) on the nodes as they are being deployed. | ||||
|  | ||||
| @@ -47,7 +47,7 @@ There are 3 ways to complete this operation. | ||||
|  | ||||
|    The ``tabedit`` command opens the specified xCAT database table in a vi like editor and allows the user to edit any text and write the changes back to the database table.  | ||||
|  | ||||
|    *WARNING* Using the ``tabedit`` command is not the recommended method because it is tedious and error prone.  | ||||
|    *WARNING:* Using the ``tabedit`` command is not the recommended method because it is tedious and error prone.  | ||||
|  | ||||
|    After changing the content of the ``nics`` table, here is the result from ``tabdump nics`` :: | ||||
|  | ||||
| @@ -70,7 +70,7 @@ After you have defined the configuration information in any of the ways above, r | ||||
| Add confignics into the node's postscripts list | ||||
| ----------------------------------------------- | ||||
|  | ||||
| Using below command to add confignics into the node's postscripts list :: | ||||
| Use command below to add confignics into the node's postscripts list :: | ||||
|  | ||||
|     chdef cn1 -p postscripts=confignics | ||||
|  | ||||
| @@ -78,7 +78,7 @@ By default, confignics does not configure the install nic. if need, using flag " | ||||
|  | ||||
|     chdef cn1 -p prostscripts="confignics -s" | ||||
|  | ||||
| Option "-s" write the install nic's information into configuration file for persistance. All install nic's data defined in nics table will be written also. | ||||
| Option "-s" writes the install nic's information into configuration file for persistance. All install nic's data defined in nics table will be written also. | ||||
|  | ||||
|  | ||||
| Add network object into the networks table | ||||
| @@ -103,6 +103,7 @@ Option -r to remove the undefined NICS | ||||
| If the compute node's nics were configured by ``confignics`` and the nics configuration changed in the nics table, user the ``confignics -r`` to remove the undefined nic.   | ||||
|  | ||||
| For example, if on a compute node the ``eth0``, ``eth1``, and ``eth2`` nics were configured: :: | ||||
|  | ||||
|     # ifconfig | ||||
|     eth0      Link encap:Ethernet  HWaddr 00:14:5e:d9:6c:e6 | ||||
|     ... | ||||
| @@ -114,7 +115,7 @@ For example, if on a compute node the ``eth0``, ``eth1``, and ``eth2`` nics were | ||||
| Delete the eth2 definition in nics table using the ``chdef`` command.  | ||||
| Then run the following to remove the undefined ``eth2`` nic on the compute node: :: | ||||
|  | ||||
|     # updatenode <noderange> -P "confignics -r" | ||||
|     updatenode <noderange> -P "confignics -r" | ||||
|  | ||||
| The result should have ``eth2`` disabled: :: | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user