One place for hosting & domains

      Libro electrónico “Cómo crear código en Go”


      Descargue todo el EBook

      Libro electrónico Cómo crear código en Go en formato EPUB

      Libro electrónico Cómo crear código en Go en formato PDF

      Introducción al libro electrónico

      Este libro está diseñado como una introducción a la escritura de programas con el lenguaje de programación Go. Aprenderá cómo escribir herramientas y aplicaciones útiles para el desarrollo que puedan ejecutarse en servidores remotos o en sistemas locales de Windows, macOS y Linux.

      Este libro toma como base la serie de tutoriales publicados por la comunidad de DigitalOcean sobre Cómo crear código en Go. Los temas que abarca incluyen:

      1. Instalar y establecer un entorno local de desarrollo de Go en sistemas Windows, macOS y Linux

      2. Diseñar los programas con lógica condicional, incluidas las instrucciones de conmutación para controlar el flujo del programa

      3. Definir estructuras de datos propias y crear interfaces a dichas estructuras para el código reutilizable

      4. Escribir funciones personalizadas para la gestión de errores

      5. Compilar e instalar los programas de Go para que puedan ejecutarse en diferentes sistemas operativos y arquitecturas de CPU

      6. Utilizar indicadores para pasar argumentos a los programas, a fin de anular las opciones predeterminadas

      Cada capítulo puede leerse de manera independiente o utilizarse como referencia, o bien puede leerlos en orden. A medida que aprenda a utilizar Go con este libro, no dude en ir directamente al capítulo o a los capítulos que mejor se adapten a su propósito.

      Descargar el libro electrónico

      Puede descargar el libro electrónico en formato EPUB o PDF siguiendo los enlaces que se muestran a continuación.

      Descargue todo el EBook

      Libro electrónico Cómo crear código en Go en formato EPUB

      Libro electrónico Cómo crear código en Go en formato PDF

      Una vez que haya terminado de leer el libro, si quiere obtener más información sobre cómo crear herramientas y aplicaciones con Go, visite la sección sobre Go de la comunidad de DigitalOcean.



      Source link

      Cómo crear un grupo de almacenamiento redundante con GlusterFS en Ubuntu 20.04


      Justin Ellingwood escribió una versión anterior de este tutorial.

      Introducción

      Al almacenar datos cruciales, tener un punto único de fallo es muy arriesgado. Si bien muchas bases de datos y otros software permiten extender los datos en el contexto de una sola aplicación, otros sistemas pueden operar a nivel del sistema de archivos para garantizar que los datos se copien a otra ubicación cuando se escribe en disco.

      GlusterFS es un sistema de archivos de almacenamiento conectado a la red que le permite agrupar recursos de almacenamiento de varias máquinas. A su vez, esto permite manipular diversos dispositivos de almacenamiento que se distribuyen entre muchas computadoras como una unidad única y más potente. GlusterFS también faculta la creación de diferentes tipos de configuraciones de almacenamiento, muchas de las cuales son similares en cuanto a funcionalidad a los niveles de RAID. Por ejemplo, puede segmentar datos en diferentes nodos del clúster o implementar la redundancia para obtener una mejor disponibilidad de datos.

      Objetivos

      En esta guía, creará una matriz de almacenamiento agrupada y redundante, también conocida como sistema de archivos distribuidos, o como se la denomina en la documentación de GlusterFS, un grupo de almacenamiento de confianza. Esto proporcionará una funcionalidad similar a una configuración RAID en espejo a través de la red: cada servidor independiente contendrá una copia propia de los datos, lo que permitirá que sus aplicaciones puedan acceder a cualquier copia, y de este modo, contribuirá a la distribución de la carga de lectura.

      Este clúster redundante de GlusterFS consistirá en dos servidores Ubuntu 20.04. Actuará de manera similar a un servidor NAS con RAID en espejo. Después, podrá acceder al clúster desde un tercer servidor Ubuntu 20.04 que se configurará para funcionar como cliente de GlusterFS.

      Nota sobre cómo ejecutar GlusterFS de manera segura

      Cuando se agregan datos a un volumen de GlusterFS, esos datos se sincronizan con cada máquina del grupo de almacenamiento donde se aloja el volumen. Por defecto, el tráfico entre nodos no está cifrado, lo que significa que existe un riesgo de que agentes malintencionados los intercepten.

      Debido a esto, si planea utilizar GlusterFS con fines productivos, se recomienda que lo ejecute en una red aislada. Por ejemplo, podría configurarlo para ejecutar en una nube privada virtual (VPC) o con una VPN que se ejecute entre cada nodo.

      Si planea implementar GlusterFS en DigitalOcean, puede configurarlo en una red aislada agregando la infraestructura de su servidor a una nube privada virtual de DigitalOcean. Para obtener información sobre cómo configurarlo, consulte nuestra documentación sobre productos de VPC.

      Requisitos previos

      Para seguir este tutorial, necesitará tres servidores que ejecuten Ubuntu 20.04. Cada servidor debe tener un usuario no root con privilegios administrativos y un firewall configurado con UFW. Para configurar esto, siga la guía de configuración inicial de servidores para Ubuntu 20.04.

      Nota: Como se indica en la sección de objetivos, este tutorial le servirá como guía para configurar dos de los servidores Ubuntu para que actúen como servidores en su grupo de almacenamiento y el otro para actuar como cliente, el cual utilizará para acceder a estos nodos.

      Para mayor claridad, en este tutorial se hará referencia a estas máquinas con los siguientes nombres de host:

      Nombre de host Función en el grupo de almacenamiento
      gluster0 Servidor
      gluster1 Servidor
      gluster2 Cliente

      Los comandos que deban ejecutarse en gluster0 o gluster1 aparecerán sobre fondos azul y rojo, respectivamente:

      Los comandos que solo deban ejecutarse en el cliente (gluster2) aparecerán sobre un fondo verde:

      Los comandos que puedan o deban ejecutarse en más de una máquina aparecerán sobre un fondo gris:

      Paso 1: Configurar la resolución DNS en cada máquina

      Configurar algún tipo de resolución de nombres de host entre cada equipo puede ayudar a administrar el grupo de almacenamiento de Gluster. De esta manera, cuando en este tutorial tenga que hacer referencia a una de las máquinas en un comando gluster, puede utilizar un nombre de dominio fácil de recordar o incluso un sobrenombre en vez de las respectivas direcciones IP.

      Si no tiene un nombre de dominio extra, o si solo quiere realizar una configuración rápida, en su lugar puede modificar el archivo /etc/hosts en cada computadora. Este es un archivo especial en las máquinas Linux en el que puede configurar de forma estática el sistema para que establezca cualquier nombre de host que figure en el archivo como direcciones IP estáticas.

      Nota: Si quiere configurar los servidores para que se autentiquen con un dominio de su propiedad, primero deberá obtener un nombre de dominio de un registrador de dominios (como Namecheap o Enom) y configurar los registros DNS apropiados.

      Una vez que haya configurado un registro A para cada servidor, puede ir directamente al paso 2. A medida que sigue esta guía, asegúrese de sustituir glusterN.example.com y glusterN con el nombre de dominio que se convierte al servidor correspondiente al que se hace referencia en el comando de ejemplo.

      Si obtuvo la infraestructura de DigitalOcean, podría agregar el nombre de dominio a DigitalOcean y, luego, configurar un registro A único para cada uno de los servidores.

      Con su editor de texto preferido, abra este archivo con privilegios root en cada una de las máquinas. En este caso, utilizaremos nano:

      De forma predeterminada, el archivo tendrá el siguiente aspecto sin los comentarios:

      /etc/hosts

      127.0.1.1 hostname hostname
      127.0.0.1 localhost
      
      ::1 ip6-localhost ip6-loopback
      fe00::0 ip6-localnet
      ff00::0 ip6-mcastprefix
      ff02::1 ip6-allnodes
      ff02::2 ip6-allrouters
      ff02::3 ip6-allhosts
      

      En uno de los servidores Ubuntu, agregue la dirección IP de cada servidor seguida de cualquier nombre que quiera utilizar para referirse a ellos en los comandos que se encuentran debajo de la definición del host local.

      En el siguiente ejemplo, se proporciona a cada servidor un nombre de host largo que coincide con glusterN.example.com y uno corto que coincide con glusterN. Puede cambiar la parte de glusterN.example.com y glusterN de cada línea por cualquier nombre (o nombres separados por espacios individuales) que le gustaría utilizar para acceder a cada servidor. Sin embargo, tenga en cuenta que a lo largo de este tutorial se utilizarán los siguientes ejemplos:

      Nota: Si los servidores son parte de un grupo de infraestructura de la nube privada virtual, en el archivo /etc/hosts debería utilizar la dirección IP privada de cada servidor en vez de sus IP públicas.

      /etc/hosts

      . . .
      127.0.0.1       localhost
      first_ip_address gluster0.example.com gluster0
      second_ip_address gluster1.example.com gluster1
      third_ip_address gluster2.example.com gluster2
      
      . . .
      

      Cuando haya terminado de agregar estas nuevas líneas en el archivo /etc/hosts de una máquina, cópielas y agréguelas en los archivos /etc/hosts de las otras máquinas. Cada archivo /etc/hosts debería contener las mismas líneas, lo que vincula las direcciones IP de los servidores con los nombres que seleccionó.

      Guarde y cierre cada archivo cuando haya terminado. Si utiliza nano, podrá hacerlo presionando CTRL + X, Y y, luego, ENTER.

      Ahora que ha configurado la resolución de nombres de host entre cada servidor, será más sencillo ejecutar los comandos más adelante cuando configure un grupo y un volumen de almacenamiento. A continuación, realizará otro paso que debe completarse en cada uno de los servidores. Concretamente, agregará el archivo de paquetes personal (PPA) oficial del proyecto Gluster a cada uno de los tres servidores Ubuntu para garantizar que pueda instalar la versión más reciente de GlusterFS.

      Paso 2: Configurar las fuentes de software en cada máquina

      Si bien los repositorios APT predeterminados de Ubuntu 20.04 contienen paquetes de GlusterFS, al momento de escribir este artículo, no se trata de las versiones más recientes. Una forma de instalar la versión estable más reciente de GlusterFS (versión 7.6, al momento de redactar este artículo) es agregar el PPA oficial del proyecto Gluster a cada uno de los tres servidores Ubuntu.

      Ejecute el siguiente comando en cada servidor para agregar el PPA para los paquetes de GlusterFS:

      • sudo add-apt-repository ppa:gluster/glusterfs-7

      Cuando se le solicite, presione ENTER para confirmar que realmente quiere agregar el PPA.

      Tras agregar el PPA, actualice el índice local de paquetes de cada servidor. Esto hará que cada servidor sea informado sobre la presencia de los nuevos paquetes disponibles:

      Una vez que agregó el PPA oficial del proyecto Gluster a cada servidor y que actualizó el índice local de paquetes, está listo para instalar los paquetes necesarios de GlusterFS. Sin embargo, dado que dos de las tres máquinas actuarán como servidores de Gluster y la otra como cliente, existen dos procedimientos de instalación y configuración distintos. Primero, instalará y configurará los componentes del servidor.

      Paso 3: Instalar los componentes del servidor y crear un grupo de almacenamiento de confianza

      Un grupo de almacenamiento es toda capacidad de almacenamiento agregada a partir de dos o más recursos de almacenamiento. En este paso, configurará dos de los servidores (gluster0 y gluster1) como componentes del clúster.

      Escriba lo siguiente para instalar el paquete de servidor de GlusterFS en gluster0 y gluster1:

      • sudo apt install glusterfs-server

      Cuando se le solicite, presione Y y, luego, ENTER para confirmar la instalación.

      De manera automática, el proceso de instalación configura GlusterFS para que se ejecute como un servicio systemd. Sin embargo, no inicia automáticamente el servicio ni lo habilita para ejecutarse en el arranque.

      Para iniciar glusterd, el servicio de GlusterFS, ejecute el siguiente comando systemctl start en gluster0 y gluster1:

      • sudo systemctl start glusterd.service

      Luego, ejecute el siguiente comando en ambos servidores. Esto permitirá que el servicio se inicie cuando arranque el servidor:

      • sudo systemctl enable glusterd.service

      A continuación, puede verificar el estado del servicio en uno o en ambos servidores:

      • sudo systemctl status glusterd.service

      Si el servicio está activo y en ejecución, recibirá un resultado similar al siguiente:

      Output

      ● glusterd.service - GlusterFS, a clustered file-system server Loaded: loaded (/lib/systemd/system/glusterd.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2020-06-02 21:32:21 UTC; 32s ago Docs: man:glusterd(8) Main PID: 14742 (glusterd) Tasks: 9 (limit: 2362) CGroup: /system.slice/glusterd.service └─14742 /usr/sbin/glusterd -p /var/run/glusterd.pid --log-level INFO

      Suponiendo que cumplió con los requisitos previos de la guía de configuración inicial de servidores, habrá configurado un firewall con UFW en cada una de las máquinas. Debido a esto, deberá abrir el firewall en cada nodo para poder establecer comunicaciones entre ellos y crear un grupo de almacenamiento.

      El demonio de Gluster utiliza el puerto 24007, por lo que deberá permitir que cada nodo tenga acceso a ese puerto a través del firewall de cada uno de los otros nodos en su grupo de almacenamiento. Para hacerlo, ejecute el siguiente comando en gluster0. Recuerde cambiar gluster1_ip_address por la dirección IP de gluster1:

      • sudo ufw allow from gluster1_ip_address to any port 24007

      Y ejecute el siguiente comando en gluster1. Una vez más, asegúrese de cambiar gluster0_ip_address por la dirección IP de gluster0:

      • sudo ufw allow from gluster0_ip_address to any port 24007

      También deberá permitir que su máquina cliente (gluster2) tenga acceso a este puerto. De lo contrario, surgirán problemas más adelante cuando intente montar el volumen. Ejecute el siguiente comando tanto en gluster0 como en gluster1 para habilitar el acceso de su máquina cliente a este puerto:

      • sudo ufw allow from gluster2_ip_address to any port 24007

      A continuación, para garantizar que ninguna otra máquina pueda acceder al puerto de Gluster en ninguno de los servidores, agregue una norma general deny tanto en gluster0 como en gluster1:

      Ahora está listo para establecer la comunicación entre gluster0 y gluster1. Para hacerlo, deberá ejecutar el comando gluster peer probe en uno de los nodos. No importa qué nodo utilice, pero en el siguiente ejemplo se muestra la ejecución del comando en gluster0:

      • sudo gluster peer probe gluster1

      Básicamente, este comando le indica a gluster0 que confíe en gluster1 y que lo registre como parte de su grupo de almacenamiento. Si el sondeo es exitoso, devolverá el siguiente resultado:

      Output

      peer probe: success

      Para verificar en cualquier momento la comunicación entre los nodos, puede ejecutar el comando gluster peer status en cualquiera de los dos. En este ejemplo, se ejecuta en gluster1:

      Si ejecuta este comando desde gluster1, mostrará el resultado de la siguiente manera:

      Output

      Number of Peers: 1 Hostname: gluster0.example.com Uuid: a3fae496-c4eb-4b20-9ed2-7840230407be State: Peer in Cluster (Connected)

      En este momento, los dos servidores están comunicados y listos para crear volúmenes de almacenamiento entre sí.

      Paso 4: Crear un volumen de almacenamiento

      Recuerde que el objetivo principal de este tutorial es crear un grupo de almacenamiento redundante. Para ello, configurará un volumen con funcionalidad de réplica, lo que le permitirá mantener varias copias de los datos y evitar que el clúster tenga un punto único de fallo.

      Utilizará el comando gluster volume create con la siguiente sintaxis general para crear un volumen:

      sudo gluster volume create volume_name replica number_of_servers domain1.com:/path/to/data/directory domain2.com:/path/to/data/directory force
      

      A continuación, se describe el significado de los argumentos y las opciones del comando gluster volume create:

      • volume_name: Este es el nombre que utilizará para referirse al volumen una vez que lo haya creado. El siguiente comando de ejemplo crea un volumen denominado volume1.
      • replica number_of_servers: Después del nombre del volumen, puede definir el tipo de volumen que quiere crear. Recuerde que el objetivo de este tutorial es crear un grupo de almacenamiento redundante, por lo que utilizaremos el tipo de volumen replica. Se requiere un argumento que indique en cuántos servidores se replicarán los datos del volumen (en este caso, 2).
      • domain1.com:/… y domain2.com:/…: Estos definen las máquinas y la ubicación del directorio de los bricks (ladrillos) que constituirán volume1. Brick o ladrillo es el término que se utiliza en GlusterFS para hacer referencia a su unidad básica de almacenamiento, que incluye cualquier directorio o máquina que sirva como parte o copia de un volumen mayor. El siguiente ejemplo creará un directorio denominado gluster-storage en el directorio raíz de ambos servidores.
      • force: Esta opción anulará cualquier advertencia u opción que de otro modo podría surgir y detener la creación del volumen.

      Siguiendo las convenciones que se establecieron anteriormente en este tutorial, puede ejecutar este comando para crear un volumen. Tenga en cuenta que puede ejecutarlo desde gluster0, o bien desde gluster1:

      • sudo gluster volume create volume1 replica 2 gluster0.example.com:/gluster-storage gluster1.example.com:/gluster-storage force

      Si el volumen se creó correctamente, obtendrá el siguiente resultado:

      Output

      volume create: volume1: success: please start the volume to access data

      En este punto, el volumen se ha creado pero aún no está activo. Puede iniciar el volumen y habilitarlo para su uso ejecutando el siguiente comando, desde cualquiera de los servidores de Gluster:

      • sudo gluster volume start volume1

      Si el volumen se inició correctamente, verá el siguiente resultado:

      Output

      volume start: volume1: success

      A continuación, compruebe que el volumen está en línea. Ejecute el siguiente comando desde cualquiera de los dos nodos:

      • sudo gluster volume status

      Esto devolverá un resultado similar al siguiente:

      Output

      Status of volume: volume1 Gluster process TCP Port RDMA Port Online Pid ------------------------------------------------------------------------------ Brick gluster0.example.com:/gluster-storage 49152 0 Y 18801 Brick gluster1.example.com:/gluster-storage 49152 0 Y 19028 Self-heal Daemon on localhost N/A N/A Y 19049 Self-heal Daemon on gluster0.example.com N/A N/A Y 18822 Task Status of Volume volume1 ------------------------------------------------------------------------------ There are no active volume tasks

      Según este resultado, los ladrillos en ambos servidores están en línea.

      Como paso final para configurar el volumen, deberá abrir firewall en ambos servidores para que su máquina cliente pueda conectarse y montar el volumen. El resultado de muestra del comando anterior muestra que volume1 se está ejecutando en el puerto 49152 en ambas máquinas. Este es el puerto predeterminado de GlusterFS para su volumen inicial, y el siguiente volumen que cree utilizará el puerto 49153, y el siguiente el puerto 49154, y así sucesivamente.

      Ejecute el siguiente comando en gluster0 y gluster1 para permitir que gluster2 acceda a este puerto a través del firewall de cada uno:

      • sudo ufw allow from gluster2_ip_address to any port 49152

      A continuación, para tener una capa de seguridad adicional, agregue otra norma general deny para el puerto del volumen tanto en gluster0 como en gluster1. Esto garantizará que, en cualquiera de los servidores, solo su máquina cliente pueda acceder al volumen:

      Ahora que el volumen está activo y en ejecución, puede configurar la máquina cliente y comenzar a utilizarla de forma remota.

      Paso 5: Instalar y configurar los componentes del cliente

      El volumen ahora está configurado y disponible para que la máquina cliente lo utilice. Sin embargo, antes de comenzar, debe instalar el paquete glusterfs-client desde el PPA que configuró en su máquina cliente en el paso 1. Las dependencias de este paquete incluyen algunas de las bibliotecas y los módulos de traducción comunes de GlusterFS, como así también las herramientas de FUSE necesarias para que funcione.

      Ejecute el siguiente comando en gluster2:

      • sudo apt install glusterfs-client

      En breve, montará el volumen de almacenamiento remoto en el equipo cliente. Sin embargo, antes debe crear un punto de montaje. Generalmente, se ubica en el directorio /mnt, pero puede utilizarse cualquier lugar conveniente.

      Para simplificar, cree un directorio denominado /storage-pool en la máquina cliente para que sirva como el punto de montaje. El nombre de este directorio comienza con una barra diagonal (/) que lo ubica en el directorio raíz, por lo que deberá crearlo con privilegios sudo:

      Ahora puede montar el volumen remoto. Antes, sin embargo, observe la sintaxis del comando mount que utilizará para hacerlo:

      sudo mount -t glusterfs domain1.com:volume_name /path/to/mount/point
      

      mount es una utilidad que se encuentra en muchos sistemas operativos similares a Unix. Se utiliza para montar sistemas de archivos (desde dispositivos de almacenamiento externos, como tarjetas SD o dispositivos USB hasta almacenamiento conectado a la red, como es el caso de este tutorial) a los directorios en el sistema de archivos existente de la máquina. La sintaxis del comando mount que utilizará incluye la opción -t, que requiere tres argumentos: el tipo de sistema de archivos que se montará, el dispositivo en el que se encuentra el sistema de archivos que se montará y el directorio del cliente donde se montará el volumen.

      Observe que en este ejemplo de sintaxis, el argumento del dispositivo indica hacia un nombre de host seguido por dos puntos y el nombre del volumen. GlusterFS abstrae los directorios de almacenamiento reales en cada host, lo que significa que este comando no busca montar el directorio /gluster-storage, sino el volumen volume1.

      También tenga en cuenta que solo debe especificar un miembro del clúster de almacenamiento. Puede ser cualquiera de los nodos, ya que el servicio de GlusterFS los manipula como una sola máquina.

      Ejecute el siguiente comando en la máquina cliente (gluster2) para montar el volumen al directorio /storage-pool que creó:

      • sudo mount -t glusterfs gluster0.example.com:/volume1 /storage-pool

      Luego, ejecute el comando df. Esto mostrará la cantidad de espacio de disco disponible para los sistemas de archivos a los que tiene acceso el usuario que lo invoca:

      Este comando mostrará que el volumen de GlusterFS está montado en la ubicación correcta:

      Output

      Filesystem 1K-blocks Used Available Use% Mounted on . . . gluster0.example.com:/volume1 50633164 1938032 48695132 4% /storage-pool

      Ahora, puede avanzar y comprobar que cualquier dato que escriba en el volumen del cliente se copie a los nodos de su servidor como se esperaba.

      Paso 6: Poner a prueba las características de redundancia

      Ahora que ha configurado el cliente para que utilice el grupo y el volumen de almacenamiento, puede probar su funcionalidad.

      En la máquina cliente (gluster2), diríjase al punto de montaje que definió en el paso anterior:

      A continuación, cree algunos archivos de prueba. El siguiente comando crea diez archivos vacíos diferentes en el grupo de almacenamiento:

      • sudo touch file_{0..9}.test

      Si revisa los directorios de almacenamiento que definió anteriormente en cada host de almacenamiento, descubrirá que todos estos archivos están presentes en cada sistema.

      En gluster0:

      Output

      file_0.test file_2.test file_4.test file_6.test file_8.test file_1.test file_3.test file_5.test file_7.test file_9.test

      Del mismo modo, en gluster1:

      Output

      file_0.test file_2.test file_4.test file_6.test file_8.test file_1.test file_3.test file_5.test file_7.test file_9.test

      Como muestran estos resultados, los archivos de prueba que agregó al cliente también se escribieron en ambos nodos.

      Si en algún momento uno de los nodos del clúster de almacenamiento se desconecta, podría perder la sincronización con el grupo de almacenamiento si se realizan cambios en el sistema de archivos. Realizar una operación de lectura en el punto de montaje del cliente una vez que el nodo vuelva a estar en línea, alertará al nodo para que obtenga los archivos que faltan:

      Una vez que ha verificado que el volumen de almacenamiento se montó correctamente y que puede replicar los datos en ambas máquinas del clúster, puede bloquear el acceso al grupo de almacenamiento.

      Paso 7: Restringir las características de redundancia

      En este momento, cualquier computadora puede conectarse al volumen de almacenamiento sin ninguna restricción. Para modificar esto configure la opción auth.allow, que define las direcciones IP de los clientes que deberían tener acceso al volumen.

      Si está utilizando la configuración /etc/hosts, los nombres que estableció para cada servidor no se redirigirán correctamente. En su lugar, debe utilizar una dirección IP estática. Por otro lado, si utiliza registros DNS, el nombre de dominio que haya configurado funcionará aquí.

      Ejecute el siguiente comando en cualquiera de los nodos de almacenamiento (gluster0 o gluster1):

      • sudo gluster volume set volume1 auth.allow gluster2_ip_address

      Si el comando se completa correctamente, devolverá el siguiente resultado:

      Output

      volume set: success

      Si en algún momento necesita eliminar la restricción, puede escribir:

      • sudo gluster volume set volume1 auth.allow *

      Esto volverá a permitir las conexiones desde cualquier máquina. Esto no es seguro, pero puede ser útil para depurar problemas.

      Si tiene varios clientes, puede especificar sus direcciones IP o nombres de dominio al mismo tiempo (según esté utilizando la resolución de nombres de host /etc/hosts o DNS), separados por comas:

      • sudo gluster volume set volume1 auth.allow gluster_client1_ip,gluster_client2_ip

      Ahora el grupo de almacenamiento está configurado, protegido y listo para su uso. A continuación, aprenderá algunos comandos que le ayudarán a obtener información sobre el estado del grupo de almacenamiento.

      Paso 8: Obtener información sobre el grupo de almacenamiento con comandos de GlusterFS

      Cuando comienza a modificar algunas de las opciones de configuración del almacenamiento de GlusterFS, puede resultar confuso saber qué opciones tiene disponibles, qué volúmenes están en vivo y qué nodos se asocian con cada volumen.

      Existen diversos comandos disponibles en los nodos que permiten obtener estos datos e interactuar con el grupo de almacenamiento.

      Si quiere obtener información sobre cada uno de los volúmenes, ejecute el comando gluster volume info:

      Output

      Volume Name: volume1 Type: Replicate Volume ID: a1e03075-a223-43ab-a0f6-612585940b0c Status: Started Snapshot Count: 0 Number of Bricks: 1 x 2 = 2 Transport-type: tcp Bricks: Brick1: gluster0.example.com:/gluster-storage Brick2: gluster1.example.com:/gluster-storage Options Reconfigured: auth.allow: gluster2_ip_address transport.address-family: inet storage.fips-mode-rchecksum: on nfs.disable: on performance.client-io-threads: off

      Asimismo, para obtener información sobre cualquier punto al que esté conectado este nodo, puede escribir:

      Number of Peers: 1
      
      Hostname: gluster0.example.com
      Uuid: cb00a2fc-2384-41ac-b2a8-e7a1793bb5a9
      State: Peer in Cluster (Connected)
      

      Si quiere obtener información detallada sobre el rendimiento de cada nodo, puede crear el perfil de un volumen escribiendo lo siguiente:

      • sudo gluster volume profile volume_name start

      Cuando se complete el comando, escriba lo siguiente para obtener la información que se recopiló:

      • sudo gluster volume profile volume_name info

      Output

      Brick: gluster0.example.com:/gluster-storage -------------------------------------------- Cumulative Stats: %-latency Avg-latency Min-Latency Max-Latency No. of calls Fop --------- ----------- ----------- ----------- ------------ ---- 0.00 0.00 us 0.00 us 0.00 us 30 FORGET 0.00 0.00 us 0.00 us 0.00 us 36 RELEASE 0.00 0.00 us 0.00 us 0.00 us 38 RELEASEDIR Duration: 5445 seconds Data Read: 0 bytes Data Written: 0 bytes Interval 0 Stats: %-latency Avg-latency Min-Latency Max-Latency No. of calls Fop --------- ----------- ----------- ----------- ------------ ---- 0.00 0.00 us 0.00 us 0.00 us 30 FORGET 0.00 0.00 us 0.00 us 0.00 us 36 RELEASE 0.00 0.00 us 0.00 us 0.00 us 38 RELEASEDIR Duration: 5445 seconds Data Read: 0 bytes Data Written: 0 bytes . . .

      Tal como se mostró antes, utilice el comando gluster volume status para obtener una lista de todos los componentes asociados de GlusterFS que se ejecutan en cada uno de los nodos:

      • sudo gluster volume status

      Output

      Status of volume: volume1 Gluster process TCP Port RDMA Port Online Pid ------------------------------------------------------------------------------ Brick gluster0.example.com:/gluster-storage 49152 0 Y 19003 Brick gluster1.example.com:/gluster-storage 49152 0 Y 19040 Self-heal Daemon on localhost N/A N/A Y 19061 Self-heal Daemon on gluster0.example.com N/A N/A Y 19836 Task Status of Volume volume1 ------------------------------------------------------------------------------ There are no active volume tasks

      Si va a administrar los volúmenes de almacenamiento de GlusterFS, puede ser recomendable ir a la consola de GlusterFS. Esto le permitirá interactuar con el entorno de GlusterFS sin necesidad de anteponer sudo gluster a todo:

      Esto le mostrará un mensaje en el que podrá escribir los comandos. El comando help puede ayudarlo a encaminarse:

      Output

      peer help - display help for peer commands volume help - display help for volume commands volume bitrot help - display help for volume bitrot commands volume quota help - display help for volume quota commands snapshot help - display help for snapshot commands global help - list global commands

      Cuando haya terminado, ejecute exit para salir de la consola de Gluster:

      Con esto, está listo para comenzar a integrar GlusterFS con su próxima aplicación.

      Conclusión

      Al final de este tutorial, tendrá un sistema de almacenamiento redundante que le permitirá escribir simultáneamente en dos servidores separados. Esto puede resultar útil para varias aplicaciones y puede garantizar que los datos estén disponibles incluso cuando un servidor falla.



      Source link

      Cómo crear un servidor de Minecraft en Ubuntu 18.04


      El autor seleccionó el Tech Education Fund para que recibiese una donación como parte del programa Write for DOnations.

      Introducción

      Minecraft es un popular juego de video en espacio aislado. Su lanzamiento tuvo lugar originalmente en 2009 y, en él, los jugadores pueden hacer construcciones, explorar espacios, producir creaciones y sobrevivir en un mundo generado por bloques en 3D. Hasta finales de 2019, fue el segundo video juego de mayor venta de todos los tiempos. A través de este tutorial, creará su propio servidor de Minecraft para poder jugar con sus amigos. Específicamente, instalará los paquetes de software necesarios para ejecutar Minecraft, configurará el servidor para su ejecución y luego implementará el juego.

      De forma alternativa, puede explorar Minecraft en un solo clic con Minecraft Java Edition Server de un solo clic de DigitalOcean como otra ruta de instalación.

      En Este tutorial se utiliza la versión de Java de Minecraft. Si adquirió su versión de Minecraft a través de Microsoft App Store, no podrá conectarse a este servidor. La mayoría de las versiones de Minecraft que se adquieren en consolas de juegos, como PlayStation 4, Xbox One o Nintendo Switch también son de Microsoft. Estas consolas tampoco pueden conectarse al servidor creado en este tutorial. Puede obtener la versión de Java de Minecraft aquí.

      Requisitos previos

      Para completar los pasos de esta guía, necesitará lo siguiente:

      • Un servidor con una nueva instalación de Ubuntu 18.04, un non-root user con privilegios sudo y SSH habilitado. Puede seguir esta guía para inicializar su servidor y completar estos pasos. Minecraft puede hacer uso intensivo de recursos, así que téngalo en cuenta cuando seleccione el tamaño de su servidor. Si recurre a DigitalOcean y necesita más recursos, siempre puede cambiar el tamaño de su Droplet para añadir más CPU y RAM.

      • Una copia de Minecraft Java Edition instalada en una computadora local con Mac, Windows o Linux.

      Paso 1: Instalar los paquetes de software necesarios

      Una vez inicializado su servidor, su primer paso será instalar Java; necesitará que ejecute Minecraft.

      Actualice el índice de paquetes del administrador de paquetes APT:

      A continuación, instale la versión 8 de OpenJDK de Java; específicamente, el JRE sin encabezado. Esta es una versión mínima de Java en la que se elimina el apoyo para las aplicaciones GUI. Esto hace que sea ideal para ejecutar aplicaciones Java en un servidor:

      • sudo apt install openjdk-8-jre-headless

      También debe usar un software denominado screen para crear sesiones de servidor desacoplables. screen le permite crear una sesión terminal y desacoplarla de él, y dejar el proceso iniciado en ejecución. Esto es importante porque si inicia su servidor y luego cierra su terminal, esto terminaría la sesión y detendría su servidor. Instale screen ahora:

      Ahora que instaló Java, descargará el servidor de Minecraft desde el sitio web de Minecraft.

      Paso 2: Descargar la versión más reciente de Minecraft

      Ahora, debe descargar la versión actual del servidor de Minecraft. Puede hacerlo dirigiéndose al sitio web de Minecraft y copiando el enlace de descarga minecraft_server. X.X.X.jar​​, donde las X representan la versión más reciente del servidor.

      Ahora puede usar wget y el enlace que copió para descargar el servidor:

      • wget https://launcher.mojang.com/v1/objects/bb2b6b1aefcd70dfd1892149ac3a215f6c636b07/server.jar

      Si desea actualizar su servidor de Minecraft o si quiere ejecutar diferentes versiones de Minecraft, cambie el nombre de server.jar a minecraft_server_1.15.2jar, de modo que coincidan los números de versión resaltados con la versión que acaba de descargar:

      • mv server.jar minecraft_server_1.15.2.jar

      Si quiere descargar una versión anterior de Minecraft, puede encontrarla archivada en mcversions.net. Sin embargo, este tutorial se centrará en la versión reciente actual. Ahora que realizó la descarga, comenzaremos a configurar su servidor de Minecraft.

      Paso 3: Configurar y ejecutar el servidor de Minecraft

      Ahora que descargó el jar de Minecraft, estará listo para ejecutarlo.

      Primero, inicie una sesión de screen ejecutando el comando screen:

      Cuando haya leído el banner que apareció, presione la barra SPACE. screen le presentará una sesión terminal como es normal. Ahora, esta sesión es desacoplable, lo cual significa que usted podrá iniciar un comando aquí y dejarlo en ejecución.

      Ahora puede realizar su configuración inicial. No se alarme cuando este comando siguiente produzca un error. Minecraft ha diseñado su instalación de esta manera para que los usuarios deban aceptar por primera vez el acuerdo de licencia de la empresa. A continuación, hará lo siguiente:

      • java -Xms1024M -Xmx1024M -jar minecraft_server_1.15.2.jar nogui

      Antes de examinar el resultado de este comando, veremos en mayor detalle todos estos argumentos de línea de comandos con los que se aplican ajustes a su servidor:

      • Xms1024M: con esto se configura el servidor para comenzar a ejecutarse con 1024 MB o 1 GB de RAM. Puede aumentar este límite si quiere que su servidor empiece con más RAM. Tanto “M” como megabytes como “G” para gigabytes son opciones compatibles. Por ejemplo: Xms2G iniciará el servidor con 2 gigabytes de RAM.

      • Xmx1024M: con esto se configura el servidor para usar, como máximo, 1024 M de RAM. Puede aumentar este límite si quiere que su servidor se ejecute con un tamaño más grande y permitir más jugadores, o si siente que su servidor se ejecuta lentamente.

      • jar: este indicador especifica el archivo jar del servidor que se ejecutará.

      • nogui: indica al servidor que no inicie un GUI, ya que este es un servidor y no tiene una interfaz de usuario gráfica.

      La primera vez que ejecute este comando, que normalmente inicia su servidor, generará el siguiente error:

      Output

      [22:05:31] [22:05:31] [main/ERROR]: Failed to load properties from file: server.properties [22:05:31] [main/WARN]: Failed to load eula.txt [22:05:31] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

      Estos errores se generaron porque el servidor no pudo encontrar dos archivos necesarios para su ejecución: EULA (acuerdo de licencia de usuario final), que se encuentra en eula.txt, y el archivo de configuración server.properties. Afortunadamente, dado que el servidor no pudo encontrar estos archivos, los creó en su directorio de trabajo activo actual.

      Primero, abra eula.txt en nano o su editor de texto favorito:

      Dentro de este archivo, verá un enlace con el EULA de Minecraft. Copie la URL:

      ~/eula.txt

      #By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
      #Tue Mar 24 22:05:31 UTC 2020
      eula=false
      

      Abra la URL en su navegador web y lea el acuerdo. Luego, vuelva al editor de texto y encuentre la última línea en eula.txt. Aquí, cambie eula=false a eula=true. Ahora, guarde y cierre el archivo.

      Ahora que aceptó el EULA, es momento de configurar el servidor según sus especificaciones.

      En su directorio de trabajo actual, también encontrará el archivo server.properties que acaba de crear. Este archivo contiene todas las opciones de configuración de su servidor de Minecraft. Puede encontrar una lista detallada de todas las propiedades del servidor en el sitio Wiki oficial de Minecraft. Modifique este archivo con sus ajustes preferidos antes de iniciar su servidor. En este tutorial se abarcarán las propiedades fundamentales:

      El archivo aparecerá de la siguiente manera:

      ~/server.properties

      #Minecraft server properties
      #Thu Apr 30 23:42:29 UTC 2020
      spawn-protection=16
      max-tick-time=60000
      query.port=25565
      generator-settings=
      force-gamemode=false
      allow-nether=true
      enforce-whitelist=false
      gamemode=survival
      broadcast-console-to-ops=true
      enable-query=false
      player-idle-timeout=0
      difficulty=easy
      spawn-monsters=true
      broadcast-rcon-to-ops=true
      op-permission-level=4
      pvp=true
      snooper-enabled=true
      level-type=default
      hardcore=false
      enable-command-block=false
      max-players=20
      network-compression-threshold=256
      resource-pack-sha1=
      max-world-size=29999984
      function-permission-level=2
      rcon.port=25575
      server-port=25565
      server-ip=
      spawn-npcs=true
      allow-flight=false
      level-name=world
      view-distance=10
      resource-pack=
      spawn-animals=true
      white-list=false
      rcon.password=
      generate-structures=true
      online-mode=true
      max-build-height=256
      level-seed=
      prevent-proxy-connections=false
      use-native-transport=true
      motd=A Minecraft Server
      enable-rcon=false
      

      Veamos algunas de las propiedades más importantes en esta lista:

      • difficulty (por defecto, easy): establece la dificultad del juego, como la cantidad de daño que se maneja y cómo afectan los elementos al jugador. las opciones son peaceful, easy, normal y hard.

      • gamemode (por defecto, survival): configura el modo de juego. Las opciones son survival, creative, adventure y spectator.

      • level-name (por defecto, world): configura el nombre de su servidor que aparecerá en el cliente. Es posible que se deban indicar los caracteres como el apóstrofo escribiendo antes una diagonal invertida.

      • motd (por defecto, A Minecraft Server): mensaje que se muestra en la lista de servidores del cliente de Minecraft.

      • pvp (por defecto, true): permite un combate entre jugadores. Si se establece un valor true, los jugadores podrán involucrarse en un combate y producirse daño mutuamente.

      Cuando haya configurado las opciones que quiere, guarde y cierre el archivo.

      Ahora que cambió el parámetro de EULA a true y configuró sus ajustes, puede iniciar su servidor con éxito.

      Como la última vez, iniciaremos su servidor con 1024 MB de RAM. Solo que ahora también concederemos a Minecraft la capacidad de usar hasta 4G de RAM si lo necesita. Recuerde que está permitido ajustar este número para poder ajustarse a las limitaciones de su servidor o las necesidades de sus usuarios:

      • java -Xms1024M -Xmx4G -jar minecraft_server_1.15.2.jar nogui

      La inicialización puede tardar un momento. Pronto, su nuevo servidor de Minecraft comenzará a producir un resultado similar a este:

      Output

      [21:08:14] [Server thread/INFO]: Starting minecraft server version 1.15.2 [21:08:14] [Server thread/INFO]: Loading properties [21:08:14] [Server thread/INFO]: Default game type: SURVIVAL [21:08:14] [Server thread/INFO]: Generating keypair [21:08:15] [Server thread/INFO]: Starting minecraft server on *:25565

      Cuando el servidor esté activo, verá el siguiente resultado:

      Output

      [21:15:37] [Server thread/INFO]: Done (30.762s)! For help, type "help"

      Ahora, su servidor está en ejecución y usted accedió al panel de control del administrador del servidor. Ahora escriba help:

      Un resultado como este aparecerá:

      Output

      [21:15:37] [Server thread/INFO]: /advancement (grant|revoke) [21:15:37] [Server thread/INFO]: /ban <targets> [<reason>] [21:15:37] [Server thread/INFO]: /ban-ip <target> [<reason>] [21:15:37] [Server thread/INFO]: /banlist [ips|players] ...

      Desde esta terminal, puede ejecutar comandos administrador y controlar su servidor Minecraft. Ahora, usaremos screen para mantener el servidor nuevo en ejecución, incluso después de iniciar sesión. Luego, puede conectarse a su cliente de Minecraft e iniciar un juego nuevo.

      Paso 4: Mantener el servidor ejecutándose

      Ahora que está listo su servidor, le convendrá que siga ejecutándose aun después de desconectarse de su sesión de SSH. Debido a que utilizó screen anteriormente, puede desacoplarse de esta sesión presionando Ctrl + A + D. Ahora, regresará a su shell original.

      Ejecute este comando para ver todas las sesiones de screen:

      Obtendrá un resultado con el ID de su sesión, que necesitará para reanudar esa sesión:

      Output

      There is a screen on: 26653.pts-0.minecraft (03/25/20 21:18:31) (Detached) 1 Socket in /run/screen/S-root.

      Para reanudar su sesión, pase el indicador -r al comando screen y luego ingrese el ID de su sesión:

      Cuando esté listo para cerrar la sesión del servidor, asegúrese de desacoplarse de ella con Ctrl + A + D y luego cierre la sesión.

      Paso 5: Establecer conexión con su servidor desde el cliente de Minecraft

      Ahora que su servidor está listo y en ejecución, conéctese a él a través del cliente de Minecraft. ¡Con esto podrá jugar!

      Ejecute su copia de Minecraft Java Edition y seleccione Multiplayer en el menú.

      Selección de Multiplayer en el menú

      Luego, deberá añadir un servidor con el cual establecerá conexión. Haga clic en el botón Add Server.

      Selección del botón Add Server

      En la pantalla Edit Server Info que aparece, asigne un nombre a su servidor y escriba la dirección de IP de su servidor. Esta es la misma dirección IP que utilizó para conectarse a través de SSH.

      Asignación de un nombre a su servidor e introducción de la dirección IP

      Una vez que haya ingresado el nombre y la dirección IP de su servidor, accederá nuevamente a la pantalla del modo Multiplayer, donde ahora su servidor aparecerá en la lista.

      Selección del servidor y de la opción Join Server

      Desde ahora, su servidor siempre aparecerá en esta lista. Selecciónelo y haga clic en Join Server.

      ¡Disfrute del juego!

      ¡Ya se encuentra en su servidor y está listo para jugar!

      Conclusión

      Así, dispondrá de un servidor de Minecraft en ejecución en Ubuntu 18.04 para poder jugar con todos sus amigos. Diviértase abriéndose paso, haciendo creaciones y sobreviviendo en un duro mundo en 3D. Y recuerde: busque los “griefers”.



      Source link