Contenido


Gestionar su servicio de Auto-Scaling utilizando la API de REST

Incremente la elasticidad y la eficiencia de sus aplicaciones

Comments

Utilice el servicio de IBM Bluemix® Auto-Scaling para hacer que su aplicación sea elástica mediante la expansión de las métricas del tiempo de ejecución de la aplicación, como la memoria y el tiempo de respuesta. En este tutorial, entraré en detalle en una nueva función del servicio Auto-Scaling que permite que los usuarios gestionen su servicio de Auto-Scaling a través de REST API. Esta función es extremadamente útil para los usuarios que prefieren no gestionar su servicio de Auto-Scaling a través de la UI de Bluemix o que desean análizar más los datos de Auto-Scaling.

Utilice la REST API de Auto-Scaling para gestionar su servicio de Auto-Scaling, lo que puede ayudar a mejorar la elasticidad de su aplicación y ahorrar los costos generales cuando trabajaba sobre Bluemix.

Lo que necesitará para su aplicación

Paso 1. Unir su aplicación al servicio de Auto-Scaling

Es posible proporcionar a su aplicación la capacidad de Auto-Scaling mediante la unión de la aplicación con una estancia del servicio de Auto-Scaling. Vea "Hacer que su aplicación sea elástica en Bluemix"para aprender cómo desplegar su aplicación en Bluemix y unir el servicio de Auto-Scaling con la UI de Bluemix.

Con Cloud Foundry CLI, es posible emitir un comando cf para completar muchas tareas como lo haría con la UI de Bluemix. Por ejemplo, para unir el servicio de Auto-Scaling, haga lo siguiente:

  1. Verifique el actual servicio de Auto-Scaling utilizando el comando cf marketplace :
    > cf marketplace
    Obteniendo servicios del mercado en organización <ORG> / espacio <SPACE> como <USERNAME>...
    OK
    servicio                planes  descripción
    Auto-Scaling            gratuito Incrementa o reduce automáticamente el número de instancias de la aplicación basándose en una política que usted define.
    mysql                   100     MySQL database

    CONSEJO: Utilice cf marketplace -s <SERVICE> para ver descripciones de planes individuales de un determinado servicio.

  2. Cree una instancia del servicio de Auto-Scaling utilizando cf create-service:
    >cf create-service Auto-scaling free ScalingService
    Creando instancia de servicio ScalingService en <ORG> / espacio <SPACE> como <USERNAME>...
    OK
    >
  3. Una su aplicación con la instancia de un servicio y reiníciela:
    >cf bind-service <APP NAME> ScalingService
    Uniendo el servicio ScalingService a la aplicación Hello en la organización <ORG> / espacio <SPACE> como <USERNAME>...
    OK

    CONSEJO: Utilice cf restage <APP NAME> para garantizar que los cambios de variables de su entorno surten efecto.

    > cf restage <APP NAME>
    Reiniciando la aplicación Hello en organización <ORG> / espacio <ORG> como <USERNAME>...
    -----> Paquete de la aplicación descargado (4,0 K)
    -----> Caché del buildpack de la aplicación descargado (4,0 K)
              …
    >

Paso 2. Prepare los requisitos previos utilizados en la API de REST

La API de REST como se utiliza para el servicio Auto-Scaling tiene los siguientes requisitos previos: AccessToken, Endpoint y app_id.

  • Se utiliza el AccessToken en la cabecera de la autorización de cada REST API para indicar la validación de la solicitud necesaria. AccessToken es una credencial en forma de cadena de caracteres que se utiliza para acceder al recurso protegido y representar una autorización emitida por Cloud Foundry UAA procedimiento para el cliente. Vea "Cuenta de Usuario y Autenticación - Un apunte sobre Tokens" para una presentación del procedimiento del AccessToken y de Cloud Foundry UAA. El AccessToken se puede obtener a través del comando: cf oauth-token command:
    >cf oauth-token
    Getting OAuth token...
    OK
    bearer eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJhNjIzMGE1YS1mNzE3LTQ0YjItOWM3Yi1kNGJkYThhZGU0NjkiLCJzdWIiOiI4OGViNjM2My1hMjkzLTRlZTItYWQ1MS0yOGVkMTZmZjMwNzQiLCJzY29wZSI6WyJjbG91ZF9jb250cm9sbGVyLnJlYWQiLCJwYXNzd29yZC53cml0ZSIsImNsb3VkX2NvbnRyb2xsZXIud3JpdGUiLCJvcGVuaWQiXSwiY2xpZW50X2lkIjoiY2YiLCJjaWQiOiJjZiIsImF6cCI6ImNmIiwiZ3JhbnRfdHlwZSI6InBhc3N3b3JkIiwidXNlcl9pZCI6Ijg4ZWI2MzYzLWEyOTMtNGVlMi1hZDUxLTI4ZWQxNmZmMzA3NCIsIm9yaWdpbiI6InVhYSIsInVzZXJfbmFtZSI6InRlc3RAY24uaWJtLmNvbSIsImVtYWlsIjoidGVzdEBjbi5pYm0uY29tIiwicmV2X3NpZyI6ImQ4ZTRmNDAyIiwiaWF0IjoxNDU1NjA3NTQ1LCJleHAiOjE0NTU2NTA3NDUsImlzcyI6Imh0dHBzOi8vdWFhLnRlc3QubmcuYmx1ZW1peC5uZXQvb2F1dGgvdG9rZW4iLCJ6aWQiOiJ1YWEiLCJhdWQiOlsiY2xvdWRfY29udHJvbGxlciIsInBhc3N3b3JkIiwiY2YiLCJvcGVuaWQiXX0.rOLWkEqS6fuoCkDw-6U4sySbcYSWqrn_fNQL7fNCTvQ

La larga cadena de caracteres que se devuelve (comenzando con "bearer") es el AccessToken que usted utilizará. Este AccessToken también se puede encontrar en el archivo de configuración de Cloud Foundry CLI. Después de que esté instalado y de que usted haya iniciado sesión, aparecerá un archivo config.json en el directorio principal de su usuario actual. Busque "AccessToken" en ese archivo.

Nota: El AccessToken solo es válido por un periodo de tiempo limitado. Si el AccessToken estuviese caducado podría devolver una respuesta401 Unauthorized para la solicitud del API de REST. En ese caso, necesitará volver a iniciar sesión y obtener la última versión del AccessToken.

  • Punto de encuentro: El servidor de la API de Auto-Scaling sirve como punto de encuentro para la API de REST de Auto-Scaling. Después de que el servicio de Auto-Scaling esté enlazado a la aplicación, en la variable de entorno VCAP_SERVICE aparece una entrada del "api_url", en la parte de las "credenciales" de la sección del servicio de Auto-Scaling. Este es el URL del servidor API de Auto-Scaling con el que la aplicación está enlazada. Vea Enlazando Credenciales para más información sobre la estructura y principales campos utilizados en las credenciales de servicio de Cloud Foundry.
    {
      …
      "Auto-Scaling": [
      {
         "name": "Auto-Scaling-iw",
         "label": "Auto-Scaling",
         "plan": "free",
         "credentials": {
            "agentUsername": <AGENTUSERNAME>,
            "api_url": "https://ScalingAPI.test.bluemix.net",
            "service_id": "3f42b7ff-d939-4ff2-9a55-cb09cef9ab9e",
            "app_id": "2287f442-a7f3-4799-8919-d3908c386fa3",
            "url": "https://Scaling3.test.bluemix.net",
            "agentPassword": <AGENTPASSWORD>
         }
      }
     ]
    …
    }

    Las "credenciales" del servicio de Auto-Scaling también pueden encontrarse en el resultado devuelto de
    cf env <APPNAME> command:

     cf env <APPNAME>
    Obteniendo variables env para la aplicación Hello en organización <ORG> / espacio <SPACE> como <USERNAME>...
    OK
    
    System-Provided:
    {
     "VCAP_SERVICES": {
     "Auto-Scaling": [
     {
      "credentials": {
       "agentPassword": <AGENTPASSWORD>,
       "agentUsername": <AGENTUSERNAME>,
       "api_url": "https://ScalingAPI.test.bluemix.net",
       "app_id": "aa8d19b6-eceb-4b6e-b034-926a87e98a51",
       "service_id": "8f482f78-58d8-493c-829b-635e4cbfd817",
       "url": "https://Scaling.test.bluemix.net"
      },
      "label": "Auto-Scaling",
      "name": "ScalingService",
      "plan": "free",
      "tags": [
       "bluemix_extensions",
       "ibm_created",
       "dev_ops"
      ]
     }
    ...
  • El app_id se utiliza en cada API de REST; se puede encontrar en la variable de entorno VCAP_SERVICE, puede ejecutar el comando: cf app <APPNAME> --guid
    > cf app <APPNAME> --guid
    aa8d19b6-eceb-4b6e-b034-926a87e98a51
    >

Paso 3. Solicitar que la API de REST gestione el servicio de Auto-Scaling para su aplicación

Ahora que ha completado los requisitos previos de arriba, puede utilizar la API de REST para gestionar el servicio de Auto-Scaling para su aplicación. Actualmente, es posible hacer esta solicitud a la API de una de las dos maneras: el complemento RestClient de su navegador o a través de una herramienta como curl. Abajo, le muestro ambos casos.

Con el REST Client Add-on, como el de Firefox ilustrado en la Imagen 1, para ejecutar su comando puede desencadenar una solicitud de REST al servidor de la API de Auto-Scaling. Necesita suministrar al complemento lo siguiente:

  • El URL de esta API de REST
  • El método y la cabecera tal como requiere esta API de REST
  • Los parámetros de la parte del cuerpo
Figura 1. Utilizar el REST Client Add-on
Screenshot showing the REST Client Add-on
Screenshot showing the REST Client Add-on

Es posible encontrar una descripción detallada de cada API en el documento API de REST Pública para Auto-Scaling .

Para este caso específico de la API para Crear Política, necesita especificar tres cabeceras, como se muestra en la Imagen 1:

  • "Content-Type" como "application/json"
  • "Accept" como "application/json"
  • "Authorization" como valor del AccessToken

Esta API necesita el método PUT.

En el URL, la primera parte es el Endpoint de la API de Auto-Scaling, como puede ver en el Paso 2. Lo restante del URL depende de la API que utilice; para la API de Crear Política, esa parte del URL está con el formato v1/autoscaler/apps/appid/policy, donde "appid" se reemplaza con la GUID de la aplicación que quiere configurar utilizando la política de Auto-Scaling. Puede obtener el GUID de la aplicación mediante la verificación de VCAP_SERVICE, como está en el Paso 2.

En el cuerpo de la API de Crear Política, necesita suministrar un archivo de política con formato JSON para determinar la configuración de la política de escala para su aplicación. De nuevo, los detalles de la configuración de esa política se pueden encontrar en el documento API de REST Pública para Auto-Scaling .

Si el comando se ejecuta con éxito, se devolverán un código de estado y el cuerpo, y se mostrarán en la UI de RESTClient (vea la Imagen 1). Para esta API de Crear Política en particular, se devuelve "policyId". Si ocurriese un error o si fuese detectado por el servidor de la API de Auto-Scaling, se devolverá un mensaje de error con el código de estado que indica la información del error, como se muestra en la Imagen 2:

Figura 2. Ejemplo de mensaje de error
Screenshot showing example error message
Screenshot showing example error message

También puede llamar a la API de REST de Auto-Scaling a través de herramientas como curl, como muestra el código de abajo. Suministre valores para dichas variables como CF_ORG y SERVICE_NAME en el script y en el archivo JSON que define la política de Auto-Scaling, y luego haga lo siguiente:

Prepare la aplicación:

    #!/bin/bash -e
    $cfcmd login -o $CF_ORG -s $CF_SPACE -u $CF_USER -p $CF_PASSWORD        
    if [ $? -ne 0 ]; then
        echo "login failed"
        exit 255
    fi
    $cfcmd push  $APP_NAME -p $APP_FILE    
    if [ $? -ne 0 ]; then
        echo "push App failed"
        exit 254
    fi
    $cfcmd create-service $service free $SERVICE_NAME
    if [ $? -ne 0 ]; then
        echo "create service failed"
        exit 253
    fi
    $cfcmd bind-service $APP_NAME $SERVICE_NAME
    if [ $? -ne 0 ]; then
        echo "bind service failed"
        exit 252
    fi
    $cfcmd restage  ${APP_NAME}

Ejecute la API de REST de Crear Política:

if $cfcmd oauth-token | grep "Unknown command"  &> /dev/null ;
     then
        oauth_token=$($cfcmd oauth-token | grep bearer | sed -e s/bearer/Bearer/g)
    else
        oauth_token=` cat ~/.cf/config.json | grep AccessToken | awk -F ":" '{print $2}' | sed -e 's/[",]//g' | grep bearer | sed -e s/bearer/Bearer/g `
    fi

    app_guid=$($cfcmd app $APP_NAME --guid)
    API_url=$($cfcmd env $APP_NAME | grep "api_url" | awk '{print $2}' | cut -d "," -f1 | cut -d "\"" -f2 )

    # crear política
    cf_url="$API_url/v1/autoscaler/apps/$app_guid/policy"
    curl_cmd="curl $cf_url -X 'PUT' -H 'Content-Type:application/json'  -H 'Accept:application/json' -H 'Authorization:$oauth_token' --data-binary @policy.json -s -o response.txt -w '%{http_code}\n'"
    eval status_code=\$\($curl_cmd\)
    if [[ $status_code -eq 201 ]]; then
        echo "éxito al crear política"
    else
        echo "========== ERROR: crear política falló para la aplicación ${APP_NAME} con status_code: ${status_code}"
        exit 251
    fi

Con curl o con una herramienta similar, puede obtener los mismos resultados que con REST Client Browser Add-on. Sin embargo, el complemento de REST puede ser más flexible porque puede utilizarlo para manejar los datos de la respuesta, como extraer los datos del historial de la escala en un archivo .csv para un análisis más a fondo (vea la Imagen 3).

Figura 3. Ejemplo mostrando el historial de la escala
Screenshot showing scaling history
Screenshot showing scaling history

Conclusión

Ahora usted sabe cómo utilizar la REST API de Auto-Scaling para ser gestionar su servicio de Auto-Scaling, y realizar un análisis más a fondo de sus datos. Creo que encontrará fácil la utilización del servicio de Auto-Scaling, que ayuda a mejorar la elasticidad de su aplicación y puede reducir los costos generales cuando trabajaba sobre Bluemix.


Recursos para Descargar


Temas relacionados


Comentarios

Inicie Sesión o Regístrese para agregar comentarios.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Cloud computing
ArticleID=1034245
ArticleTitle=Gestionar su servicio de Auto-Scaling utilizando la API de REST
publish-date=06272016