\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{lun. janv. 26 14:07:32 CET 2015}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={cmap\_keys},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Vue générale dans le CMAP},
CreationDate={D:20150126140732},
ModDate={D:20150126140732},
Keywords={clustering;cluster messaging layer}
}}
\begin{document}
 
\begin{center}
{\Huge cmap\_keys }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Vue générale dans le CMAP}
 
\vspace{10mm}
 
\vspace{1cm}{\huge Description }
 
\
 
\hspace{1mm}  La librairie cmap est utilisée pour interagir avec la base de configuration utilisée par corosync. Il y a 3 types de clé stockés dans cmap: Mappage de valeurs stockées dans le fichier de configuration, statistiques temps réels, valeurs créées par l'utilisateur.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Clés }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} internal\_configuration.*]{Données de configuration interne. Ces clés sont lecture seule. Si une configuration spécifique au sous-système est nécessaire, la clé doit être sous la forme \textbf{logging.logger\_subsys.SERVICE.key} où SERVICE est un nom de service en majuscule et la clé est la même que dans le fichier de configuration.}
\item[\hspace{1mm} nodelist.*]{Valeurs lues depuis le fichier de configuration. Chaque élément node dans le fichier de configuration à une position assignées commençant à 0. Donc de premier nœud a le préfixe \textbf{nodelist.node.0.}.}
\item[\hspace{1mm} runtime.blackbox.*]{Trigger keys. Il est recommandé d'utiliser corosync-blackbox pour trouver facilement les adresses nodeid/ring du nœud local directement de cmap.}
\item[\hspace{1mm} runtime.connections.*]{Informations sur le nombre total de connexions actives, terminées, et sur chaque connexion IPC à un moment donné. Tous les clés sont lecture seules.}
\item[\hspace{1mm} runtime.connections.ID.*]{Chaque connexion IPC a un ID unique. C'est sous la forme \textbf{[[short\_name:][PID:]internal\_id}. Les clés typiques sont:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} client\_pid]{Contient le PID d'une connexion IPC}
\item[\hspace{6mm} dispatched]{avec le nombre de messages dispatchés}
\item[\hspace{6mm} invalid\_request]{nombre de requête faites par IPC qui sont invalides}
\item[\hspace{6mm} name]{Contenant le nom court d'une connexion IPC}
\item[\hspace{6mm} overload]{Nombre de de requêtes qui n'ont pas été traité à cause d'une surcharge}
\item[\hspace{6mm} queue\_size]{nombre de messages en queue d'attente d'envoie}
\item[\hspace{6mm} recv\_retries]{nombre total de réceptions interrompues}
\item[\hspace{6mm} requests]{nombre de requêtes faites par IPC}
\item[\hspace{6mm} responses]{nombre de réponses envoyées par IPC}
\item[\hspace{6mm} send\_retries]{nombre total d'envoies interrompues}
\item[\hspace{6mm} service\_id]{ID du service auquel IPC est connecté}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{1mm} runtime.services.*]{statistiques pour les moteurs de service. Chaque service a son propre service\_id avec un nom runtime.services.SERVICE., où SERVICE est un nom de service en minuscule.}
\item[\hspace{1mm} runtime.totem.pg.mrp.srp.*]{Statistiques sur totem. Les clés sont lecture seule:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} commit\_entered]{Nombre de fois qu'un processeur entre en état COMMIT}
\item[\hspace{6mm} commit\_token\_lost]{Nombre de fois qu'un processeur perd le token en état COMMIT}
\item[\hspace{6mm} consensus\_timeouts]{Nombre de fois qu'un processeur dépasse le délai en créant un consensus sur le membership}
\item[\hspace{6mm} continuous\_gather]{Nombre de fois qu'un processeur n'a pas été capable d'atteindre de consensus}
\item[\hspace{6mm} firewall\_enabled\_or\_nic\_failure]{à 1 quand le processeur n'a pas été capable d'atteindre le consensus depuis longtemps.}
\item[\hspace{6mm} gather\_entered]{Nombre de fois qu'un processeur entre à l'état GATHER}
\item[\hspace{6mm} gather\_token\_lost]{Nombre de fois qu'un processeur perd le token en état GATHER}
\item[\hspace{6mm} mcast\_retx]{Nombre de messages retransmis}
\item[\hspace{6mm} mcast\_rx]{Nombre de message multicast reçus}
\item[\hspace{6mm} mcast\_tx]{Nombre de message multicast transmis}
\item[\hspace{6mm} memb\_commit\_token\_rx]{Nombre de token reçus}
\item[\hspace{6mm} memb\_commit\_token\_tx]{Nombre de token émis}
\item[\hspace{6mm} memb\_join\_rx]{Nombre de message join reçus}
\item[\hspace{6mm} memb\_join\_tx]{Nombre de message join transmis}
\item[\hspace{6mm} memb\_merge\_detect\_rx]{Nombre de message member merge reçus}
\item[\hspace{6mm} memb\_merge\_detect\_tx]{Nombre de message member merge transmis}
\item[\hspace{6mm} orf\_token\_rx]{Nombre de tokens orf reçus}
\item[\hspace{6mm} orf\_token\_tx]{Nombre de tokens orf transmis}
\item[\hspace{6mm} recovery\_entered]{Nombre de fois qu'un processeur entre à l'état recovery}
\item[\hspace{6mm} recovery\_token\_lost]{Nombre de fois qu'un token a été perdu à l'état recovery}
\item[\hspace{6mm} rx\_msg\_dropped]{Nombre de messages reçus qui ont été supprimés parce qu'ils n'étaient pas attendus}
\item[\hspace{6mm} token\_hold\_cancel\_rx]{Nombre de token reçus contenant un message cancel}
\item[\hspace{6mm} token\_hold\_cancel\_tx]{Nombre de token émis contenant un message cancel}
\item[\hspace{6mm} mtt\_rx\_token]{Mean Transmis Time du token, en ms. temps entre 2 tokens consécutifs reçus}
\item[\hspace{6mm} avg\_token\_workload]{Temps moyen en ms du temps à maintenir le token dans le processeur courant}
\item[\hspace{6mm} avg\_backlog\_calc]{Temps moyen de message non encore envoyés du processeur courant.}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{1mm} runtime.totem.pg.mrp.srp.members.*]{Contient les membres du protocole totem. Chaque membre à le format runtime.totem.pg.mrp.srp.members.NODEID.KEY œu key peut être:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} ip]{L'adresse IP du membre}
\item[\hspace{6mm} joint\_count]{Nombre de fois que le processeur à joins le membership avec le processeur local.}
\item[\hspace{6mm} status]{Statut du processeur}
\item[\hspace{6mm} config\_version]{Version de configuration du nœud membre.}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{1mm} resources.process.PID.*]{Préfixe créé par les applications utilisant SAM avec l'intégration CMAP. Il contient les clés suivantes:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} recovery]{Stratégie de récupération du processus.}
\item[\hspace{6mm} poll\_period]{Valeur passée dans sam\_initialize comme time\_interval}
\item[\hspace{6mm} last\_updated]{Dernière fois que sam a reçus un heartbeat du client}
\item[\hspace{6mm} state]{État du client.}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{1mm} uidgid.*]{Les informations sur les utilisateurs/groupes qui sont autorisés à faire des connexions IPC à corosync}
\item[\hspace{1mm} quorum.cancel\_wait\_for\_all]{Dit à votequorum d'annuler l'attente de tous les nœuds au démarrage du cluster. Peut être utilisé pour débloquer le quorum si des nœud sont éteinds.}
\item[\hspace{1mm} config.reload\_in\_progress]{À 1 quand corosync.conf est rechargé, 0 sinon.}
\item[\hspace{1mm} config.totemconfig\_reload\_in\_progress]{Idem, mais changé après une configuration totem.}
\end{description}
 
\vspace{1cm}{\huge Exemples }
 
\
 
\hspace{1mm} Changer dynamiquement les permission user/group pour utiliser cororsync ipc: \\
\hspace{1mm} \textbf{corosync-cmapctl -s uidgid.uid.500 u8 1} \\
\hspace{1mm} GID est similaire: \\
\hspace{1mm} \textbf{corosync-cmapctl -s uidgid.gid.500 u8 1} \\
\hspace{1mm} Pour supprimer la permission, la supprimer: \\
\hspace{1mm} \textbf{corosync-cmapctl -d uidgid.gid.500} \\
\hspace{1mm} Ajouter/supprimer dynamiquement un nœud UDPU. On ajoute un nœud avec l'ip 10.34.38.108 et nodeid 3. On cherche une position de nœud qui n'est pas utilisée: \\
\hspace{1mm} \textbf{nodelist.local\_node\_pos (u32) = 1} \\
\hspace{1mm} \textbf{nodelist.node.0.nodeid (u32) = 1} \\
\hspace{1mm} \textbf{nodelist.node.0.ring0\_addr (str) = 10.34.38.106} \\
\hspace{1mm} \textbf{nodelist.node.1.nodeid (u32) = 2} \\
\hspace{1mm} \textbf{nodelist.node.1.ring0\_addr (str) = 10.34.38.107} \\
\hspace{1mm} Donc la position de nœud suivant sera 2: \\
\hspace{1mm} \textbf{corosync-cmapctl -s nodelist.node.2.nodeid u32 3} \\
\hspace{1mm} \textbf{corosync-cmapctl -s nodelist.node.2.ring0\_addr str 10.34.38.108} \\
\hspace{1mm} Toujours ajouter ring0\_addr en dernier \\
\end{flushleft}
\end{document}
