|
|
Line 33: |
Line 33: |
| StarCluster creates a model configuration file in ~/.starcluster/config and you are instructed | | StarCluster creates a model configuration file in ~/.starcluster/config and you are instructed |
| to edit this and set the correct values for the variables. | | to edit this and set the correct values for the variables. |
− | Here is an example of a config file that we used (with some details changed of course). | + | Here is a highly simplified example of a config file that should work. |
| + | Please note there are many things you might want to choose, so craft the |
| + | starcluster config file with care. |
| | | |
| <code> | | <code> |
− | #################################### | + | #################################### |
− | ## StarCluster Configuration File ## | + | ## StarCluster Configuration File ## |
− | #################################### | + | #################################### |
− | [global] | + | [global] |
− | DEFAULT_TEMPLATE=xxx | + | DEFAULT_TEMPLATE=myexample |
− | | + | |
− | ############################################# | + | ############################################# |
− | ## AWS Credentials Settings | + | ## AWS Credentials Settings |
− | ############################################# | + | ############################################# |
− | [aws info] | + | [aws info] |
− | AWS_ACCESS_KEY_ID = AKImyexample8FHJJF2Q | + | AWS_ACCESS_KEY_ID = AKImyexample8FHJJF2Q |
− | AWS_SECRET_ACCESS_KEY = fthis_was_my_example_secretMqkMIkJjFCIGf | + | AWS_SECRET_ACCESS_KEY = fthis_was_my_example_secretMqkMIkJjFCIGf |
− | AWS_USER_ID=199998888709 | + | AWS_USER_ID=199998888709 |
− | | + | |
− | AWS_REGION_NAME = us-west-2 # Choose your own region | + | AWS_REGION_NAME = us-west-2 # Choose your own region |
− | AWS_REGION_HOST = ec2.us-west-2.amazonaws.com | + | AWS_REGION_HOST = ec2.us-west-2.amazonaws.com |
− | AWS_S3_HOST = s3-us-west-2.amazonaws.com | + | AWS_S3_HOST = s3-us-west-2.amazonaws.com |
− | | + | |
− | ########################### | + | ########################### |
− | ## EC2 Keypairs | + | ## EC2 Keypairs |
− | ########################### | + | ########################### |
− | [key east1_starcluster]
| + | [key west2_starcluster] |
− | KEY_LOCATION = ~/.ssh/AWS/east1_starcluster_key.rsa
| + | KEY_LOCATION = ~/.ssh/AWS/west2_starcluster_key.rsa # Same region |
− | | + | |
− | [key west1_starcluster]
| + | ########################################### |
− | KEY_LOCATION = ~/.ssh/AWS/west1_starcluster_key.rsa
| + | ## Define Cluster |
− | | + | ## starcluster start -c west2_starcluster nameichose4cluster |
− | [key west2_starcluster] | + | ########################################### |
− | KEY_LOCATION = ~/.ssh/AWS/west2_starcluster_key.rsa | + | [cluster myexample] |
− | | + | KEYNAME = west2_starcluster # Name I chose |
− | | + | CLUSTER_SIZE = 8 # Number of nodes |
− | | + | CLUSTER_SHELL = bash |
− | # Configure the default cluster template to use when starting a cluster | + | |
− | # defaults to 'smallcluster' defined below. This template should be usable
| + | # This is the 64 bit AMI from starcluster |
− | # out-of-the-box provided you've configured your keypair correctly
| + | NODE_IMAGE_ID = ami-c6bd50f6 |
− | DEFAULT_TEMPLATE=smallcluster
| + | AVAILABILITY_ZONE = us-west-2a # Region again! |
− | # enable experimental features for this release
| + | NODE_INSTANCE_TYPE = m1.large # 8G memory should work for Pipeline |
− | #ENABLE_EXPERIMENTAL=True
| |
− | # number of seconds to wait when polling instances (default: 30s)
| |
− | #REFRESH_INTERVAL=15
| |
− | # specify a web browser to launch when viewing spot history plots
| |
− | #WEB_BROWSER=chromium
| |
− | # split the config into multiple files
| |
− | #INCLUDE=~/.starcluster/aws, ~/.starcluster/keys, ~/.starcluster/vols
| |
− | | |
− | #############################################
| |
− | ## AWS Credentials and Connection Settings ## | |
− | #############################################
| |
− | [aws info]
| |
− | # This is the AWS credentials section (required).
| |
− | # These settings apply to all clusters
| |
− | # replace these with your AWS keys
| |
− | AWS_ACCESS_KEY_ID = #your_aws_access_key_id
| |
− | AWS_SECRET_ACCESS_KEY = #your_secret_access_key
| |
− | # replace this with your account number
| |
− | AWS_USER_ID= #your userid
| |
− | # Uncomment to specify a different Amazon AWS region (OPTIONAL)
| |
− | # (defaults to us-east-1 if not specified)
| |
− | # NOTE: AMIs have to be migrated!
| |
− | #AWS_REGION_NAME = eu-west-1
| |
− | #AWS_REGION_HOST = ec2.eu-west-1.amazonaws.com
| |
− | # Uncomment these settings when creating an instance-store (S3) AMI (OPTIONAL)
| |
− | #EC2_CERT = /path/to/your/cert-asdf0as9df092039asdfi02089.pem
| |
− | #EC2_PRIVATE_KEY = /path/to/your/pk-asdfasd890f200909.pem
| |
− | # Uncomment these settings to use a proxy host when connecting to AWS
| |
− | #AWS_PROXY = your.proxyhost.com
| |
− | #AWS_PROXY_PORT = 8080
| |
− | #AWS_PROXY_USER = yourproxyuser
| |
− | #AWS_PROXY_PASS = yourproxypass
| |
− | | |
− | ###########################
| |
− | ## Defining EC2 Keypairs ##
| |
− | ###########################
| |
− | # Sections starting with "key" define your keypairs. See "starcluster createkey
| |
− | # --help" for instructions on how to create a new keypair. Section name should
| |
− | # match your key name e.g.:
| |
− | [key mykey]
| |
− | KEY_LOCATION=~/.ssh/mykey.rsa
| |
− | | |
− | # You can of course have multiple keypair sections
| |
− | # [key myotherkey]
| |
− | # KEY_LOCATION=~/.ssh/myotherkey.rsa
| |
− | | |
− | ################################
| |
− | ## Defining Cluster Templates ##
| |
− | ################################ | |
− | # Sections starting with "cluster" represent a cluster template. These
| |
− | # "templates" are a collection of settings that define a single cluster
| |
− | # configuration and are used when creating and configuring a cluster. You can
| |
− | # change which template to use when creating your cluster using the -c option
| |
− | # to the start command:
| |
− | #
| |
− | # $ starcluster start -c mediumcluster mycluster
| |
− | #
| |
− | # If a template is not specified then the template defined by DEFAULT_TEMPLATE
| |
− | # in the [global] section above is used. Below is the "default" template named
| |
− | # "smallcluster". You can rename it but dont forget to update the
| |
− | # DEFAULT_TEMPLATE setting in the [global] section above. See the next section
| |
− | # on defining multiple templates.
| |
− | | |
− | [cluster smallcluster] | |
− | # change this to the name of one of the keypair sections defined above
| |
− | KEYNAME = mykey | |
− | # number of ec2 instances to launch | |
− | CLUSTER_SIZE = 2 | |
− | # create the following user on the cluster | |
− | CLUSTER_USER = sgeadmin
| |
− | # optionally specify shell (defaults to bash)
| |
− | # (options: tcsh, zsh, csh, bash, ksh)
| |
− | CLUSTER_SHELL = bash | |
− | # AMI to use for cluster nodes. These AMIs are for the us-east-1 region.
| |
− | # Use the 'listpublic' command to list StarCluster AMIs in other regions | |
− | # The base i386 StarCluster AMI is ami-899d49e0
| |
− | # The base x86_64 StarCluster AMI is ami-999d49f0
| |
− | # The base HVM StarCluster AMI is ami-4583572c
| |
− | NODE_IMAGE_ID = ami-899d49e0
| |
− | # instance type for all cluster nodes
| |
− | # (options: cg1.4xlarge, c1.xlarge, m1.small, c1.medium, m2.xlarge, t1.micro, cc1.4xlarge, m1.medium, cc2.8xlarge, m1.large, m1.xlarge, m2.4xlarge, m2.2xlarge)
| |
− | NODE_INSTANCE_TYPE = m1.small
| |
− | # Uncomment to disable installing/configuring a queueing system on the
| |
− | # cluster (SGE)
| |
− | #DISABLE_QUEUE=True
| |
− | # Uncomment to specify a different instance type for the master node (OPTIONAL)
| |
− | # (defaults to NODE_INSTANCE_TYPE if not specified)
| |
− | #MASTER_INSTANCE_TYPE = m1.small
| |
− | # Uncomment to specify a separate AMI to use for the master node. (OPTIONAL)
| |
− | # (defaults to NODE_IMAGE_ID if not specified)
| |
− | #MASTER_IMAGE_ID = ami-899d49e0 (OPTIONAL)
| |
− | # availability zone to launch the cluster in (OPTIONAL)
| |
− | # (automatically determined based on volumes (if any) or
| |
− | # selected by Amazon if not specified)
| |
− | #AVAILABILITY_ZONE = us-east-1c
| |
− | # list of volumes to attach to the master node (OPTIONAL) | |
− | # these volumes, if any, will be NFS shared to the worker nodes
| |
− | # see "Configuring EBS Volumes" below on how to define volume sections
| |
− | #VOLUMES = oceandata, biodata
| |
− | # list of plugins to load after StarCluster's default setup routines (OPTIONAL)
| |
− | # see "Configuring StarCluster Plugins" below on how to define plugin sections
| |
− | #PLUGINS = myplugin, myplugin2
| |
− | # list of permissions (or firewall rules) to apply to the cluster's security
| |
− | # group (OPTIONAL).
| |
− | #PERMISSIONS = ssh, http
| |
− | # Uncomment to always create a spot cluster when creating a new cluster from
| |
− | # this template. The following example will place a $0.50 bid for each spot
| |
− | # request.
| |
− | #SPOT_BID = 0.50
| |
− | | |
− | ###########################################
| |
− | ## Defining Additional Cluster Templates ##
| |
− | ###########################################
| |
− | # You can also define multiple cluster templates. You can either supply all
| |
− | # configuration options as with smallcluster above, or create an
| |
− | # EXTENDS=<cluster_name> variable in the new cluster section to use all
| |
− | # settings from <cluster_name> as defaults. Below are example templates that
| |
− | # use the EXTENDS feature:
| |
− | | |
− | # [cluster mediumcluster]
| |
− | # Declares that this cluster uses smallcluster as defaults
| |
− | # EXTENDS=smallcluster
| |
− | # This section is the same as smallcluster except for the following settings:
| |
− | # KEYNAME=myotherkey
| |
− | # NODE_INSTANCE_TYPE = c1.xlarge
| |
− | # CLUSTER_SIZE=8
| |
− | # VOLUMES = biodata2
| |
− | | |
− | # [cluster largecluster]
| |
− | # Declares that this cluster uses mediumcluster as defaults
| |
− | # EXTENDS=mediumcluster
| |
− | # This section is the same as mediumcluster except for the following variables:
| |
− | # CLUSTER_SIZE=16
| |
− | | |
− | #############################
| |
− | ## Configuring EBS Volumes ##
| |
− | #############################
| |
− | # StarCluster can attach one or more EBS volumes to the master and then
| |
− | # NFS_share these volumes to all of the worker nodes. A new [volume] section
| |
− | # must be created for each EBS volume you wish to use with StarCluser. The
| |
− | # section name is a tag for your volume. This tag is used in the VOLUMES
| |
− | # setting of a cluster template to declare that an EBS volume is to be mounted
| |
− | # and nfs shared on the cluster. (see the commented VOLUMES setting in the
| |
− | # example 'smallcluster' template above) Below are some examples of defining
| |
− | # and configuring EBS volumes to be used with StarCluster:
| |
− | | |
− | # Sections starting with "volume" define your EBS volumes
| |
− | # [volume biodata]
| |
− | # attach vol-c9999999 to /home on master node and NFS-shre to worker nodes
| |
− | # VOLUME_ID = vol-c999999
| |
− | # MOUNT_PATH = /home
| |
− | | |
− | # Same volume as above, but mounts to different location
| |
− | # [volume biodata2]
| |
− | # VOLUME_ID = vol-c999999
| |
− | # MOUNT_PATH = /opt/
| |
− | | |
− | # Another volume example
| |
− | # [volume oceandata]
| |
− | # VOLUME_ID = vol-d7777777
| |
− | # MOUNT_PATH = /mydata
| |
− | | |
− | # By default StarCluster will attempt first to mount the entire volume device,
| |
− | # failing that it will try the first partition. If you have more than one
| |
− | # partition you will need to set the PARTITION number, e.g.:
| |
− | # [volume oceandata]
| |
− | # VOLUME_ID = vol-d7777777
| |
− | # MOUNT_PATH = /mydata
| |
− | # PARTITION = 2
| |
− | | |
− | ############################################
| |
− | ## Configuring Security Group Permissions ##
| |
− | ############################################
| |
− | # Sections starting with "permission" define security group rules to
| |
− | # automatically apply to newly created clusters. PROTOCOL in the following
| |
− | # examples can be can be: tcp, udp, or icmp. CIDR_IP defaults to 0.0.0.0/0 or
| |
− | # "open to the # world"
| |
− | | |
− | # open port 80 on the cluster to the world
| |
− | # [permission http]
| |
− | # PROTOCOL = tcp
| |
− | # FROM_PORT = 80
| |
− | # TO_PORT = 80
| |
− | | |
− | # open https on the cluster to the world
| |
− | # [permission https]
| |
− | # PROTOCOL = tcp
| |
− | # FROM_PORT = 443
| |
− | # TO_PORT = 443
| |
− | | |
− | # open port 80 on the cluster to an ip range using CIDR_IP
| |
− | # [permission http]
| |
− | # PROTOCOL = tcp
| |
− | # FROM_PORT = 80
| |
− | # TO_PORT = 80
| |
− | # CIDR_IP = 18.0.0.0/8
| |
− | | |
− | # restrict ssh access to a single ip address (<your_ip>)
| |
− | # [permission ssh]
| |
− | # PROTOCOL = tcp
| |
− | # FROM_PORT = 22
| |
− | # TO_PORT = 22
| |
− | # CIDR_IP = <your_ip>/32
| |
− | | |
− | | |
− | #####################################
| |
− | ## Configuring StarCluster Plugins ##
| |
− | #####################################
| |
− | # Sections starting with "plugin" define a custom python class which perform
| |
− | # additional configurations to StarCluster's default routines. These plugins
| |
− | # can be assigned to a cluster template to customize the setup procedure when
| |
− | # starting a cluster from this template (see the commented PLUGINS setting in
| |
− | # the 'smallcluster' template above). Below is an example of defining a user
| |
− | # plugin called 'myplugin':
| |
− | | |
− | # [plugin myplugin]
| |
− | # NOTE: myplugin module must either live in ~/.starcluster/plugins or be
| |
− | # on your PYTHONPATH
| |
− | # SETUP_CLASS = myplugin.SetupClass
| |
− | # extra settings are passed as __init__ arguments to your plugin:
| |
− | # SOME_PARAM_FOR_MY_PLUGIN = 1
| |
− | # SOME_OTHER_PARAM = 2
| |
− | | |
− | ######################
| |
− | ## Built-in Plugins ##
| |
− | ######################
| |
− | # The following plugins ship with StarCluster and should work out-of-the-box. | |
− | # Uncomment as needed. Don't forget to update your PLUGINS list!
| |
− | # See http://web.mit.edu/star/cluster/docs/latest/plugins for plugin details.
| |
− | #
| |
− | # Use this plugin to install one or more packages on all nodes
| |
− | # [plugin pkginstaller]
| |
− | # SETUP_CLASS = starcluster.plugins.pkginstaller.PackageInstaller
| |
− | # # list of apt-get installable packages
| |
− | # PACKAGES = mongodb, python-pymongo
| |
− | #
| |
− | # Use this plugin to create one or more cluster users and download all user ssh
| |
− | # keys to $HOME/.starcluster/user_keys/<cluster>-<region>.tar.gz
| |
− | # [plugin createusers]
| |
− | # SETUP_CLASS = starcluster.plugins.users.CreateUsers
| |
− | # NUM_USERS = 30
| |
− | # # you can also comment out NUM_USERS and specify exact usernames, e.g.
| |
− | # # usernames = linus, tux, larry
| |
− | # DOWNLOAD_KEYS = True
| |
− | #
| |
− | # Use this plugin to configure the Condor queueing system
| |
− | # [plugin condor]
| |
− | # SETUP_CLASS = starcluster.plugins.condor.CondorPlugin
| |
− | #
| |
− | # The SGE plugin is enabled by default and not strictly required. Only use this
| |
− | # if you want to tweak advanced settings in which case you should also set
| |
− | # DISABLE_QUEUE=TRUE in your cluster template. See the plugin doc for more
| |
− | # details.
| |
− | # [plugin sge]
| |
− | # SETUP_CLASS = starcluster.plugins.sge.SGEPlugin
| |
− | # MASTER_IS_EXEC_HOST = False
| |
− | #
| |
− | # The IPCluster plugin configures a parallel IPython cluster with optional
| |
− | # web notebook support. This allows you to run Python code in parallel with low
| |
− | # latency message passing via ZeroMQ.
| |
− | # [plugin ipcluster]
| |
− | # SETUP_CLASS = starcluster.plugins.ipcluster.IPCluster
| |
− | # ENABLE_NOTEBOOK = True
| |
− | # #set a password for the notebook for increased security
| |
− | # NOTEBOOK_PASSWD = a-secret-password
| |
− | #
| |
− | # Use this plugin to create a cluster SSH "dashboard" using tmux. The plugin
| |
− | # creates a tmux session on the master node that automatically connects to all
| |
− | # the worker nodes over SSH. Attaching to the session shows a separate window
| |
− | # for each node and each window is logged into the node via SSH.
| |
− | # [plugin tmux]
| |
− | # SETUP_CLASS = starcluster.plugins.tmux.TmuxControlCenter
| |
− | #
| |
− | # Use this plugin to change the default MPI implementation on the
| |
− | # cluster from OpenMPI to MPICH2.
| |
− | # [plugin mpich2]
| |
− | # SETUP_CLASS = starcluster.plugins.mpich2.MPICH2Setup
| |
− | #
| |
− | # Configure a hadoop cluster. (includes dumbo setup)
| |
− | # [plugin hadoop]
| |
− | # SETUP_CLASS = starcluster.plugins.hadoop.Hadoop
| |
− | #
| |
− | # Configure a distributed MySQL Cluster
| |
− | # [plugin mysqlcluster]
| |
− | # SETUP_CLASS = starcluster.plugins.mysql.MysqlCluster
| |
− | # NUM_REPLICAS = 2
| |
− | # DATA_MEMORY = 80M
| |
− | # INDEX_MEMORY = 18M
| |
− | # DUMP_FILE = test.sql
| |
− | # DUMP_INTERVAL = 60
| |
− | # DEDICATED_QUERY = True
| |
− | # NUM_DATA_NODES = 2
| |
− | #
| |
− | # Install and setup an Xvfb server on each cluster node
| |
− | # [plugin xvfb]
| |
− | # SETUP_CLASS = starcluster.plugins.xvfb.XvfbSetup
| |
| | | |
| </code> | | </code> |