La red privada de Infiniband es 192.168.20.x con máscara 16
A continuación se encuentra el script que se ha diseñado para levantar la interfaz (ib0) para el nodo master
# Commands below need to be run from the front end as root. # Front end usually has the IP address 192.168.10.1 for eth0. # # Network rocks add network ibnet subnet=192.168.20.0 netmask=255.255.0.0 rocks set host interface ip localhost iface=ib0 ip=192.168.20.1 rocks set host interface subnet localhost iface=ib0 subnet=ibnet rocks set host interface module localhost iface=ib0 module=ip_ipoib rocks set host interface name localhost iface=ib0 name=clustertalca2 rocks sync host network localhost # # Firewall rocks add firewall host=localhost chain=INPUT protocol=all service=all action=ACCEPT network=ibnet iface=ib0 rulename="A80-IB0-PRIVATE" rocks sync host firewall localhost rocks set network servedns ibnet True # # /etc/hosts.local echo "# Front end" > /etc/hosts.local printf "%-14s %-20s %-14s\n" "192.168.20.1" "clustertalca2.ibnet" "ib-clustertalca2" >> /etc/hosts.local
La configuración de los nodos:
# BASH script to configure IPoIB for non front end nodes in a Rocks 6.1 cluster.
# IP address scheme for InfiniBand (ib0) will reflect that of Ethernet (eth0).
# Must be root to run this script.
# Function to convert the first character in a string to uppercase
function ucfirst_character () {
original_string="$@"
first_character=${original_string:0:1}
rest_of_the_string=${original_string:1}
first_character_uc=`echo "$first_character" | tr a-z A-Z`
echo "${first_character_uc}${rest_of_the_string}"
}
# Necessary variables
# Remove login and/or nas from the list below if the cluster does not have login and/or NAS nodes
export MYNODETYPES="compute"
# Outer for loop begins
for x in $MYNODETYPES
do
echo $x
# List of nodes of given type (login, nas or compute)
export MYNODES=`rocks list host | grep "$x" | awk -F ':' '{ print $1 }' | sort -t- -k 2,2n -k 3,3n`
# /etc/hosts.local header for a given type of node
if [ $x == "nas" ]
then
export y=`echo $x | tr a-z A-Z`
else
export y=`ucfirst_character $x`
fi
echo "# $y node(s)" >> /etc/hosts.local
# Inner for loop begins
for MYHOSTNAME_ETH0 in $MYNODES
do
# echo "MYHOSTNAME_ETH0"
# echo $MYHOSTNAME_ETH0
#
# Additiional necessary variables
export MYHOSTNAME_IB0="ib-$MYHOSTNAME_ETH0"
export MYHOSTIP_ETH0=`rocks list host interface $MYHOSTNAME_ETH0 | grep "eth0" | awk '{ print $4 }'`
export MYHOSTIP_IB0=`echo $MYHOSTIP_ETH0 | sed 's/192.168.255/192.168.20/g'`
export MYSHORTNAME_ETH0=`echo $MYHOSTNAME_ETH0 | sed 's/compute/c/g' | sed 's/login/l/g' | sed 's/nas/n/g'`
export MYSHORTNAME_IB0=`echo $MYHOSTNAME_IB0 | sed 's/compute/c/g' | sed 's/login/l/g' | sed 's/nas/n/g'`
#
# Network
rocks add host interface $MYHOSTNAME_ETH0 ib0
echo "1"
rocks set host interface ip $MYHOSTNAME_ETH0 iface=ib0 ip=$MYHOSTIP_IB0
echo "2"
echo $MYHOSTNAME_ETH0
rocks set host interface subnet $MYHOSTNAME_ETH0 iface=ib0 subnet=ibnet
echo "3"
rocks set host interface module $MYHOSTNAME_ETH0 iface=ib0 module=ip_ipoib
echo "4"
rocks set host interface name $MYHOSTNAME_ETH0 iface=ib0 name=$MYHOSTNAME_ETH0
echo "5"
rocks sync host network $MYHOSTNAME_ETH0
#
# Firewall
rocks add firewall host=$MYHOSTNAME_ETH0 chain=INPUT protocol=all service=all action=ACCEPT network=ibnet iface=ib0 rulename="A80-IB0-PRIVATE"
rocks sync host firewall $MYHOSTNAME_ETH0
#
# For debugging purposes only
printf "%-14s %-20s %-14s %-18s %-10s\n" "${MYHOSTIP_ETH0}" "${MYHOSTNAME_ETH0}.local" "${MYSHORTNAME_ETH0}.local" "${MYHOSTNAME_ETH0}" "${MYSHORTNAME_ETH0}"
printf "%-14s %-20s %-14s %-18s %-10s\n" "${MYHOSTIP_IB0}" "${MYHOSTNAME_ETH0}.ibnet" "${MYSHORTNAME_ETH0}.ibnet" "${MYHOSTNAME_IB0}" "${MYSHORTNAME_IB0}"
#
# /etc/hosts.local
printf "%-14s %-20s %-14s %-18s %-10s\n" "${MYHOSTIP_ETH0}" "${MYHOSTNAME_ETH0}.local" "${MYSHORTNAME_ETH0}.local" "${MYHOSTNAME_ETH0}" "${MYSHORTNAME_ETH0}" >> /etc/hosts.local
printf "%-14s %-20s %-14s %-18s %-10s\n" "${MYHOSTIP_IB0}" "${MYHOSTNAME_ETH0}.ibnet" "${MYSHORTNAME_ETH0}.ibnet" "${MYHOSTNAME_IB0}" "${MYSHORTNAME_IB0}" >> /etc/hosts.local
done
# Inner for loop ends
done
# Outer for loop ends