martes, 25 de julio de 2017

Incrementa la velocidad de red en Linux con el algoritmo BBR de control de congestión de TCP

Incrementa la velocidad de red en linux con el algoritmo BBR de control de congestion de TCP.

Fuente.

Hace poco leí que TCP BBR ha aumentado significativamente el rendimiento y redujo la latencia de las conexiones en las redes backbone internas de Google y los servidores web google.com y YouTube en un 4 por ciento en promedio a nivel mundial y en más del 14 por ciento en algunos países. 

El parche TCP BBR debe aplicarse al kernel de Linux. El primer lanzamiento público de BBR fue aquí, en septiembre de 2016. El parche está disponible para cualquiera para descargar e instalar. Otra opción es usar Google Cloud Platform (GCP). GCP por defecto activado para utilizar un nuevo algoritmo de control de congestión de vanguardia denominado TCP BBR.

Todo ello gracias a la activación en el kernel Linux de BBR (bottleneck bandwidth and round-trip propagation time), el algoritmo de control de congestión de tráfico TCP. En esta entrada veremos cómo se activa en Linux, para lo que será necesaria la versión 4.9 o superior.






"BBR permite que los 500.000 sitios de WordPress en nuestra plataforma de experiencia digital se carguen a la velocidad de la luz.Según las pruebas de Google, el rendimiento de BBR puede alcanzar hasta 2.700x más alto que el mejor control de congestión basado en pérdidas de hoy. Innovaciones como BBR son sólo una de las muchas razones por las que nos asociamos con GCP ". 
- Jason Cohen, fundador y CTO, WP Engine


Requerimientos:

Asegúrese de que su kernel de Linux tiene la siguiente opción compilada como módulo o incorporada en el kernel de Linux:

 CONFIG_TCP_CONG_BBR

 CONFIG_NET_SCH_FQ

Debe utilizar el kernel de Linux versión 4.9 o superior. En un Debian / Ubuntu Linux, escriba el siguiente comando grep / egrep:

$ grep 'CONFIG_TCP_CONG_BBR' /boot/config-$(uname -r)
$ grep 'CONFIG_NET_SCH_FQ' /boot/config-$(uname -r)
$ egrep 'CONFIG_TCP_CONG_BBR|CONFIG_NET_SCH_FQ' /boot/config-$(uname -r)


Tiene que salir algo asi:


Estoy usando la versión del kernel de Linux 4.10.0-28. Si las opciones anteriores no se encuentran, debe compilar el último kernel o instalar la última versión del kernel de Linux utilizando el comando apt-get / apt.

Cómo habilitar el control de congestión TCP BBR en Linux


Edite el archivo /etc/sysctl.conf o cree un nuevo archivo en el directorio /etc/sysctl.d/:

$ sudo vi /etc/sysctl.conf
O
$ sudo vi /etc/sysctl.d/10-custom-kernel-bbr.conf
Añade las siguientes dos líneas:
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

Guarda y cierro el fichero por ejemplo usando el editor vim y teclea :x 
Después deber reiniciar o releer la configuración con comando sysctl

$ sudo reboot

O
$ sudo sysctl --system
Ejemplo de output:
* Applying /etc/sysctl.d/10-console-messages.conf ...
kernel.printk = 4 4 1 7
* Applying /etc/sysctl.d/10-custom.conf ...
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
* Applying /etc/sysctl.d/10-ipv6-privacy.conf ...
net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.default.use_tempaddr = 2
* Applying /etc/sysctl.d/10-kernel-hardening.conf ...
kernel.kptr_restrict = 1
* Applying /etc/sysctl.d/10-link-restrictions.conf ...
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
* Applying /etc/sysctl.d/10-lxd-inotify.conf ...
fs.inotify.max_user_instances = 1024
* Applying /etc/sysctl.d/10-magic-sysrq.conf ...
kernel.sysrq = 176
* Applying /etc/sysctl.d/10-network-security.conf ...
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1
* Applying /etc/sysctl.d/10-ptrace.conf ...
kernel.yama.ptrace_scope = 1
* Applying /etc/sysctl.d/10-zeropage.conf ...
vm.mmap_min_addr = 65536
* Applying /etc/sysctl.d/99-sysctl.conf ...
* Applying /etc/sysctl.conf ...

You can verify new settings with the following sysctl command. Run:
sysctl net.core.default_qdisc
net.core.default_qdisc = fq
sysctl net.ipv4.tcp_congestion_control
net.ipv4.tcp_congestion_control = bbr

Testearlo:

Puedes testearlo entre dos puntos distantes, con los puertos a Gigabit  conectados a internet y mandando entre  250Mbits/s y 800Mbits/s. puedes usar  por ejemplo el comando wget :

$ wget https://your-server-ip/file.iso
También me di cuenta de que era capaz de empujar casi 100 Mbit / s para mi tráfico OpenVPN. Anteriormente pude empujar hasta 30-40 Mbit / s solamente. En general estoy bastante satisfecho con TCP BBR opción de control de congestión para mi caja de Linux.
References

domingo, 23 de julio de 2017

Empezando en Cloud Spanner en 5 minutos.

Empezando en Cloud Spanner.

Google nos entrega en su Cloud Spanner que es una herramienta muy potente que puede ser usada por todos los Developer. Por primera vez, tiene acceso directo a la infraestructura de escala horizontal que proporciona transacciones globales (piense en aplicaciones que impliquen pagos, inventario, emisión de billetes o comercio financiero) y esta base de datos nos entre Consistencia sin comprometer la latencia. Pruebe con una base de datos RDBMS tradicional o no relacional.

 Gracias a la prueba gratuita de GCP  se pueden usar los  $ 300 en crédito por un año, puede pobar crear  con un clúster Cloud Spanner de un solo nodo durante un par de semanas. A continuación, le indicamos cómo hacerlo, utilizando la API de Spanner a través de gcloud. (Haga clic aquí si le gusta mas el gestionar el cloud con el uso del interface web.)

1 En la Consola de Google Cloud, vaya a la página Proyectos y cree un nuevo proyecto o abra un proyecto existente haciendo clic en el nombre del proyecto.

2 Abra una ventana de terminal y configure su proyecto como predeterminado para gcloud. Para ello, sustituya el ID del proyecto (no el nombre del proyecto) usando el comando:

gcloud config set project [MY_PROJECT_ID]

3 Habilite la facturación para su proyecto.

4 Active la API de Cloud Spanner para su proyecto.

5 Configure autenticación y autorización (Cloud Spanner utiliza OAuth 2.0) con el siguiente comando:

gcloud auth application-default login

Las bibliotecas cliente de API ahora recogen automáticamente las credenciales creadas. Sólo debe ejecutar el comando una vez por entorno de usuario local. (Nota: tenga en cuenta que esta forma de uso  es recomendado  para el desarrollo local, para el uso de producción, usted querrá utilizar un método diferente para la autenticación).

6  A continuación, cree una instancia de un único nodo:

gcloud spanner instances create test-instance
--config=regional-us-central1 \
--description="Test Instance" --nodes=1

7 Finalmente, cree una base de datos. Para crear una base de datos llamada test-db:


gcloud spanner databases create test-db --instance=test-instance


Alternativamente, puede descargar datos de ejemplo y trabajar  con estos  utilizando el idioma de su elección.

Y Eso es todo: ahora tiene su propia base de datos Cloud Spanner. Una vez más, el crédito de GCP que entrega Google debería permitirle ejecutarlo sin costo durante un par de semanas. Desde allí, puede descargar datos de ejemplo e interactuar con él utilizando el idioma de su elección.

jueves, 13 de julio de 2017

Creando VPN entre tu red y Google cloud

Como crear una VPN en Google Cloud.

Es posible unir  nuestra red local de casa  con la red local que se pesenta a los servidores de y VM que creamos en el cloud de Google mediante un sencillo  tunel VPN, encriptado.

En este video se muetra como configurar una vpn e los dos extremos, tanto en Google Cloud, como en el router de tu red local.

Para esta union se usa una vpn con ipsec, con IKA, aunque google soporta IKA2, en el video lo hacemos con IKA1, ya que el router no soporta una version mas alta.

Para este ejemplo el router basico que se usa, es el que viene de serie con mi Fibra, al final lo que conseguimos es pasarpor detras de los firewall que tienen que usar el resto de usuario desde internet, mientras nosotros conectamos de forma directa entre las redes locales, usando las ips, locales




Es como tirar un cable de red entre el datacenter de Google y nuestra red Local.
Por cierto con mi proveedor actual de internet el ping es de 43ms .

miércoles, 12 de julio de 2017

GAE/J one: Hoy empieza el reto crear un app en Google App Engine - Java

Google App Engine/Java


Hola comunidad hispana de desarrolladores, soy @jofrantoba y hoy empezaremos el reto de desarrollar una app completamente funcional con tecnología Google y tecnologías que se integran con esta Plataforma como servicio(PaaS). Esto lo vamos hacer paso a paso para que cualquier desarrollador con conocimientos básicos en Java pueda entederlo. En el camino iremos explicando uno a uno los conceptos y tecnologías que se usarán para enseñar como desarrollar las aplicaciones en el entorno standar de Google App Engine.

Como todo el que empieza a desarrollar con tecnologías que aun desconoce, primero necesita links de confianza donde empezar, entonces esta primera presentación y video es para ver que información necesitamos conocer antes de empezar en el mundo del desarrollo en Google App Engine.

Aquí dejare algunos enlaces de las tecnologías que aprenderemos:

Google Web Toolkit:

Página Oficial
MOOC Google Web Toolkit Jofrantoba

Google App Engine/ Java:
Página Oficial

API de Persistencia JDO:
JDO Google DataStore
Página Oficial

Google DataStore:
Página Oficial

Google Cloud Endpoints:
Página Oficial

Bueno eso es todo para este entrada; espero sus comentarios y sugerencias para ir mejorando y que sea beneficio para la comunidad. Saludos desde Perú.




lunes, 10 de julio de 2017

Elección de la mejor opción en Google Cloud [GCP]


La elección dentro de Google Cloud.

Cuando inicia un nuevo proyecto en Google Cloud Platform (GCP), una de las primeras decisiones que se tiene que tomar es qué servicio de cloud utilizar: Google Compute Engine, Google Container Engine, Google App Engine o Google Cloud Functions y Firebase.

GCP ofrece una gama de servicios de computación que van desde dar a los usuarios un control total (es decir, Compute Engine) hasta altamente abstraído (es decir, Firebase y Cloud Functions), permitiendo que Google cuide cada vez se encarge de  la gestión y las operaciones y entorno.

Si está acostumbrado a administrar VMs y desea una experiencia similar en el cloud, elija Compute Engine. Si utiliza contenedores y Kubernetes, puede abstraer algunos de los gastos generales de administración necesarios mediante el uso de Container Engine.

Si desea centrarse en su código y olvidarse de la infraestructura por completo, utilice App Engine.

Por último, si desea centrarse exclusivamente en el código y crear microservices para entregar API endpoints para sus aplicaciones, utilice Firebase y cloud Functions.

A lo largo de los años, nos han indicado que esta forma de seleccionar los sevicios que quermos del Cloud funciona, pero puede no ser la mejor formula y convertir en un reto si lo hace de este modo.

En Google se ha recopilado comentarios e información  y le proponemos otra forma de elegir sus opciones de cloud usando un conjunto de preguntas basado en restricciones. (Hay que indicar que estamos considerando aspectos muy pequeños de su proyecto.)

1. ¿Está construyendo una aplicación móvil o HTML que el uso de backend sea muy basico?
Si está construyendo un cliente pesado  que sólo se usa el un backend para sincronización y / o almacenamiento, Firebase es una gran opción . Firebase le permite almacenar documentos complejos NoSQL (o objetos si es así como piensa en ellos) y archivos usando una API y un cliente muy fácil de usar para iOS, Android y Javascript. También hay una API REST para acceder desde otras plataformas.

2. ¿Está construyendo un sistema basado más en eventos que en la interacción del usuario? En otras palabras, ¿está creando una aplicación que responde a los archivos cargados o tal vez a otras aplicaciones?
 ¿Está buscando soluciones "sin servidor" o "Funciones como servicio"? No busque más que Cloud Functions. Cloud Functions le permite escribir funciones Javascript que se ejecutan en Node.js y que pueden llamar a cualquiera de nuestras APIs, incluyendo Cloud Vision, Translate, Cloud Storage o más de otras 100. Con Cloud Functions, puede crear funciones individuales complejas que se exponen como microservicios para aprovechar todos los servicios sin tener que mantener los sistemas y juntarlos todos.

3. ¿Su solución ya existe en algún otro lugar? ¿Incluye software con licencia? ¿Requiere algo más que HTTP / S? 
Si respondió "no", App Engine es lo que tienes que  mirar. App Engine es una solución sin servidor que ejecuta el código en la infraestructura y le cobra sólo por lo que usa. Lo escalamos hacia arriba o hacia abajo para usted dependiendo de la demanda. Además, App Engine tiene acceso a todos los SDK de Google disponibles para que puedas aprovechar el ecosistema completo de Google Cloud.

4. ¿Está buscando construir un sistema basado en contenedores basado en Kubernetes?
Si ya está utilizando Kubernetes en GCP, deberas usar Container Engine.
 Container Engine reduce la construcción de un cloud de soluciones Kubernetes a un solo clic. Además, auto-escalas Kubernetes y miembros del clúster, lo que le permite construir soluciones basadas en  Kubernetes que crecen y basados en los  contrato en la demanda.

5. ¿Está montando sistemas completos? ¿Está buscando utilizar en su solución  GPUs ?¿Está construyendo una solución basada en contenedores que no sea Kubernetes? ¿Está migrando una solución on-prem existente al Cloud? ¿Está usando software con licencia? ¿Está utilizando protocolos distintos de HTTP / S?
¿No ha encontrado otra solución para satisfacer sus necesidades? Si respondió "sí" a cualquiera de estas preguntas, es probable que necesite ejecutar su solución en máquinas virtuales en Compute Engine. Compute Engine es nuestro producto de computación más flexible y le permite tener la mayor libertad para configurar y administrar sus máquinas virtuales como quiera.

Reúna todas estas preguntas y obtendrá el siguiente diagrama de flujo:


Este no es un árbol de decisiones completo, y cada uno de los productos soporta una gama más amplia de casos de uso que los presentados aquí. Pero esto debe ser una buen sitio para empezar.

Para obtener más información acerca de las soluciones de computación, consulta la sección de Informática de Google Cloud Platform y pruébala hoy mismo con $ 300 en créditos gratuitos cuando te registras.

Disfruta con el Cloud.

viernes, 7 de julio de 2017

Video de introducción a Qwiklabs con Google Cloud

Introducción a Google Cloud usando Qwiklabs.


Qwiklabs fue fundada en 2012 y  comprada por Google que le ha añadido muchos cursos sobre Google cloud Platform, o mas conocido como cursos de la plataforma de  Google Cloud.

Promocionado este blog estamos repartiendo códigos de acceso a los cursos. y para que veáis como funciona la plataforma y el uso de los códigos hemos preparado un video donde nos introducimos en la plataforma activamos un código y realizamos un curso  de google cloud.

Lo importante del video es el uso de la plataforma no la explicación de ese cursos.


Por otra parte he desactivado del resto de videos del canal la publicidad, no tiene sentido ademas molesta mientras se visualizan y no aporta economicamente nada, mas haya de la curiosidad de como funcionaba la retribución en youtube, pero eso es otro  entrada del blog.