Difference between revisions of "Weekend Projekt - Test Cluster"
m (→Programmering med MPICH2) |
m (→Hello World eksempel) |
||
Line 277: | Line 277: | ||
Hello World from process 8, of 10 on C01 | Hello World from process 8, of 10 on C01 | ||
</pre> | </pre> | ||
+ | ==Hello World med MPI== | ||
+ | |||
{{Source cli}} | {{Source cli}} |
Revision as of 23:19, 3 July 2010
Udstyr
- 5 stk. Lenovo ThinkCenter (C01, C04, C05, C06, C17)
- Cisco 2950
Setup
C01 bliver master server, med apt-cacher til installation og PXE netinstallation server. Den skal også have MRTG og nagios.
- C01 sidder i Gi0/2
- C04 sidder i Fa0/1
- C05 sidder i Fa0/2
- C06 sidder i Fa0/3
- C17 sidder i Fa0/4
2950
enable password cisco
!
interface range fa 0/1 - 24
switchport mode access
switchport access vlan 2
spanning-tree portfast
!
interface range gi 0/1 - 2
switchport mode access
switchport access vlan 2
spanning-tree portfast
!
interface Vlan2
ip address 10.1.2.50 255.255.255.0
!
snmp-server community public RO
!
line con 0
line vty 0 4
no login
line vty 5 15
no login
C01
Denne node skal være installtions og mangement node for clusteret.
Std applicationer
Installtion af det nødvendig samt noget random.
aptitude -y install apt-cacher tftpd-hpa tftp-hpa xinetd nagios3 mrtg nmap screen bmon iperf bonnie++ lmbench lm-sensors snmpd snmp build-essential gcc openssh-client nfs-kernel-server
Apt-cacher
Ændre i /etc/apt-cacher/apt-cacher.conf
path_map = ubuntu de.archive.ubuntu.com/ubuntu; ubuntu-updates de.archive.ubuntu.com/ubuntu ; ubuntu-security security.ubuntu.com/ubuntu allowed_hosts=*
Ændre i /etc/default/apt-cacher også:
AUTOSTART=1
Og genstart apt-cacher:
/etc/init.d/apt-cacher restart
Vær opmærksom på at installations serveren hedder 10.1.2.100:3142/ubuntu/ nu
PXE netinstaller
Hent og installer pxelinux til tftp roden:
cd /var/lib/tftpboot/ wget http://archive.ubuntu.com/ubuntu/dists/lucid/main/installer-amd64/current/images/netboot/netboot.tar.gz tar -xvzf netboot.tar.gz
Sæt IOS DHCP serveren op til at pege på PXE serveren og filen:
ip dhcp pool Pool-VLAN2
network 10.1.2.0 255.255.255.0
bootfile pxelinux.0
next-server 10.1.2.100
default-router 10.1.2.1
dns-server 89.150.129.4 89.150.129.10
lease 0 0 30
!
Lav en F12 og det spiller bare.
MRTG opsætning
Gør som beskrevet her Netband_Project_-_Ubuntu_server
Quick Guide
cfgmaker --no-down --output /etc/mrtg-10.1.2.50.cfg public@10.1.2.50 cfgmaker --no-down --output /etc/mrtg-10.1.2.1.cfg public@10.1.2.1
Ændre lidt i /etc/mrtg.cfg
Options[_]: bits, unknaszero Include: /etc/mrtg-10.1.2.50.cfg Include: /etc/mrtg-10.1.2.1.cfg
Husk at lave WorkDir:
mkdir /var/www/mrtg
Tilføj MRTG til cron sammen med indexmaker, så den selv opdaterer index siden når du tilføjer enheder til /etc/mrtg.cfg
crontab -e m h dom mon dow command */2 * * * * env LANG=C /usr/bin/mrtg /etcmrtg.cfg --logging /var/log/mrtg/mrtg.log */5 * * * * /usr/bin/indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html
Og så kan man se alle interfaces på http://10.1.2.100/mrtg
Virker det ikke tjek loggen i /var/log/mrtg/mrtg.log
Nagios3
Ændre i /etc/nagios3/conf.d/hostgroups_nagios2.cfg, så under hostgroup_name ping-servers skal members laves om til *
Ændre også i /etc/nagios3/conf.d/host-gateway_nagios3.cfg
define host { host_name Switch alias Switch address 10.1.2.50 use generic-host } define host { host_name C04 alias C04 address 10.1.2.101 use generic-host } define host { host_name C05 alias C05 address 10.1.2.102 use generic-host } define host { host_name C06 alias C06 address 10.1.2.103 use generic-host } define host { host_name C17 alias C17 address 10.1.2.104 use generic-host }
Genstart Nagios
/etc/init.d/nagios3 restart
Nagios kan nu tilgåes på http://10.1.2.100/nagios3 std brugernavn er nagiosadmin og bruger navn er det du satte under installtionen.
Auto SSH login
På C01 generere man nogle nøgler som kan bruges til at logge ind på alle maskinerne med.
ssh-keygen -t dsa
Så opretter man en .ssh folder i /root eller /home dir for den bruger man lyster.
ssh 10.1.2.101 mkdir .ssh ssh 10.1.2.102 mkdir .ssh ssh 10.1.2.103 mkdir .ssh ssh 10.1.2.104 mkdir .ssh
Kopierer Certifikaterne over på dem:
scp * 10.1.2.101:.ssh/ scp * 10.1.2.102:.ssh/ scp * 10.1.2.103:.ssh/ scp * 10.1.2.104:.ssh/
Og man kan nu SSH rundt til alle maskiner uden password
ssh 10.1.2.101
NFS server
Lav en folder til at exportere med NFS
mkdir /var/mirror
Tilføj den til /etc/exports
/var/mirror *(rw,sync,no_subtree_check)
Og genstart NFS serveren
/etc/init.d/nfs-kernel-server restart
Cluster installation
Host filer
opret alle nodes i /etc/hosts:
127.0.0.1 localhost 10.1.2.100 C01 10.1.2.101 C04 10.1.2.102 C05 10.1.2.103 C06 10.1.2.104 C17
Lav et script der hedder CopyToClients.sh
#!/bin/bash scp $1 10.1.2.101:$2 scp $1 10.1.2.102:$2 scp $1 10.1.2.103:$2 scp $1 10.1.2.104:$2
Smid den rundt til alle de andre nodes med:
./CopyToClients.sh /etc/hosts /etc/hosts
Installer MPICH2
Installer MPICH2 på alle maskiner
aptitude install mpich2
Lav en fil i home dir der hedder mpd.hosts der indeholder:
C01 C04 C05 C06 C17
Og lav et password i filen /etc/mpd.conf
echo MPD_SECRETWORD=cisco >> /etc/mpd.conf chmod 600 /etc/mpd.conf
Den skal ligge i home dir, hvis man er andre brugere end root!!
Flyt den til de andre maskiner
./CopyToClients.sh /etc/mpd.conf /etc/mpd.conf
Start MPD på alle nodes
mpdboot -n 4
Og test at det virker, skulle gerne returnere hostnavn på alle nodes
mpdtrace
Test fil i /var/mirror/test.sh
#!/bin/bash cat /etc/hostname
Kald den
mpiexec -n 40 /var/mirror/test.sh
Have Fun
mpiexec -n 1000 /var/mirror/test.sh | sort | uniq -c
Sluk for MPD igen
mpdallexit
Programmering med MPICH2
Hello World eksempel
HelloWorld program
#include "mpi.h"
#include <stdio.h>
int main (int argc, char *argv[] )
{
int rank, size, namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init( &argc, &argv );
MPI_Get_processor_name( processor_name, &namelen );
MPI_Comm_rank( MPI_COMM_WORLD, &rank );
MPI_Comm_size( MPI_COMM_WORLD, &size );
printf( "Hello World from process %d, of %d on %s\n", rank, size, processor_name );
MPI_Finalize();
return 0;
}
Compile det med
mpicxx -o helloWorld helloWorld.c
og kør det med
mpiexec -n 10 /var/mirror/helloWorld
Resultatet skulle gerne blive
Hello World from process 2, of 10 on C05 Hello World from process 6, of 10 on C05 Hello World from process 3, of 10 on C06 Hello World from process 1, of 10 on C04 Hello World from process 5, of 10 on C04 Hello World from process 7, of 10 on C06 Hello World from process 9, of 10 on C04 Hello World from process 0, of 10 on C01 Hello World from process 4, of 10 on C01 Hello World from process 8, of 10 on C01