Technische ondersteuning

Deployment

Hoe kan ik mijn account met SSH beheren?

De SSH services draaien op ssh.railscluster.nl op poort 2222. Inloggen vanaf de command line kan met:
ssh account@ssh.railscluster.nl -p 2222

Wat is een geschikt Capistrano recipe?

Het volgende recipe kan worden gebruikt als basis:

# vervang ACCOUNT met uw accountnaam
set :user, "ACCOUNT"

set :deploy_to, "/home/#{user}/web_root"
set :use_sudo, false

ssh_options[:port] = 2222
default_run_options[:pty] = false

server "ssh.railscluster.nl", :app, :web, :db, :primary => true

namespace :deploy do
  task :start, :roles => :app do
    run "touch #{current_release}/tmp/restart.txt"
  end

  task :stop, :roles => :app do
    # Do nothing.
  end

  task :restart, :roles => :app do
    run "touch #{current_release}/tmp/restart.txt"
  end
end

Als u Github gebruikt kunt u de onderstaande regels gebruiken in het Capistrano recipe. Let op dat de ssh keys ook moeten worden toegevoegd aan Github. Github Help heeft een tutorial hiervoor.

set :scm, "git"
set :branch, "master"
default_run_options[:pty] = true
default_environment["PATH"] = "/opt/ruby-enterprise/bin:/usr/local/bin:/usr/bin:/bin"
#If you use submodules:
set :git_enable_submodules, 1

#Vul hier uw Github gegevens in
set :repository,  "URL"
set :user, "USER"
set :scm_passphrase, "PASSWORD"

Hoe worden restarts sneller?

Vendorize het Ruby on Rails framework niet, oftewel verwijder de vendor/rails directory als die aanwezig is. RailsCluster houdt alle oudere versies van Ruby on Rails geïnstalleerd, dus vendorizen is niet nodig en vertraagt restarts.

Het cluster controleert minimaal iedere tien seconden of de applicatie herstart moet worden.

Waar moet ik mijn applicatie plaatsen?

De meest recente versie van Ruby on Rails en Rack applicaties dienen geïnstalleerd te worden in ~/web_root/current, dusdanig dat ~/web_root/current/public aanwezig is.

PHP applicaties dienen geïnstalleerd te worden in ~/web_root/current/public.

Voor deployment raden wij aan Capistrano te gebruiken. De capistrano en capistrano-ext gems zijn standaard geïnstalleerd op RailsCluster.

Waarom wordt mijn verbinding gereset tijdens deployen?

Forceer de SSH client om nu en dan een keep-alive packet te sturen. Voeg hiertoe het volgende toe aan ~/.ssh/config op de machine van waaraf wordt gedeployed:

ServerAliveInterval 15

Waarom heb ik geen toegang tot mijn applicatie?

Probleem: Forbidden - You don't have permission to access / on this server.
Oplossing: Permissies zijn incorrect, de applicatie is niet volledig, of er mist een index.html bestand in de public directory. Controleer dat alle bestanden chmod 644 en directories chmod 755 zijn en dat de applicatie of ~/web_root/current/public/index.html aanwezig en volledig is. Uw applicatie kan nog niet gelezen worden door Apache omdat de rechten niet goed ingesteld zijn. De user of group “apache” heeft leesrechten nodig op environment.rb of config.ru.

Hoe herstart ik mijn applicatie?

Om uw applicatie te herstarten kunt u gebruiken maken van het bovenstaande Capistrano recipe. Als alternatief kunt u touch ~/web_root/current/tmp/restart.txt uitvoeren terwijl u bent ingelogd met SSH.

Hoe kan ik met cron commando’s uitvoeren?

Hiervoor dienen twee punten in acht worden genomen:

  • Stel het juiste pad in voor Ruby. Zonder dit pad kunt u geen Rake commando’s uitvoeren en kunt u geen gebruik maken van de geïnstalleerde RubyGems.
  • Gebruik /usr/local/bin/cluster_task om te verzekeren dat scripts niet dubbel en tegelijk draaien. Dit verbetert performance en voorkomt race conditions in uw applicatie.

Bijvoorbeeld:

PATH=/opt/ruby-enterprise/bin:/usr/local/bin:/usr/bin:/bin
0 * * * * /usr/local/bin/cluster_task rake cron:hourly

Of met nicknames:

PATH=/opt/ruby-enterprise/bin:/usr/local/bin:/usr/bin:/bin
@hourly /usr/local/bin/cluster_task rake cron:hourly

Hoe kan ik met Capistrano Rake commando’s uitvoeren?

Zet het volgende in het Capistrano recipe: default_run_options[:pty] = false

Waarom krijg ik Net::SFTP::StatusException foutmeldingen met Capistrano SFTP uploads?

Zet het volgende in uw Capistrano recipe: set :deploy_to, "/home/#{user}/web_root"

Welke frameworks kan ik gebruiken op RailsCluster?

De ondersteuning op RailsCluster van frameworks die de Rack interface gebruiken komt voort uit het gebruik van Phusion Passenger. Dit betekent dat applicaties op basis van Camping, Halcyon, Mack, Merb, Ramaze en Sinatra ook op RailsCluster werken.

Top

Databases

Wat voor database kan ik het beste gebruiken?

RailsCluster ondersteunt MySQL en PostgreSQL databases. Bij ieder account wordt een database aangemaakt op beide systemen. Naast de gebruikelijke verschillen tussen MySQL en PostgreSQL is er ook een verschil in infrastructuur op RailsCluster. MySQL is uitgevoerd in een master-slave configuratie met automatische failover, terwijl PostgreSQL is uitgevoerd in een load-balancing multi-master configuratie met degeneratie.
Door dit verschil is PostgreSQL twee keer sneller bij leesoperaties maar 7-15% trager bij schrijfoperaties. Voor werkelijke performance is het profiel van de webapplicatie dus belangrijk.

Wat voor MySQL database engine kan ik het beste gebruiken?

Wanneer u gebruik maakt van de MySQL database, raden wij u aan om de InnoDB database engine te gebruiken. InnoDB tabellen zijn transactioneel en ontworpen om integriteit te bewaren. MyISAM tabellen zijn dat niet en daarom kunnen noch MyISAM, noch RailsCluster garanderen dat er geen corruptie optreedt als er een node van het cluster uitvalt.

Welke database versies gebruikt RailsCluster?

Momenteel wordt MySQL 5.1 aangeboden. De server is geoptimaliseerd voor InnoDB tabellen.
Momenteel wordt PostgreSQL 8.4 aangeboden.

Ik kan geen verbinding maken met de MySQL server

Probleem: 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)
Oplossing: MySQL draait op een aparte host genaamd ‘mysql’. Zet daarom het volgende in database.yml:

production:
  host: mysql

Ik kan geen verbinding maken met de PostgreSQL server

Probleem: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.0"?
Oplossing: PostgreSQL draait op een aparte host genaamd ‘postgresql’. Zet daarom het volgende in database.yml:

production:
  host: postgresql
Top

Daemons

Ondersteunen jullie background daemons?

Ja, wij ondersteunen background daemons voor een extra maandelijks bedrag. Wij voorzien u met scripts en rechten om daemons te stoppen en te starten op het cluster. Daemons waarvan we weten dat ze goed werken zijn onder andere Ferret, memcached en Sphinx. Neem contact met ons op voor meer informatie.

Hoe beheer ik mijn background daemons?

Als u de rechten heeft om background daemons te gebruiken, dan kunt u cluster_service [daemon] {start|stop|restart|status} gebruiken.

Waar draaien mijn background daemons?

Als u de rechten heeft om background daemons te gebruiken en de daemon succesvol hebt gestart, dan draait de daemon op daemon.railcluster.nl. Dit is alleen toegankelijk binnen het RailsCluster platform.

Let u goed op de specifieke poort waarop uw daemon draait. Deze informatie is u toegestuurd toen we uw account rechten hebben gegeven voor background daemons. U kunt de configuratie ook bekijken in ~/bin/cluster_[daemon]_wrapper of ~/etc/[daemon].conf, afhankelijk van de specifieke daemon.

Top