Upload
fdiwa
View
1.025
Download
4
Embed Size (px)
Citation preview
TOUMANARI- LINUX DAYS-2008
Simulations et applications réparties sous LINUX
AHMED TOUMANARI
Université Ibn zohr
TOUMANARI- LINUX DAYS-2008
PLAN- Algorithme distribué
- RPC
- RMI
- CORBA
- Service web
- Clustring
TOUMANARI- LINUX DAYS-2008
Introduction
Solutions : Synchronisation approximative des horloges physiques Utilisation d’horloges logiques
Déviation : synchronisation exacte impossible
TOUMANARI- LINUX DAYS-2008
NTP: Network Time Protocol
TOUMANARI- LINUX DAYS-2008
Temps & Horloges Logiques
1 2
5
43
1
,2
,4
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
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
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
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
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
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]
TOUMANARI- LINUX DAYS-2008
RPC
TOUMANARI- LINUX DAYS-2008
Principe des RPC
Port-M
apper Serveur
Requête ServiceIdentification
VersionSous-Version
ProtocoleN° de port
TOUMANARI- LINUX DAYS-2008
TOUMANARI- LINUX DAYS-2008
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
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
TOUMANARI- LINUX DAYS-2008
RMI
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
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
TOUMANARI- LINUX DAYS-2008
CORBA
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
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
TOUMANARI- LINUX DAYS-2008
POAManager & POA
ORB(orb)
POAManagerPOAPOAPOA*
Servant Servant Servant Servant Servant
Servant
Servant Servant
*RootPOA(rootpoa)
SERVEURRequêtes client
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
TOUMANARI- LINUX DAYS-2008
Un canal d’évènements
Producteur
Producteur
Consommateur
Consommateur
Consommateur
Consommateur
Canal
Flot des évènements
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);
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);
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()
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()
TOUMANARI- LINUX DAYS-2008
Service Web
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
TOUMANARI- LINUX DAYS-2008
CLUSTRING
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)
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…)
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
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
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 : MOSIXnodenumber IPaddress rangesize
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 openMosixtools et l’interface graphique openMosixview
• modifier le secteur de démarrage (grub ou lilo) et démarrer la machine sur le nouveau noyau
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
=
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
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
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
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
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
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
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
TOUMANARI- LINUX DAYS-2008
Merci de votre attention