bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


cluster_hardware_amb_pacemaker_i_corosync

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
cluster_hardware_amb_pacemaker_i_corosync [2023/07/03 05:36]
isaac_gonzalo_rivero [Conceptes previs]
cluster_hardware_amb_pacemaker_i_corosync [2023/07/06 06:52] (actual)
isaac_gonzalo_rivero
Línia 475: Línia 475:
 === Serveis === === Serveis ===
  
 +== Introducció ==
 Els serveis del cluster, també anomenats recursos, son els recursos que s'aniràn migrant de node a node mentre estigui el cluster disponible. Els serveis del cluster, també anomenats recursos, son els recursos que s'aniràn migrant de node a node mentre estigui el cluster disponible.
  
Línia 489: Línia 490:
   * IP flotant que ens donarà el servei al servidor Web (!72.16.84.10/24)   * IP flotant que ens donarà el servei al servidor Web (!72.16.84.10/24)
   * El servei web mateix (Nginx)   * El servei web mateix (Nginx)
-  * Els agents de vallat dels nodes (fence_node1, fence_node2, fence_node3)+  * Els agents de tanca dels nodes (fence_node1, fence_node2, fence_node3): Aquests agents es faran correr en els nodes que vigilen el node vallat, es a dir, en els nodes que no apareixen al nom del agent.
  
 +== IP i Nginx ==
  
-===== Operació ======+Obrim **crm configure**: 
 + 
 +<code bash> 
 +crm configure 
 +</code> 
 + 
 +I executem les seguents comandes per habilitar el agents de tanca més endavant (stonith-enable) i habilitar que el cluster continui funcionant amb un sol node (no-quorum-policy) 
 + 
 +≤code bash> 
 +crm(live/node1)configure# 
 +        property stonith-enabled=no 
 +        property no-quorum-policy=ignore 
 +</code> 
 + 
 +Ara, afegim els recursos per l'nginx (Aquest nginx l'hem instal·lat en el pas de generació de nodes, previament): 
 + 
 +Recorda, que si les teves IP's son diferents, les has de modificar, i has de definir l'adaptador que correspongui (Hauria de ser el mateix a tots els nodes!!!)  
 + 
 +<code bash> 
 +crm(live/node1)configure# primitive IP-nginx ocf:heartbeat:IPaddr2 params ip="172.16.84.10" nic="ens160" cidr_netmask="24" meta migration-threshold=2 op monitor interval=20 timeout=60 on-fail=restart 
 +crm(live/node1)configure# primitive Nginx-rsc ocf:heartbeat:nginx meta migration-threshold=2 option monitor interval=20 timeout=60 on-fail=restart 
 +crm(live/node1)configure# colocation lb-loc inf: IP-nginx Nginx-rsc 
 +crm(live/node1)configure# order lb-ord inf: IP-nginx Nginx-rsc 
 +crm(live/node1)configure# commit 
 +</code> 
 + 
 +Amb això, hem creat 2 recursos (IP-nginx i Nginx-rsc) i hem definit que: 
 +  * Els dos recursos corrin al mateix node 
 +  * La IP sempre estigui disponible 
 + 
 +Si en qualsevol moment ens equivoquem a l'hora de generar els recursos, (ens apareix qualsevol error per pantalla): 
 +  * Haurem de parar el recurs: <code bash>crm(live/node1)configure# up 
 +resource stop "nom_del_recurs" 
 +configure delete "nom_del_recurs" 
 +commit</code> 
 +  * Regenerar el recurs correctament i les subseqüents comandes. 
 + 
 +== Agents de tanca == 
 + 
 +La tanca es posa, perque, en cas que hi hagi un node malfuncionant per qualsevol motiu, es pugui aïllar del cluster 
 + 
 +Per evitar tocar la base de dades del cluster, i liar-la parda, primer generarem una CIB de proves (//Shadow cib//) 
 + 
 +<code bash> 
 +crm(live/node1)# cib new fencing 
 +INFO: cib.new: fencing shadow CIB created 
 +crm(fencing/node1)#  
 +</code> 
 + 
 +Per veure quins agents de //stonith// tenim, podem executar des de la linia de comandes de qualsevol node: 
 + 
 +<code bash> 
 +stonith_admin -I 
 +</code> 
 + 
 +Hi ha molts. Els executables son a **/usr/sbin** i al **man** de cada un d'ells surten les opcions que s'hi poden fer servir. 
 + 
 +Nosaltres farem servir **fence_virsh**, asumint que els nostres nodes son accesssibles via ssh, i hem habilitat l'access com a root. Si no fos així hauriem de configurar sudo per permetre que un usuari pogues executar les accions del cluster. 
 + 
 +<code bash> 
 +crm(fencing/node1)# configure 
 +crm(fencing/node1)configure# property stonith-enabled=yes 
 +crm(fencing/node1)configure# primitive fence_node01 stonith:fence_virsh params ipaddr=172.16.84.11 port=node1 action=off login=root passwd=Hola123 op monitor interval=60s 
 +crm(fencing/node1)configure# primitive fence_node02 stonith:fence_virsh params ipaddr=172.16.84.12 port=node2 action=off login=root passwd=Hola123 op monitor interval=60s 
 +crm(fencing/node1)configure# primitive fence_node03 stonith:fence_virsh params ipaddr=172.16.84.13 port=node3 action=off login=root passwd=Hola123 op monitor interval=60s 
 +crm(fencing/node1)configure# location l_fence_node01 fence_node01 -inf: node1 
 +crm(fencing/node1)configure# location l_fence_node02 fence_node02 -inf: node2 
 +crm(fencing/node1)configure# location l_fence_node03 fence_node03 -inf: node3 
 +commit 
 +</code> 
 + 
 +Amb això ja tindriem generats els agents de tanca. Podem simular el funcionament amb la nova cib: 
 + 
 +<code bash> 
 +crm(fencing/node1)configure# cib cibstatus simulate 
 +Current cluster status: 
 +  * Node List: 
 +    * Online: [ node1 node2 node3 ] 
 + 
 +  * Full List of Resources: 
 +    * IP-nginx (ocf:heartbeat:IPaddr2): Started node2 
 +    * Nginx-rsc (ocf:heartbeat:nginx): Started node2 
 +    * fence_node01 (stonith:fence_virsh): Stopped 
 +    * fence_node02 (stonith:fence_virsh): Stopped 
 +    * fence_node03 (stonith:fence_virsh): Stopped 
 + 
 +Transition Summary: 
 +  * Start      fence_node01     ( node3 ) 
 +  * Start      fence_node02     ( node1 ) 
 +  * Start      fence_node03     ( node1 ) 
 + 
 +Executing Cluster Transition: 
 +  * Resource action: fence_node01    monitor on node3 
 +  * Resource action: fence_node01    monitor on node2 
 +  * Resource action: fence_node01    monitor on node1 
 +  * Resource action: fence_node02    monitor on node3 
 +  * Resource action: fence_node02    monitor on node2 
 +  * Resource action: fence_node02    monitor on node1 
 +  * Resource action: fence_node03    monitor on node3 
 +  * Resource action: fence_node03    monitor on node2 
 +  * Resource action: fence_node03    monitor on node1 
 +  * Resource action: fence_node01    start on node3 
 +  * Resource action: fence_node02    start on node1 
 +  * Resource action: fence_node03    start on node1 
 +  * Resource action: fence_node01    monitor=60000 on node3 
 +  * Resource action: fence_node02    monitor=60000 on node1 
 +  * Resource action: fence_node03    monitor=60000 on node1 
 + 
 +Revised Cluster Status: 
 +  * Node List: 
 +    * Online: [ node1 node2 node3 ] 
 + 
 +  * Full List of Resources: 
 +    * IP-nginx (ocf:heartbeat:IPaddr2): Started node2 
 +    * Nginx-rsc (ocf:heartbeat:nginx): Started node2 
 +    * fence_node01 (stonith:fence_virsh): Started node3 
 +    * fence_node02 (stonith:fence_virsh): Started node1 
 +    * fence_node03 (stonith:fence_virsh): Started node1 
 + 
 +</code> 
 + 
 +I, si tot sembla correcte, podem pasar els canvis a producció: 
 + 
 +<code bash> 
 +crm(fencing/node1)configure# cib commit 
 +INFO: configure.cib.commit: committed 'fencing' shadow CIB to the cluster 
 +crm(fencing/node1)configure# cib use 
 +crm(live/node1)configure#  
 +</code> 
 + 
 +Per fer un check de l'status podem fer-ho amb **crm status* 
 + 
 +que ens haurà de donar un resultat semblant al següent: 
 + 
 +<code bash> 
 +crm_mon 
 + 
 +Cluster Summary: 
 +  * Stack: corosync 
 +  * Current DC: node2 (version 2.1.5-a3f44794f94) - partition with quorum 
 +  * Last updated: Mon Jul  3 08:41:48 2023 
 +  * Last change:  Mon Jul  3 08:40:06 2023 by root via cibadmin on node1 
 +  * 3 nodes configured 
 +  * 5 resource instances configured 
 + 
 +Node List: 
 +  * Online: [ node1 node2 node3 ] 
 + 
 +Active Resources: 
 +  * IP-nginx    (ocf:heartbeat:IPaddr2):         Started node2 
 +  * Nginx-rsc   (ocf:heartbeat:nginx):   Started node2 
 +  * fence_node01        (stonith:fence_virsh):   Started node3 
 +  * fence_node02        (stonith:fence_virsh):   Started node1 
 +  * fence_node03        (stonith:fence_virsh):   Started node1 
 + 
 +</code> 
 + 
 +Amb això ja tindrem el nostre Nginx en cluster corrent en 3 nodes, i podem jugar tancant i encenent nodes i comprovar com l'Nginx continua funcionant independentment del node on corri.
  
 ===== Referències ===== ===== Referències =====
cluster_hardware_amb_pacemaker_i_corosync.1688362601.txt.gz · Darrera modificació: 2023/07/03 05:36 per isaac_gonzalo_rivero