{"id":639,"date":"2019-07-18T11:43:06","date_gmt":"2019-07-18T17:43:06","guid":{"rendered":"https:\/\/ugit.siua.ac.cr\/?p=639"},"modified":"2019-09-25T13:46:39","modified_gmt":"2019-09-25T19:46:39","slug":"proxmox-5-problemas-al-agregar-un-nuevo-nodo-al-cluster","status":"publish","type":"post","link":"https:\/\/sada.services\/?p=639","title":{"rendered":"PROXMOX 5: Error al agregar un nuevo nodo al cluster"},"content":{"rendered":"\n<p>Se present\u00f3 al agregar a ARES al cluster, se cay\u00f3 el cluster y pas\u00f3 a modo solo de lectura, se solucion\u00f3 deteniendo el servicio de cluster en todos los nodos, editando los archivos de configuraci\u00f3n de COROSYNC de manera manual y aumentando el n\u00famero de versi\u00f3n para que se actualice, posteriormente se reiniciaron todos los servicios y los nodos, a continuaci\u00f3n se detalla el proceso realizado.<\/p>\n\n\n\n<p>1) Nos logeamos en todos los servidores, en el caso de que el cluster siga activo y tenga Quorum, y solo el \u00faltimo servidor agregado presente problemas, se debe realizar el proceso solo en el servidor con problemas, en caso contrario se debe hacer con todos los nodos que conforman el cluster<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh -l root 10.20.200.20<\/code><\/pre>\n\n\n\n<p>2) Detenemos los servicios relacionados al cluster<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/etc\/init.d\/pve-cluster stop\nservice corosync stop<\/code><\/pre>\n\n\n\n<p>3) Cambiarse a modo solo local<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pmxcfs -l<\/code><\/pre>\n\n\n\n<p>Aqu\u00ed hay 2 opciones, la primera que nos indica que se pasar\u00e1 a modo local a\u00fan cuando ya existe el archivo corosync.conf<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"even though corosync.conf is already present\"<\/code><\/pre>\n\n\n\n<p>en este caso todo marcha bien, la segunda opci\u00f3n es que nos indique que no es posible obtener \u00abthe lock\u00bb<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"unable to get the lock\"<\/code><\/pre>\n\n\n\n<p>en este caso debemops borrar el archivo \u00ab.pmxcfs.lockfile\u00bb y volver a ejecutar \u00abpmxcfs -l\u00bb<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rm \/var\/lib\/pve-cluster\/.pmxcfs.lockfile\npmxcfs -l<\/code><\/pre>\n\n\n\n<p>ahora deber\u00eda de mostrarnos la primera opci\u00f3n.<\/p>\n\n\n\n<p>Una vez que estamos en el modo local los archivos de la ruta \/etc\/pve\/ desaparecen, por ello vamos a crear el archivo \/etc\/pve\/corosync.conf manualmente en base a el archivo \/etc\/corosync\/corosync.conf,<\/p>\n\n\n\n<p>respaldamos \/etc\/corosync\/corosync.conf<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cp \/etc\/corosync\/corosync.conf \/etc\/corosync\/corosync.conf.bak<\/code><\/pre>\n\n\n\n<p>editamos \/etc\/corosync\/corosync.conf<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/corosync\/corosync.conf<\/code><\/pre>\n\n\n\n<p>Para este punto debemos tener claro como deber\u00eda lucir el archivo corosync.conf dado que nos daremos a la tarea de editarlo y debemos saber entre otras cosas el n\u00famero de nodos esperados y las IP de la red COROSYNC de cada nodo, el archivo para la configuraci\u00f3n de los servidores UGIT es<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>logging {\ndebug: off\nto_syslog: yes\n}\n\nnodelist {\nnode {\nname: ares\nnodeid: 4\nquorum_votes: 1\nring0_addr: 10.20.252.20\n}\nnode {\nname: hestia\nnodeid: 2\nquorum_votes: 1\nring0_addr: 10.20.252.30\n}\nnode {\nname: poseidon\nnodeid: 1\nquorum_votes: 1\nring0_addr: 10.20.252.14\n}\nnode {\nname: zeus\nnodeid: 3\nquorum_votes: 1\nring0_addr: 10.20.252.10\n}\n}\n\nquorum {\nprovider: corosync_votequorum\n}\n\ntotem {\ncluster_name: cluster-ugit-1\nconfig_version: 10\ninterface {\nbindnetaddr: 10.20.252.1\nringnumber: 0\n}\nip_version: ipv4\nsecauth: on\nversion: 2\n}<\/code><\/pre>\n\n\n\n<p>Y as\u00ed es como debe editar el archivo \/etc\/corosync\/corosync.conf, en nuestro caso debimos cambiar el<\/p>\n\n\n\n<p>\u00abring0_addr: ares\u00bb&nbsp; por \u00abring0_addr: 10.20.252.20\u00bb<\/p>\n\n\n\n<p>Si hace falta alg\u00fan nodo se agrega a la configuraci\u00f3n o se elimina de la misma seg\u00fan sea la necesidad, se debe subir la config_version para que sea actualizada y no sustituida al reiniciar el servicio, por ultimo se copia el archivo de configuraci\u00f3n de corosync<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cp \/etc\/corosync\/corosync.conf \/etc\/pve\/corosync.conf<\/code><\/pre>\n\n\n\n<p>y se reinician los servicios<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    \/etc\/init.d\/pve-cluster start\n    service corosync start\n    service pve-cluster start\n    service pvedaemon restart\n    service pveproxy restart<\/code><\/pre>\n\n\n\n<p>Al reiniciar pve-cluster nos daba un error que indica que no puede encontrar el archivo lock o que el mismo no es accesible, para ello debemos eliminarlo<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> rm \/var\/lib\/pve-cluster\/.pmxcfs.lockfile<\/code><\/pre>\n\n\n\n<p>y volvemos a reiniciar el cluster<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>service pve-cluster restart<\/code><\/pre>\n\n\n\n<p>Segu\u00eda dando un error, pero ahora indicaba que la ruta \/etc\/pve\/ no se encontraba disponible, o segu\u00eda desmontada para ello se reinician los nodos con este problema para que la ruta \/etc\/pve\/ sea montada de nuevo, si los servidores est\u00e1n en producci\u00f3n se puede intentar montar la ruta de manera manual, este ultim\u00f3 caso no se realiz\u00f3.<\/p>\n\n\n\n<p>Al reiniciar los nodos, el cluster estaba activo y sin ning\u00fan error en los logs.<\/p>\n\n\n\n<p>En nuestro caso inicialmente se saco a ARES del cluster, se arregl\u00f3 el cluster entre POSEIDON-HESTIA-ZEUS, y luego se reincorpor\u00f3 a ARES al cluster, lo mejor era arreglar el cluster desde la primera vez con los cuatro nodos ya que se debi\u00f3 repetir este proceso en ARES cuando se reincorpor\u00f3 al cluster, en este caso cuando se edit\u00f3 el \/etc\/pve\/corosync.conf de ARES en modo local, se puso la misma \u00abconfig_version\u00bb que se encontraba en el archivo \/etc\/pve\/corosync.conf de POSEIDON, una vez ARES estaba activo e incorporado al cluster se cambi\u00f3 nuevamente la config_version de POSEIDON para revisar que efectivamente se actualizaba en todos los nodos del cluster.<\/p>\n\n\n\n<p>Con el cluster entre ARES-POSEIDON-HESTIA-ZEUS funcionando, se prob\u00f3 la migraci\u00f3n de HESTIA-ARES indicando el error \u00abNo se puede accesar a la direcci\u00f3n de destino con la public_key\u00bb, para resolver esto debemos garantizar que la clave ssh_host_rsa_key.pub de cada servidor es conocida por cada uno de los nodos, para esto debemos garantizar que todos los nodos tenga el mismo contenido en el archivo<\/p>\n\n\n\n<p>\/etc\/ssh\/ssh_known_hosts, en donde deber\u00edan estar las llaves contenidas en \/etc\/ssh\/ssh_host_rsa_key.pub tanto para el nombre del servidor como para la IP, el formato del archivo \/etc\/ssh\/ssh_known_hosts debe ser<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>poseidon ssh-rsa \"public_key\"\n10.20.200.12 ssh-rsa \"public_key\"<\/code><\/pre>\n\n\n\n<p>Estas dos lineas debe aparecer por cada uno de los nodos miembros del cluster, cuando el cluster esta funcionando bien, el nodo master actualiza a los esclavos con su contenido de \/etc\/ssh\/ssh_known_hosts, en nuestro caso ARES no tenia este archivo y debimos crearlo, ademas de agregar la public_key de ARES contenida en etc\/ssh\/ssh_host_rsa_key.pub, al archivo \/etc\/ssh\/ssh_known_hosts de POSEIDON y luego copiar el archivo \/etc\/ssh\/ssh_known_hosts de POSEIDON en \/etc\/ssh\/ssh_known_hosts de ARES, HESTIA y ZEUS fueron actualizados por POSEIDON, al final los 4 nodos tienen la siguiente configuraci\u00f3n de \/etc\/ssh\/ssh_known_hosts<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>poseidon ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDR8qUapn\/DVaNqv3z1yAdTxby4qUAp4Br3GXh8eTuMAmrz8t+q2dXtNzq31dRkHAxx+OS1ADR3jqm63SJ9OUEDJZmMrtxLkXNDoAlkaRg2L6HYLhNBeDawa1XmBL7DDYETPZoorQ9S0g06qqbTIfwr\/CzleI+TLptc65R1iFlxa49pKOBJVbqwnv3Yc7t46WuMGZDbFdqPqpjOwZpHGXLeOGXz6N4ip3SFjQxXlKNhtgTMtaO7BVkJiupDN9ybfccLh6aHvB3TWFUk5aBLQtIodqaxAl5SSKfNL81FpfbtjNd0GlUA9QX5+AjtXprFCjgeXnQ5l0Dxq7UotAd44XYH\n10.20.200.14 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDR8qUapn\/DVaNqv3z1yAdTxby4qUAp4Br3GXh8eTuMAmrz8t+q2dXtNzq31dRkHAxx+OS1ADR3jqm63SJ9OUEDJZmMrtxLkXNDoAlkaRg2L6HYLhNBeDawa1XmBL7DDYETPZoorQ9S0g06qqbTIfwr\/CzleI+TLptc65R1iFlxa49pKOBJVbqwnv3Yc7t46WuMGZDbFdqPqpjOwZpHGXLeOGXz6N4ip3SFjQxXlKNhtgTMtaO7BVkJiupDN9ybfccLh6aHvB3TWFUk5aBLQtIodqaxAl5SSKfNL81FpfbtjNd0GlUA9QX5+AjtXprFCjgeXnQ5l0Dxq7UotAd44XYH\nhestia ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCobTYp1I5b488UQ1JaiL6m+maHUBss5iy55XH4gFo6TLDFI+VACtG6HuLbIQlYlqnwfJmsZz8WXzTcKAxq1ijh2SwZMDhFaBwl8uUt9W3JSJ0fex1DGXvfic\/uaGsU60FAO5\/mWxQEK9aF4H9w5GC0jiUpNGE5NG1C31oqHoYfjH6MGOnle0een\/pl26YNzIvXRDkvXPr7iq2EquBescD8ScFIfaR8kkVlT0znht2o56byyyYvGZFDnO8v9hL8CJAcxxcdem4KJl7AKo9w4nE5\/Cq5jcMvK4kdECa0q3fg5yAV6EeexYU6K58o9g2EHqjG04gXiZV4b+uK5Ue5TETD\n10.20.200.30 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCobTYp1I5b488UQ1JaiL6m+maHUBss5iy55XH4gFo6TLDFI+VACtG6HuLbIQlYlqnwfJmsZz8WXzTcKAxq1ijh2SwZMDhFaBwl8uUt9W3JSJ0fex1DGXvfic\/uaGsU60FAO5\/mWxQEK9aF4H9w5GC0jiUpNGE5NG1C31oqHoYfjH6MGOnle0een\/pl26YNzIvXRDkvXPr7iq2EquBescD8ScFIfaR8kkVlT0znht2o56byyyYvGZFDnO8v9hL8CJAcxxcdem4KJl7AKo9w4nE5\/Cq5jcMvK4kdECa0q3fg5yAV6EeexYU6K58o9g2EHqjG04gXiZV4b+uK5Ue5TETD\nzeus ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDXFNe9MZHlZmYhNkar4nUbeveO2RpMIUGXmV\/dALz8TNobjeJQJN0+nfqI4xrIkYhdoCVXxEc6b0S9M+VQXZXPMesrHSkYIY6peQPHN5ca8\/51b\/\/xtnf++TBlHq8BFH344eAMytZpH0syVZikUU9\/Dxx4yPfBma8C16UJp74\/dFEZ3ayD4Ww702uZTBIra\/c2iecMN\/JUB8BjXNa8PKLAlXekD9vO8RIMfaDqkXu4UbOwgzh\/qnymRLgtjh6K0qyFxKNIz+3U5pPb\/27mUA6kbgdOKlJOCU6\/dllBdbpbXVYvLY4ybjfvQDxlQ0YnjolGauarzDLTuGe41eKraPNt\n10.20.200.10 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDXFNe9MZHlZmYhNkar4nUbeveO2RpMIUGXmV\/dALz8TNobjeJQJN0+nfqI4xrIkYhdoCVXxEc6b0S9M+VQXZXPMesrHSkYIY6peQPHN5ca8\/51b\/\/xtnf++TBlHq8BFH344eAMytZpH0syVZikUU9\/Dxx4yPfBma8C16UJp74\/dFEZ3ayD4Ww702uZTBIra\/c2iecMN\/JUB8BjXNa8PKLAlXekD9vO8RIMfaDqkXu4UbOwgzh\/qnymRLgtjh6K0qyFxKNIz+3U5pPb\/27mUA6kbgdOKlJOCU6\/dllBdbpbXVYvLY4ybjfvQDxlQ0YnjolGauarzDLTuGe41eKraPNt\nares ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFyYTUR\/cNtMAbXj0aSp4+5AiSk+UP9B0jJICULWEXcm60eVSBfV5gvbi8aipIE+OtJkGm++MhgJo0J8tv+AH6lwIXeFfFeN\/Y1SiNgWRd\/b5H0rcAs1gjAMvz8I3iS2ax9TMZNi\/8E+dF1aLvEZLcpXUyA6f1gSbTIiQ0guv93at3EyJRzoGZgcDad6zt87exn0C9vkAWXj5JpJFtTM2Fql4HJ1zo930em2lt9k0B+PyPLE5hHYvxDzkBYsw5v9OAfGC\/ZcVbeMMeFCoFXIDedz6aXjNQ2VrTqhvhVVognEhbtX5v+otRsJjWzwSVPn5KMjMdk7+qRNORI+H9YTQV\n10.20.200.20 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFyYTUR\/cNtMAbXj0aSp4+5AiSk+UP9B0jJICULWEXcm60eVSBfV5gvbi8aipIE+OtJkGm++MhgJo0J8tv+AH6lwIXeFfFeN\/Y1SiNgWRd\/b5H0rcAs1gjAMvz8I3iS2ax9TMZNi\/8E+dF1aLvEZLcpXUyA6f1gSbTIiQ0guv93at3EyJRzoGZgcDad6zt87exn0C9vkAWXj5JpJFtTM2Fql4HJ1zo930em2lt9k0B+PyPLE5hHYvxDzkBYsw5v9OAfGC\/ZcVbeMMeFCoFXIDedz6aXjNQ2VrTqhvhVVognEhbtX5v+otRsJjWzwSVPn5KMjMdk7+qRNORI+H9YTQV<\/code><\/pre>\n\n\n\n<p>Finalmente se prob\u00f3 la migraci\u00f3n de una maquina virtual de HESTIA hacia ARES y viceversa con resultados satisfactorios.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Error al agregar al cluster<\/p>\n","protected":false},"author":2,"featured_media":2001,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[97,12],"class_list":["post-639","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-proxmox","tag-error","tag-proxmox"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":6}},"_links":{"self":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/639","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=639"}],"version-history":[{"count":2,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/639\/revisions"}],"predecessor-version":[{"id":2054,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/639\/revisions\/2054"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/media\/2001"}],"wp:attachment":[{"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=639"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=639"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=639"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}