47
TOUMANARI- LINUX DAYS-2008 Simulations et applications réparties sous LINUX AHMED TOUMANARI Université Ibn zohr

Simulations et applications réparties sous LINUX

  • Upload
    fdiwa

  • View
    1.028

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Simulations et applications réparties sous LINUX

AHMED TOUMANARI

Université Ibn zohr

Page 2: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

PLAN- Algorithme distribué

- RPC

- RMI

- CORBA

- Service web

- Clustring

Page 3: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Introduction

Solutions : Synchronisation approximative des horloges physiques Utilisation d’horloges logiques

Déviation : synchronisation exacte impossible

Page 4: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

NTP: Network Time Protocol

Page 5: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Temps & Horloges Logiques

1 2

5

43

1

,2

,4

Page 6: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Ordonnancement Total des Événements

1, 0, 0 2, 0, 0

2, 2, 20, 0, 1

2, 2, 0

,(2, 0, 0)

,(2, 2, 0)

2, 1, 0

Page 7: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Coupes

• La coupe est représentée sous forme de courbe pointillée– L’intersection avec le trait d’un processus indique le point de

sauvegarde de l’état local• Tout message noté comme reçu dans la coupe a

aussi été noté comme envoyé • Cette coupe est dite cohérente

P1

P2

P3

Page 8: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Coupes

• Un message a été noté comme reçu mais non envoyé• Cette coupe est dite non cohérente• En cas de reprise après une panne, P3 considèrera

avoir reçu un message de P2 mais celui-ci ne l’aura pas encore envoyé

P1

P2

P3

Page 9: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

1

3

1

2

3

2

5

7

6

4

5

12

3

86

910

10

11

11

13 1312

LIB,0,1 – 0

LIB,0,2 – 0

LIB,0,3 – 0

REQ,2,1 – 2

REQ,2,2– 3

ACK,6,3 – 7

REQ,2,1 – 3

REQ,2,2– 2

ACK,4,3 – 5

LIB,0,1 – 0

LIB,0,2 – 0

LIB,0,3 – 0

LIB,0,1 – 0

LIB,0,2 – 0

LIB,0,3 – 0

LIB,10,1 – 11

REQ,2,2– 2

ACK,4,3 – 5

LAMPORT

Page 10: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

1 1

A1=φ

F1=φ

RICART

A2=φ

F2=φ

A3=φ

F3=φ

11

6

3

1

2

3

2

44

2

3

5

A1=φ

F1=S2

A3=φ

F3=S2

A3=φ

F3=S2,S1

5

6

4

8

7A1=S2

F1=S2 A3=S2,S1

F3=S2,S1

F3= φ

A2=S3,S1F1= φ 12

A1=S2,S3

F1=S2 A2=S3

10 9

10

Page 11: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

r11

RV1=(1,0)

r12

RV1=(2,0)

r21

RV2=(0,1)

r22

RV2=(2,2)

m2, (2,2), 2

(2,1)

m1, (2,0), 0

Zid # RV2[2]

Zid = RV1[1]

Page 12: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

RPC

Page 13: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Principe des RPC

Port-M

apper Serveur

Requête ServiceIdentification

VersionSous-Version

ProtocoleN° de port

Page 14: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Page 15: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Page 16: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Exemple de montage

/

users bin local

root equipes old new test

A B C D optim compat

travail archive

Serveur

mount –t nfs Serveur:/users/equipes/A /users/A

/

users bin

root

Client

Page 17: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Exemple de montage

/

users bin local

root equipes old new test

A B C D optim compat

travail archive

Serveur

/

users bin

root A

Client

Page 18: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

RMI

Page 19: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Le rêve de tout système distribué

1) d’invoquer une méthode d’un objet se trouvant sur une autre machine exactement de la même manière que s’il étais locale

2) d’utiliser un objet distant (OD), sans savoir où il se trouve, en demandant à un service « dédié » de renvoyer son adresse

3) de pouvoir passer un OD en paramètre d’appel à une méthode locale ou distante

4) de pouvoir récupérer le résultat d’un appel distant sous forme d’un nouvel objet qui aurait été créé sur la machine distante

Page 20: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Processus de développementd’une application RMI

1) définir une interface Java pour un OD

2) créer et compiler une classe implémentant

cette interface

3) créer et compiler une application serveur RMI

4) créer les classes Stub et Skeleton (rmic)

5) démarrer rmiregister et lancer l’application serveur RMI

6) créer, compiler et lancer un programme client accédant à des OD du serveur

Page 21: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

CORBA

Page 22: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Vue du modèle O.M.A.

Le bus C.O.R.B.A.

Annuaire Transaction

Services

Médecine Electronique

Objets de domaines

Client Serveur

Applications utilisateurs

Administration Impression

Utilitaires communs

Page 23: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

pré­compilateur

fichierIDL

Client Implémentation d’objet

DII Stubclient

InterfaceORB

Référentieldes interfaces

Rint

Référentieldes implémentations

Rimp

noyau de l ’Object Request Broker (ORB) 

SSI DSISII

Adaptateur d’Objet

Architecture générale

Interface de l ’adaptateur 

Page 24: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

POAManager & POA

ORB(orb)

POAManagerPOAPOAPOA*

Servant Servant Servant Servant Servant

Servant

Servant Servant

*RootPOA(rootpoa)

SERVEURRequêtes client

Page 25: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

service de nommageServeur

ORB

CosNaming::NamingContext

resolve_initial_references ("NameService");

conversion

Bind()

resolve_initial_references ("NameService");

Client

conversion

resolve()

Conversion

Invocation

objet

Page 26: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Un canal d’évènements

Producteur

Producteur

Consommateur

Consommateur

Consommateur

Consommateur

Canal

Flot des évènements

Page 27: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Un canal d’évènements : notification

Producteur

Producteur

Consommateur

Consommateur

Consommateur

Consommateur

Canal

Producteur actif / Consommateur réactifLe canal diffuse les évènements

Push

Push

PushSupplierPushConsumer

void push(in any data) raises(Disconnected);

Page 28: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Un canal d’évènements demande

Producteur

Producteur

Consommateur

Consommateur

Consommateur

Consommateur

Canal

Producteur réactif / Consommateur actifLe canal procure les évènements

Pull()

Pull()

demandePullSupplier {

//demande de production d’un événement

any pull() raises(Disconnected);

// présence d’un événement

any try_pull(out boolean has_event) raises(Disconnected);

Page 29: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Un canal d’évènements : file d’évènements

Producteur

Producteur

Consommateur

Consommateur

Consommateur

Consommateur

Canal

Producteur actif / Consommateur actifLe canal gère des files d’évènements

Push()

Pull()

Page 30: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Un canal d’évènements collecte d’évènements

Producteur

Producteur

Consommateur

Consommateur

Consommateur

Consommateur

Canal

Producteur réactif / Consommateur réactifLe canal est une entité active voire intelligente

Pull()

Push()

Page 31: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Service Web

Page 32: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

AnnuaireUDDI

ClientXML

5 : J’ai compris comment invoquer5 : J’ai compris comment invoquerton service et je t’envoie un documentton service et je t’envoie un document

XML représentant ma requêteXML représentant ma requête

Serveur

2 : J’ai trouvé! Voici le serveur2 : J’ai trouvé! Voici le serveurhébergeant ce service webhébergeant ce service web

3 : Quel est le format d’appel du3 : Quel est le format d’appel duservice que tu proposes? service que tu proposes?

ContratSOAP

4 : Voici mon contrat (WSDL)4 : Voici mon contrat (WSDL)

XML

XML

6 : J’ai exécuté ta requête et je te retourne le résultat6 : J’ai exécuté ta requête et je te retourne le résultat

1 :

Je r

ech

erch

e1

: Je

rec

her

che

un

ser

vice

WE

B

un

ser

vice

WE

B

Cycle de vie d’utilisation

Page 33: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

CLUSTRING

Page 34: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Workstation = Node

Workstation = Node

Workstation = Server Node

éléments d'interconnexion

NOW

tâche 1 1

tâche 2 2

CLUSTER

tâche 1, 1, tâche2 tâche(s)(s)

Page 35: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

LES MOTIVATIONS D’UN CLUSTER

  Cluster scientifique (déchiffrement des clés de cryptage de plus en plus longues, simulation nucléaire…)

 Cluster de stockage (stockage d’énormes fichiers…)

 Cluster haute disponibilité (architecture firewall…)

 Cluster à répartition de charge (architecture serveur web, architecture système utilisateur…) 

Page 36: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

OPENMOSIX ?OPENMOSIX ?

 Cluster à répartition de charge entre processus  

 Extension et enrichissement du noyau Linux (patchs + quelques Extension et enrichissement du noyau Linux (patchs + quelques binaires) afin de supporter le clusteringbinaires) afin de supporter le clustering  

 Chaque Nodes est équivalent et tourne sous un noyau MOSIX 

 Utilisation d’un algorithme dit de « fork and forget »    

 Optimisation constante de la répartition (load balancing)

 algorithme dissémination d’information probabiliste 

 algorithme de gestion mémoire         # S.E      # MPI/PVM 

Page 37: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Installation •  Modifier les sources du noyau par le fichier de « patch » de openMosix   

•  le recompiler pour obtenir un nouveau noyau intégrant les fonctionnalités openMosix

Page 38: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

• Possibilité d’utiliser des assistants de distribution, comme LTSP (www.LTSP.org) dans une architecture homogène 

•  créer un fichier de conf. /etc/openMosix.map (ou lancer le démon de découverte automatique)

Syntaxe :  MOSIX­node­number IP­address range­size  

Exemple : #fichier /etc/mosix.map1 192.168.0.1 67 192.168.0.100 17 192.168.1.100 18 192.168.1.1 6

• installer les outils d’administration openMosix­tools et l’interface graphique openMosixview 

• modifier le secteur de démarrage (grub ou lilo) et démarrer la machine sur le nouveau noyau

Page 39: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Exemple produit Matriciel

• Calcul de produit C= A1p* A2

p*… Amp*, tel que Ai est

une matrice carrée de taille n*n, sur une Grille de X nœuds regroupés en Y clusters

A1n

n

P

A2

n

P

Amx

n

P

x …cn

n

=

Page 40: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

1 3

Réseau à haute vitesse

2 X

Cluster 1 Cluster 2 Cluster Y

Noeud initiateur

… 1 32 X… 1 32 X…

1 2 3 X…

1 2 3 X…

1 2 3 X…

.

.

.

.

.

.

.

.

.

.

.

.

La matrice résultat C

Cluster 1

Cluster 2

Cluster Y

•La matrice C est partagée horizontalement en Y paquets de lignes et verticalement en X paquets de colonnes•Chaque cluster s’occupe de calculer un paquet de lignes•A l’intérieur d’un cluster, les nœuds calculent le produit matriciel

Page 41: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

A

3

B

3

x

c

=

C11 C12 C13 C14

C21 C22 C23 C24

C31 C32 C33 C34

C41 C42 C43 C44

A11 A12 A13 A14

A21 A22 A23 A24

A31 A32 A33 A34

A41 A42 A43 A44

B11 B12 B13 B14

B21 B22 B23 B24

B31 B32 B33 B34

B41 B42 B43 B44

1 2

Cluster 1 Cluster 2

Noeud initiateur

1 2

Page 42: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

A

3

B

3

x

c

=

C11 C12 C13 C14

C21 C22 C23 C24

C31 C32 C33 C34

C41 C42 C43 C44

A11 A12 A13 A14

A21 A22 A23 A24

A31 A32 A33 A34

A41 A42 A43 A44

B11 B12 B13 B14

B21 B22 B23 B24

B31 B32 B33 B34

B41 B42 B43 B44

1 2

Cluster 1 Cluster 2

Noeud initiateur

1 2

Page 43: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

A

3

B

3

x

c

=

C11 C12 C13 C14

C21 C22 C23 C24

C31 C32 C33 C34

C41 C42 C43 C44

A11 A12 A13 A14

A21 A22 A23 A24

A31 A32 A33 A34

A41 A42 A43 A44

B11 B12 B13 B14

B21 B22 B23 B24

B31 B32 B33 B34

B41 B42 B43 B44

1 2

Cluster 1 Cluster 2

Noeud initiateur

1 2

=

x

=

x

=

x

=

x

A11 A12

A21 A22

A13 A14

A23 A24

A31 A32

A41 A42

A33 A34

A43 A44

A11 A12

A21 A22

A13 A14

A23 A24

A11 A12

A21 A22

A13 A14

A23 A24

A31 A32

A41 A42

A33 A34

A43 A44

A11 A12

A21 A22

A31 A32

A41 A42

A13 A14

A23 A24

A33 A34

A43 A44

A31 A32

A41 A42

A33 A34

A43 A44

Page 44: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

A

3

B

3

x

c

=

C11 C12 C13 C14

C21 C22 C23 C24

C31 C32 C33 C34

C41 C42 C43 C44

A11 A12 A13 A14

A21 A22 A23 A24

A31 A32 A33 A34

A41 A42 A43 A44

B11 B12 B13 B14

B21 B22 B23 B24

B31 B32 B33 B34

B41 B42 B43 B44

1 2

Cluster 1 Cluster 2

Noeud initiateur

1 2

=

x

=

x

=

x

=

x

A11 A12

A21 A22

A13 A14

A23 A24

A31 A32

A41 A42

A33 A34

A43 A44

A11 A12

A21 A22

A13 A14

A23 A24

A11 A12

A21 A22

A13 A14

A23 A24

A31 A32

A41 A42

A33 A34

A43 A44

A11 A12

A21 A22

A31 A32

A41 A42

A13 A14

A23 A24

A33 A34

A43 A44

A31 A32

A41 A42

A33 A34

A43 A44

C11 C12

C21 C22

C13 C14

C23 C24

C31 C32

C41 C42

C31 C32

C41 C42

Page 45: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

A

3

B

3

x

c

=

C11 C12 C13 C14

C21 C22 C23 C24

C31 C32 C33 C34

C41 C42 C43 C44

A11 A12 A13 A14

A21 A22 A23 A24

A31 A32 A33 A34

A41 A42 A43 A44

B11 B12 B13 B14

B21 B22 B23 B24

B31 B32 B33 B34

B41 B42 B43 B44

1 2

Cluster 1 Cluster 2

Noeud initiateur

1 2

=

x

=

x

=

x

=

x

A11 A12

A21 A22

A13 A14

A23 A24

A31 A32

A41 A42

A33 A34

A43 A44

A11 A12

A21 A22

A31 A32

A41 A42

A13 A14

A23 A24

A33 A34

A43 A44

C11 C12

C21 C22

C11 C12

C21 C22

C13 C14

C23 C24

C13 C14

C23 C24

C31 C32

C41 C42

C31 C32

C41 C42

C31 C32

C41 C42

C31 C32

C41 C42

A311A3

12

A321A3

22

A313A3

14

A323A3

24

A331A3

32

A341A3

42

A331A3

32

A341A3

42

A311A3

12

A321A3

22

A313A3

14

A323A3

24

A331A3

32

A341A3

42

A333A3

33

A344A3

44

B311B3

12

B321B3

22

B313B3

14

B323B3

24

B331B3

32

B341B3

42

B333B3

34

B343B3

44

Page 46: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

A

3

B

3

x

c

=

C11 C12 C13 C14

C21 C22 C23 C24

C31 C32 C33 C34

C41 C42 C43 C44

A11 A12 A13 A14

A21 A22 A23 A24

A31 A32 A33 A34

A41 A42 A43 A44

B11 B12 B13 B14

B21 B22 B23 B24

B31 B32 B33 B34

B41 B42 B43 B44

1 2

Cluster 1 Cluster 2

Noeud initiateur

1 2

=

x

=

x

=

x

=

x

C11 C12

C21 C22

C13 C14

C23 C24

C31 C32

C41 C42

C31 C32

C41 C42

A311A3

12

A321A3

22

A313A3

14

A323A3

24

A331A3

32

A341A3

42

B311B3

12

B321B3

22

B313B3

14

B323B3

24

B331B3

32

B341B3

42

B311B3

12

B321B3

22

A333A3

34

A343A3

44

B333B3

34

B343B3

44

B313B3

14

B323B3

24

B331B3

32

B341B3

42

B333B3

34

B343B3

44

A331A3

32

A341A3

42

A333A3

34

A343A3

44

A311A3

12

A321A3

22

A313A3

14

A323A3

24

Page 47: Simulations et applications réparties sous LINUX

TOUMANARI- LINUX DAYS-2008

Merci de votre attention