blob: 19e5ac38244345b7967ae05802309872922572c3 [file] [log] [blame]
h1. Frequently Asked Questions
{anchor:how-do-i-find-my-cloud-credentials}
h2. How do I find my cloud credentials?
On EC2:
# Go to [http://aws-portal.amazon.com/gp/aws/developer/account/index.html?action=access-key]
# Log in, if prompted
# Find your Access Key ID and Secret Access Key in the "Access Credentials" section, under the "Access Keys" tab. You will have to click "Show" to see the text of your secret access key.
Another good resource is [Understanding Access Credentials for AWS/EC2|http://alestic.com/2009/11/ec2-credentials] by Eric Hammond.
h2. Can I specify my own private key?
Yes, by setting {{whirr.private-key-file}} (or {{\--private-key-file}} on the
command line). You should also set {{whirr.public-key-file}}
({{\--public-key-file}}) at the same time.
Private keys must not have a passphrase associated with them. You can check this
with:
{code}
grep ENCRYPTED ~/.ssh/id_rsa
{code}
If there is no passphrase then there will be no match.
h2. How do I access my cluster from a different network?
By default, access to clusters is restricted to the single IP address of the
machine starting the cluster, as determined by
[Amazon's check IP service|http://checkip.amazonaws.com/]. However, some
networks report multiple origin IP addresses (e.g. they round-robin between
them by connection), which may cause problems if the address used for later
connections is different to the one reported at the time of the first
connection.
A related problem is when you wish to access the cluster from a different
network to the one it was launched from.
In these cases you can specify the IP addresses of the machines that may connect
to the cluster by setting the {{client-cidrs}} property to a comma-separated
list of [CIDR|http://en.wikipedia.org/wiki/Classless\_Inter-Domain\_Routing]
blocks.
For example, {{208.128.0.0/16,38.102.147.107/32}} would allow access from the
{{208.128.0.0}} class B network, and the (single) IP address 38.102.147.107.
h2. How can I start a cluster in a particular location?
By default clusters are started in an arbitrary location (e.g. region or
data center). You can control the location by setting {{location-id}} (see the
[configuration guide|configuration-guide] for details).
For example, in EC2, setting {{location-id}} to {{us-east-1}} would start the
cluster in the US-East region, while setting it to {{us-east-1a}} (note the
final {{a}}) would start the cluster in that particular availability zone
({{us-east-1a}}) in the US-East region.
h2. How can I use a custom image? How can I control the cloud hardware used?
The default image used is dependent on the Cloud provider, the hardware, and the
service.
Use {{image-id}} to specify the image used, and {{hardware-id}} to specify the
hardware. Both are cloud-specific.
In addition, on EC2 you need to set jclouds.ec2.ami-owners to include the AMI
owner if it is not Amazon, Alestic, Canonical, or RightScale.
h2. How do I log in to a node in the cluster?
On EC2, if you know the node's address you can do
{code}
ssh -i ~/.ssh/id_rsa ec2-user@host
{code}
This assumes that you use the default private key; if this is not the case then
specify the one you used at cluster launch.
The Amazon Linux AMI requires that you login as {{ec2-user}}. If needed, you can
become root by doing {{sudo su -}} after logging in.
Different AMIs may have different login users. Check with the documentation for
the AMI.
{anchor:how-can-i-modify-the-instance-installation-and-configuration-scripts}
h2. How can I modify the instance installation and configuration scripts?
The scripts to install and configure cloud instances are searched for on the
classpath.
(Note that in versions prior to 0.4.0 scripts were downloaded from S3
by default, and could be overridden by setting {{run-url-base}}. This property
no longer has any effect, so you should instead use the approach explained
below.)
If you want to change the scripts then you can place a modified copy of the
scripts in a _functions_ directory in Whirr's installation directory. The
original versions of the scripts can be found in _functions_ directories in the
source trees.
For example, to override the Hadoop scripts, do the following:
{code}
cd $WHIRR_HOME
mkdir functions
cp services/hadoop/src/main/resources/functions/* functions
{code}
Then make your changes to the copies in _functions_.
The first port of call for debugging the scripts that run on on a cloud instance
is the _whirr.log_ in the directory from which you launched the _whirr_ CLI.
The script output in this log file may be truncated, but you can see the
complete output by logging into the node on which the script ran
(see "How do I log in to a node in the cluster?" above) and looking in the
_/tmp/bootstrap_ or _/tmp/jclouds-script-*_ directories for the script itself,
and the standard output and standard error logs.
h2. How do I specify the service version and other service properties?
Some services have a property to control the version number of the software to
be installed. This is typically achieved by setting the property
{{whirr.<service-name>.tarball.url}}. Similarly, some services can have
arbitrary service properties set.
See the samples in the _recipes_ directory for details for a particular service.
In cases where neither of these configuration controls are supported, you
may modify the scripts to install a particular version of the service, or to
change the service properties from the defaults. See
"How to modify the instance installation and configuration scripts" above
for details on how to override the scripts.
h2. How can I install custom packages?
You can install extra software by modifying the scripts that run on
the cloud instances. See "How to modify the instance installation and
configuration scripts" above.
h2. How do I run Cloudera's Distribution for Hadoop?
You can run CDH rather than Apache Hadoop by running the Hadoop service and
setting the {{whirr.hadoop-install-function}} and
{{whirr.hadoop-configure-function}}
properties. See the _recipes_ directory in the distribution for samples.
{anchor:other-services}
h2. How do I run a Cassandra/HBase/ZooKeeper cluster?
See the _recipes_ directory in the distribution for samples.
h2. How do I automatically tear down a cluster after a fixed time?
It's often convenient to terminate a cluster a fixed time after launch. This is
the case for test clusters, for example. You can achieve this by scheduling the
destroy command using the {{at}} command from your local machine.
*WARNING: The machine from which you issued the {{at}} command must be running (and able
to contact the cloud provider) at the time it runs.*
{code}
% echo 'bin/whirr destroy-cluster --config hadoop.properties' \
| at 'now + 50 min'
{code}
Note that issuing a {{shutdown}} command on an instance may simply stop the
instance, which is not sufficient to fully terminate the instance, in which
case you would continue to be charged for it. This is the
case for EBS boot instances, for example.
You can read more about this technique on
[Eric Hammond's blog|http://alestic.com/2010/09/ec2-instance-termination].
Also, Mac OS X users might find
[this thread|http://superuser.com/questions/43678/mac-os-x-at-command-not-working]
a useful reference for the {{at}} command.