lunedì 4 febbraio 2013

Esercitazione: Distribuzione di un API di EC2 di AWS


A 3scale troviamo Amazon per essere una piattaforma fantastica per l'esecuzione di API a causa del controllo completo che hai sul stack applicativo. Per le persone nuove AWS la curva di apprendimento è piuttosto ripida. Così abbiamo messo insieme le nostre best practice in questo breve tutorial. Oltre ad Amazon EC2 useremo la gemma rubino uva per creare l'interfaccia API e un proxy Nginx per gestire il controllo di accesso. Meglio di tutti tutto in questo tutorial è completamente GRATIS !
Ai fini di questo tutorial avrete bisogno di un API di esecuzione basato su server di Ruby e sottile. Se non si dispone di quello che si può semplicemente clonare un repository esempio come descritto di seguito (nella sezione "Distribuzione l'applicazione"). Se siete interessati sullo sfondo di questo esempio (API Sentiment), è possibile vedere un paio di guide precedenti che 3scale ha pubblicato. Qui usiamo version_1 delle API (' API installato e funzionante in 10 minuti ") con alcune funzionalità in più sentiment analysis (questa parte è trattato nel secondo tutorial del tutorial Sentiment API ).
Ora inizieremo la creazione e la configurazione dell'istanza di Amazon EC2. Se si dispone già di una istanza EC2 (micro o meno), è possibile passare al passo successivo - Istanza> Preparazione per la distribuzione.
Creazione e configurazione di istanza EC2
Cominciamo con la firma per l'Amazon Elastic Compute Cloud (Amazon EC2). Per le nostre esigenze il libero livello http://aws.amazon.com/free/ è sufficiente, che copre tutti i bisogni di base. Una volta che l'account è stato creato andare al cruscotto EC2 sotto la AWS Management Console e fare clic sul pulsante Avvia istanza. Che vi trasferimento a una finestra popup in cui si continuerà il processo:
  • Scegliere la procedura guidata classica
  • Scegli una AMI (Ubuntu Server 12.04.1 LTS 32 bit, ad esempio T1micro), lasciando tutte le altre impostazioni per Dettagli istanza come impostazione predefinita
  • Creare una coppia di chiavi e scaricarlo - questa sarà la chiave che si intende utilizzare per effettuare una connessione ssh al server, è molto importante!
  • Aggiungi regole in entrata per il firewall con fonte sempre 0.0.0.0 / 0 (HTTP, HTTPS, ALL, ICMP TCP porta 3000 utilizzata dal server Rubino sottile)
Preparazione di istanza per la distribuzione
Ora, come abbiamo creato l'istanza e in esecuzione, si può collegare direttamente lì dal nostro console (gli utenti Windows da PuTTY). Fare clic destro sul tuo esempio, collegare e scegliere Connetti con un client SSH standalone.
Collegamento al grado Amazon
Seguire i passaggi e modificare il nome utente per ubuntu (invece di root) nell'esempio dato.
connecting_linux_response
Dopo aver eseguito questo passaggio si è connessi alla propria istanza. Dovremo installare nuovi pacchetti. Alcune di esse richiedono credenziali di root, in modo da avere per impostare una nuova password di root: sudo passwd root . Poi il login come root: su root . 
Ora, con le credenziali di root eseguire: sudo apt-get update e tornare al vostro utente normale conuscita di comando e installare tutti i pacchetti necessari:

  • installare alcune librerie che saranno richieste dalla RVM, rubino e git:
    sudo apt-get install build-essential git-dev zlib1g-dev libssl libreadline GPLv2-imagemagick-dev libxml2-dev libxslt1-dev openssl libreadline6 libreadline6-dev zlib1g-dev libyaml libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison libpq -dev libpq5 libeditline-dev
  • install git (su Linux piuttosto che dalla Fonte): http://www.git-scm.com/book/en/Getting-Started-Installing-Git
  • installare rvm: https://rvm.io/rvm/install/
  • installare ruby
    • rvm install 1.9.3
    • rvm uso 1.9.3 - default
Distribuzione dell'applicazione
Il nostro sentimento API di esempio si trova su Github. Provare la clonazione del repository: git clone git@github.com: jerzyn / api-demo.git si può ancora una volta rivedere il codice e tutorial sulla creazione e la distribuzione di questa applicazione qui http://www.3scale.net/2012/07/how-to-out-of-the-box-api-analytics/ notare i cambiamenti (che stiamo utilizzando solo v1, l'autenticazione passerà attraverso il proxy).





Ora è possibile distribuire l'applicazione con il comando: install pacchetto . 
Ora è possibile avviare il server sottile: all'inizio sottile .
Per accedere alla API direttamente (cioè senza alcuna sicurezza o di controllo di accesso) di accesso: il-tuo-pubblico-dns: 3000/v1/words/awesome.json (è possibile trovare il-pubblico-dns in AWS EC2 Dashboard-> istanze del finestra dei dettagli del tuo esempio)
Dettagli AWS e DNS pubblici
Per l'integrazione Nginx è necessario creare un indirizzo IP elastico. All'interno della AWS EC2 cruscotto creare un IP elastico nella stessa regione, come l'istanza e associare tale IP ad esso (non dovrete pagare nulla per il PI elastico fino a quando è associato con l'istanza nella stessa regione).
IP associazione elastico
OPZIONALE : Se si desidera assegnare un dominio personalizzato per l'istanza di amazon si dovrà fare una cosa:
  • aggiungere un record per il record DNS del dominio mappatura del dominio all'indirizzo IP elastico è stato creato in precedenza. Il fornitore di dominio dovrebbe darvi qualche modo per impostare il record (l'indirizzo IPv4), o che vi darà la possibilità di modificare i nameserver del dominio. Se non consentono di impostare il record direttamente, trovare un servizio di gestione DNS, registrare il tuo dominio come zona lì e il servizio vi darà la nameserver per entrare nel pannello di amministrazione del provider di dominio. È quindi possibile aggiungere il record per il dominio. Alcuni possibili DNS servizi di gestione comprendono ZoneEdit (di base, gratuito), Amazon Route 53, ecc
A questo punto si API è aperta al mondo. Questo è un bene e il male - grande che si condivide, ma male nel senso che, senza limiti di frequenza alcune applicazioni potrebbe uccidere le risorse del server, e non avete comprensione che utilizzano la vostra API e come viene utilizzato. La soluzione è quella di aggiungere un po 'di gestione per la vostra API ...
Abilitazione API di gestione con 3scale
Invece di reinventare la ruota e applicare limiti di velocità, i controlli di accesso e di analisi da zero faremo leva il pratico 3scale servizio API di gestione. Ottieni il tuo account gratuito 3scale , attivare ed effettuare il log-in alla nuova istanza tramite link. La prima volta che il log-in è possibile scegliere l'opzione per alcuni dati di esempio da creare, in modo da avere alcune chiavi API da utilizzare in seguito. Poi si sarebbe probabilmente come passare attraverso il tour per avere un assaggio delle funzionalità di sistema (opzionale) e poi iniziare con l'attuazione.
Per ottenere dei risultati immediati inizieremo con il proxy sandbox che può essere utilizzato durante lo sviluppo. Poi ci sarà anche configurare un proxy Nginx capace di scalare fino a distribuzioni di produzione complete. C'è un po 'di documentazione sulla configurazione del proxy API a 3scale:https://support.3scale.net/howtos/api-configuration/nginx-proxy e per altre opzioni di configurazione avanzate qui: https://support.3scale.net / howto / api-configurazione / nginx-proxy-avanzato


Una volta che accedi al tuo account 3scale, Avviare il API sullo schermo principale o Dashboard Vai al API-> Selezionare il servizio (API) - Integrazione> nella barra laterale-> Proxy Impostare l'indirizzo del backend del vostro API - questo deve essere l'indirizzo IP elastico a meno che il dominio personalizzato è stato impostato, tra cui il protocollo http e la porta 3000. Ora è possibile salvare e attivare il proxy sandbox per testare la vostra API colpendo l'endpoint sandbox (dopo aver creato alcune credenziali di app in 3scale): http://sandbox-endpoint/v1/words/awesome.json?app_id=APP_ID&app_key=APP_KEY dove, APP_ID e APP_KEY sono id e la chiave di una delle applicazioni di esempio che si è creato al primo accesso al tuo account 3scale (se vi siete persi questo passaggio è sufficiente creare un account sviluppatore e una richiesta entro tale account).
Integrazione Proxy

Prova senza credenziali app, dopo con credenziali non corrette, e poi una volta autenticato entro e oltre gli eventuali limiti dei tassi che sono stati definiti. Solo una volta si sta lavorando per la vostra soddisfazione avete bisogno di scaricare i file di configurazione per Nginx.
Nota: ogni volta che si hanno errori di verificare se è possibile accedere direttamente l'API: il-tuo-pubblico-dns: 3000/v1/words/awesome.json. Se questo non è disponibile, allora avete bisogno di controllare se l'istanza AWS è in esecuzione e se il server è in esecuzione sottile sull'istanza.
Implementare un proxy Nginx per il controllo dell'accesso
Al fine di snellire questa fase si consiglia di installare l'fantastica applicazione web OpenResty che è fondamentalmente un fascio del nucleo Nginx standard con quasi tutti i moduli necessari terza parte Nginx built-in.
Installare le dipendenze: sudo apt-get install libreadline-dev libncurses5-dev libpcre3-dev perl
Compilare e installare Nginx:
  • cd ~
  • sudo wget http://agentzh.org/misc/nginx/ngx_openresty-1.2.3.8.tar.gz
  • sudo tar-zxvf ngx_openresty-1.2.3.8.tar.gz
  • cd ngx_openresty-1.2.3.8 /
  • . / Configure - prefix = / opt / openresty - with-luajit - con-http_iconv_module-j2
  • fare
  • sudo make install
Nel file di configurazione di apportare le seguenti modifiche:
  • modificare il file. conf di nginx scaricare
  • in linea 28, che è preceduta da informazioni per modificare il nome del server messo il dominio corretto (del vostro IP elastico o nome di dominio personalizzato)
  • in linea 78 modificare il percorso del file. lua, scaricato insieme al file. conf.
Abbiamo quasi finito! L'ultimo passo è quello di avviare il proxy nginx e mettere un po 'di traffico attraverso di essa. Se non è in esecuzione ancora (ricordate, quel server sottile deve essere avviato prima), si prega di andare al terminale istanza EC2 (quella che si connette tramite ssh prima) e iniziare subito: sudo / opt / openresty / nginx / sbin / nginx-p / opt / openresty / nginx /-c / opt / openresty / nginx / conf / YOUR-CONFIG-file.conf
L'ultimo passo sarà verificare che il traffico passa attraverso una autorizzazione. A tale scopo, l'accesso: http://your-public-dns/v1/words/awesome.json?app_id=APP_ID&app_key=APP_KEY dove, APP_ID e APP_KEY sono fondamentali e id dell'applicazione che si desidera accedere tramite la chiamata API. Una volta che tutto è confermato come funziona correttamente, si vuole bloccare l'accesso pubblico al backend API sulla porta 3000, che bypassa i controlli di accesso.

Se riscontrate dei problemi con la configurazione di Nginx o bisogno di una guida più dettagliata, vi incoraggio a controllare la guida 3scale sulla configurazione del proxy Nginx:https://support.3scale.net/howtos/api-configuration/nginx-proxy . Si può andare completamente selvaggio con personalizzazione del gateway API . Se si desidera immergersi di più nella configurazione del sistema 3scale (come l'utilizzo e il monitoraggio del traffico API) sentirsi incoraggiati a visitare il nostro Quickstart guide e HOWTO .


Nessun commento:

Posta un commento

Nota. Solo i membri di questo blog possono postare un commento.