VPS Facile – un nuovo servizio di hosting

Logo VPS FacileIn questo periodo sono stato molto impegnato nella realizzazione di un progetto che avevo in testa da un po’ di tempo.

Già un anno fa infatti mi ero reso conto che non esistono servizi low-cost per quanto riguarda gli hosting web (spazio web, posta, mysql) e hosting di server virtuali (VPS).

Per il mio lavoro, infatti, ho spesso bisogno di macchine virtuali pronte all’uso dove poter, per esempio, sviluppare un’applicazione o creare un repository, o un web server di test. Macchine virtuali che non hanno bisogno di grandi risorse e che mi servono per il tempo necessario di concludere il progetto o poco più.

E’ possibile creare un’infrastruttura di sviluppo e test che, attraverso delle policy e ACL ben definite, permetta a più clienti di accedere al proprio progetto in maniera separata e lavorare quindi sulla stessa macchina.

Io personalmente preferisco spendere 5-10 euro un più al mese e mantenere il mio lavoro personale indipendente dai progetti per terzi, avendo così la libertà di reinizializzare il sistema operativo, giocarci, installare velocemente dei tools che mi permettano di gestire il lavoro in maniera veloce – esempio un server FTP al volo con installazione di default, un repository SVN open se il progetto dura pochi giorni etc – piuttosto che modificare continuamente le configurazioni dei miei server di sviluppo o produzione o creare dei wizard per farlo.

Guardando nel mercato italiano, ho notato che i prezzi sono piuttosto alti, rispetto ad altri fornitori europei. Per avere un server con 15 GB e 512 MB di RAM hai bisogno di spendere circa 15 euro. Ho quindi pensato di creare un’infrastruttura capace di dare ai prodotti ampio respiro.

Ho quindi creato il mio servizio di hosting: VPS Facile

Il servizio, aperto dalla settimana è ancora in beta test. Per questo al momento sono in offerta lancio 10 VPS Entry level 1 a 3.99EUR i primi due mesi.

Il server Entry Level 1 prevede:

- 512MB Ram

- 15GB Hard disk

- 1 IP Pubblico

- 500GB di Traffico

Ai primi 10 che si registreranno dall’inzio dell’offerta, verrà inviato un coupon con un codice per accedere all’offerta.

Oltre a questo offriamo un servizio di hosting web: Spazio web, posta, databases e un servizio di monitoraggio basato su Nagios.

Seguiranno aggiornamenti!

Twitter del.icio.us Digg Facebook linked-in Yahoo Buzz StumbleUpon

Installazione della Chiavetta Onda MDC655 su Linux

Mi sono trovato in mano una Chiavetta TIM Onda MDC655 – quella della Ducati per intendersi -. Vediamo come utilizzarla su Linux senza installare il programma fornito da TIM.

Non mi sono mai piaciuti i programmi per le chiavette 3g/4g forniti dagli operatori telefonici (per Linux sono anche molto rari). Li trovo poco estetici e malfunzionanti. Per questo sono un grande fan di usb_modeswitch, software per far funzionare gran parte di questi device su Linux nativamente con wvdial. La Onda Ducati non è presente nella lista dei device supportati da usb_modeswitch, però è possibile utilizzarla ugualmente.

Prima di tutto installiamo usb_modeswitch:

apt-get install usb_modeswitch

Una volta inserito il device nella porta USB del pc, facendo un listato delle periferiche USB attaccate avremo:

lsub

[...]
Bus 001 Device 005: ID 1ee8:004a
[...]

Controllando il log del kernel avremo qualcosa simile a:

[ 9.840656] scsi 2:0:0:0: CD-ROM ONDA Datacard CD-ROM 0001 PQ: 0 ANSI: 0
[ 9.848203] scsi 2:0:0:1: Direct-Access ONDA Mass Storage 0001 PQ: 0 ANSI: 0
[ 9.856191] sd 2:0:0:1: [sdb] Attached SCSI removable disk
[ 9.857775] usb-storage: device scan complete
[ 9.934764] sr0: scsi3-mmc drive: 0x/0x caddy
[ 9.937760] Uniform CD-ROM driver Revision: 3.20
[ 9.940994] sr 2:0:0:0: Attached scsi CD-ROM sr0

Per poter effettuare lo switch al modem, dovremo digitare:

usb_modeswitch –default-vendor 0x1ee8 –default-product 0x004a –message-content 555342431234567800000000000010ff000000000000000000000000000000

Controlliamo di nuovo la lista dei device attaccati, dovremmo avere qualcosa simile a:

lsusb

[...]
Bus 001 Device 005: ID 1ee8:0049
[...]

e se controlliamo di nuovo i log del kernel avremo:

[ 96.663358] cdc_acm 1-3:1.0: ttyACM0: USB ACM device
[ 96.665830] cdc_acm 1-3:1.2: ttyACM1: USB ACM device
[ 96.669966] usbcore: registered new interface driver cdc_acm
[ 96.671791] cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters
[ 96.699277] usb0: register ‘cdc_ether’ at usb-0000:00:1d.7-3, CDC Ethernet Device, 02:8b:78:ec:ce:09
[ 96.701702] usbcore: registered new interface driver cdc_ether

La nostra pennetta ha effettuato lo switch come modem. Andiamo ora a configurare wvdial, questa è la configurazione per TIM:

vim /etc/wvdial.conf

[Dialer Defaults]
Modem = /dev/ttyACM1
ISDN = off
Modem Type = Analog Modem
Baud = 921600
Init1 = ATZ
Init2 = AT+CGDCONT=1,”IP”,”ibox.tim.it”
Phone = *99#
Dial Command = ATDT
Dial Attempts = 1
Ask Password = off
Username = ” ”
Password = ” ”
Auto Reconnect = on
Abort on Busy = off
Carrier Check = on
Check Def Route = on
Abort on No Dialtone = on
Stupid Mode = on
Idle Seconds = 0
Auto DNS = on

Chiudiamo e proviamo a connetterci:

wvdial

Se ci viene restituito un errore, proviamo a cambiare Modem = /dev/ttyACM1 con Modem = /dev/ttyACM0

Twitter del.icio.us Digg Facebook linked-in Yahoo Buzz StumbleUpon

Configurazione di un bonding tra due schede di rete

In questo articolo vedremo come configurare il link aggregation (Bonding) di due schede di rete in Debian, utile per creare connessioni ridondate ed aumentare il throughput del nostro server.

Il software di cui abbiamo bisogno è “ifenslave”, che serve per attivare o disattivare il bonding tra le due schede.

Un bonding device si comporterà come una normale interfaccia ethernet, ma invierà i pacchetti attraverso le interfacce secondarie (slaves) attraverso uno scheduler round-robin. Questo permette un load-balancing, del tutto simile alle tecniche Channel Bonding o Trunking usati negli switch.

Nel nostro esempio abbiamo due interfacce di rete:

202.54.1.1 (eth0)
192.168.1.254 (eth1)

Installiamo ifenslave:

apt-get install ifenslave-2.6

Creiamo ora un file chiamato /etc/modprobe.d/bonding.conf:

vim /etc/modprobe.d/bonding.conf

e vi inseriamo:

alias bond0 bonding
options bonding mode=0 arp_interval=100 arp_ip_target=192.168.1.254, 192.168.1.12

Salviamo e chiudiamo il file. Questa configurazione è molto importante in quanto sarà usata dal driver del Kernel di Linux chiamato “bonding”. Le opzioni sopra inserite sono:

  • mode=0: Dice al driver di usare lo scheduler balance-rr, che sarebbe il round robin. Questo è la modalità di default.
  • arp_interval=100: è l’intervallo (in millisecondi) per il controllo l’arp monitoring. Senza questo parametro all’avvio riceverete molti warning.
  • arp_ip_target=192.168.1.254, 192.168.1.12: usa l’interfaccia collegata al router (192.168.1.254) e l’IP 192.168.1.2 per effettuare l’arp monitoring quando l’arp_interval > 0. Questo è usato per determinare la salute dei nostri link. Possiamo inserire più indirizzi IP, delimitati da una virgola. Dobbiamo inserire chiaramente almeno un indirizzo IP.

A questo momento carichiamo il driver:

modprobe bonding

Controlliamo che l’interfaccia virtuale sia stata creata:

ifconfig bond0

Ora fermiamo le due interfacce preconfigurate:

/etc/init.d/networking stop

Mofifichiamo il file di configurazione della rete di debian:

cp /etc/network/interfaces /etc/network/interfaces.bak
vim /etc/network/interfaces

Eliminiamo le entry eth0 ed eth1 che al momento non servono più ed inseriamo la entry relativa al bonding:

# The primary network interface
auto bond0
iface bond0 inet static
address 192.168.1.10
netmask 255.255.255.0
network 192.168.1.0
gateway 192.168.1.254
slaves eth0 eth1
# jumbo frame support
mtu 9000
# Load balancing and fault tolerance
bond-mode balance-rr
bond-miimon 100
bond-downdelay 200
bond-updelay 200

Salviamo e chiudiamo.

Un po’ di spiegazione su quest’ultima entry:

  • address 192.168.1.10: indirizzo IP di bond0
  • netmask 255.255.255.0: netmask di bond0
  • network 192.168.1.0: network di bond0
  • gateway 192.168.1.254: default gateway di bond0
  • slaves eth0 eth1: specifichiamo le interfacce reali dove fare il bonding
  • mtu 9000: settiamo l’MTU a 9000
  • bond-mode balance-rr: settiamo il bonding come “Load balancing and fault tolerance”
  • bond-miimon 100: settiamo il link monitoring a 100 millisecondi
  • bond-downdelay 200: ritardo massimo di un link prima di essere dichiarato “failed”
  • bond-updelay 200: ritardo massimo di un link prima di essere dichiarato “up”

A questo punto effettuiamo un restart della rete:

/etc/init.d/networking restart

Controlliamo che tutto sia andato bene:

ifconfig

Dovremmo avere qualcosa simile a:

bond0 Link encap:Ethernet HWaddr 00:xx:yy:zz:tt:31
inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::208:9bff:fec4:3031/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:9000 Metric:1
RX packets:2414 errors:0 dropped:0 overruns:0 frame:0
TX packets:1559 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:206515 (201.6 KiB) TX bytes:480259 (469.0 KiB)
eth0 Link encap:Ethernet HWaddr 00:xx:yy:zz:tt:31
UP BROADCAST RUNNING SLAVE MULTICAST MTU:9000 Metric:1
RX packets:1214 errors:0 dropped:0 overruns:0 frame:0
TX packets:782 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:103318 (100.8 KiB) TX bytes:251419 (245.5 KiB)
Memory:fe9e0000-fea00000
eth1 Link encap:Ethernet HWaddr 00:xx:yy:zz:tt:31
UP BROADCAST RUNNING SLAVE MULTICAST MTU:9000 Metric:1
RX packets:1200 errors:0 dropped:0 overruns:0 frame:0
TX packets:777 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:103197 (100.7 KiB) TX bytes:228840 (223.4 KiB)
Memory:feae0000-feb00000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:560 (560.0 B) TX bytes:560 (560.0 B)

Per controllare lo status del bonding possiamo digitare:

cat /proc/net/bonding/bond0

Dovremmo avere qualcosa simile a:

Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 200
Down Delay (ms): 200
Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:xx:yy:zz:tt:31
Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:xx:yy:zz:tt:30

Se un link aggregation non è andato a buon fine avremo:

cat /proc/net/bonding/bond0

 

Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 200
Down Delay (ms): 200
Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:xx:yy:zz:tt:31
Slave Interface: eth1
MII Status: down
Link Failure Count: 1
Permanent HW addr: 00:xx:yy:zz:tt:30

Vi ricordo che anche il file /var/log/messages contiene importanti informazioni sullo stato del bonding:

Sep 5 04:20:21 nas01 kernel: [ 6517.492974] e1000e: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX
Sep 5 04:20:21 nas01 kernel: [ 6517.548029] bonding: bond0: link status up for interface eth1, enabling it in 200 ms.
Sep 5 04:20:21 nas01 kernel: [ 6517.748016] bonding: bond0: link status definitely up for interface eth1.

Sep 5 04:16:15 nas01 kernel: [ 6271.468218] e1000e: eth1 NIC Link is Down
Sep 5 04:16:15 nas01 kernel: [ 6271.548027] bonding: bond0: link status down for interface eth1, disabling it in 200 ms.
Sep 5 04:16:15 nas01 kernel: [ 6271.748018] bonding: bond0: link status definitely down for interface eth1, disabling it

Politiche di link aggregation del bonding di Linux

  • balance-rr or 0: Politica di round robin. I pacchetti sono inviati in sequenza dal primo slave disponibile fino all’ultimo. Questa modalità supporta il load balancing ed il fault tollerance.
  • active-backup or 1: Politica di backup attivo. Solo uno slave nel bond è attivo, Un altro slave diventa attivo soltanto se il primo fallisce. Questa modalità supporta il fault tollerance.
  • balance-xor or 2: secondo altre fonti la policy di default è [(source MAC address XOR'd with destination MAC address) modulo slave count]. Fornisce load balancing e fault tollerance
  • broadcast or 3: Trasmette tutto il traffico a tutti gli slave
  • 802.3ad or 4: Crea gruppi di aggregazione che condividono la stessa velocità e duplex. Utilizza gli slave attivi secondo lo standard 802.3ad. Molti switch avranno bisogno di configurazioni avanzate per utilizzare 802.3ad.
  • balance-tlb or 5: Il traffico in uscita è instradato secondo il carico sulle singole interfacce di rete. Il traffico in entrata è ricevuto dallo slave corrente. Se lo slave ricevente fallisce, un altro slave diventerà automaticamente ricevente prendendo il suo mac address.
  • balance-alb or 6: include il balance-tlb ed in più effettua il load balancing in entrata tramite l’arp negotiation.
Twitter del.icio.us Digg Facebook linked-in Yahoo Buzz StumbleUpon