[user@frontend]# cd ~ [user@frontend]# mkdir .domus ./domus/etc [user@frontend]# cp ~domus/etc/domus#mycluster#* ./domus/etc [user@frontend]# ls -la ./domus/etc /home/user/.domus/etc: total 16 drwxrwxr-x 2 user user 4096 Feb 7 11:00 . drwxrwxr-x 4 user user 4096 Feb 4 23:16 .. -rw-r--r-- 1 user user 1719 Feb 7 11:00 domus#mycluster#conf -rw-r--r-- 1 user user 36 Feb 4 23:02 domus#mycluster#interfaces[TODO: make a script to automate the creation of ~/.domus] The domus#mycluster#* files are tailored to a generic Domus cluster named mycluster. If a user wants to operate several Domus clusters at the same time, specific configuration files will be needed for each one. In this regard, it is a good practice (though not mandatory) to embedded the unique name of each Domus cluster in its configuration files (e.g., as in domus#mycluster#conf and domus#mycluster#interfaces, for a Domus cluster named mycluster). The role of the domus#mycluster#* files is as follows:
compute-1-0.local compute-1-1.local ...
################################################################################
DOMUS_DEBUG 1 # 1 == on; 0 == off; relevant only if
# --debug was assumed during installation
DOMUS_HOME_DIR_PATH /home/domus/.domus # where to find Domus after installation;
# must be NFS-accessible to all users
DOMUS_GANGLIA_HOST alfa # ROCKS cluster frontend
DOMUS_GANGLIA_CHANNEL 235.185.190.208 # see /etc/gmond.conf at the frontend
DOMUS_GANGLIA_PORT 8649 # see /etc/gmond.conf at the frontend
DOMUS_GANGLIA_GMETRIC_PATH /opt/ganglia/bin/gmetric # default: this same path
DOMUS_THRESHOLD_CPU 0.8 # (%); resource utilization thresholds;
DOMUS_THRESHOLD_RAM 0.8 # prevent the creation of DHTs on
DOMUS_THRESHOLD_DISK 0.8 # overloaded nodes; also used to weight
DOMUS_THRESHOLD_DISKIO 0.8 # the participation of nodes in DHTs
DOMUS_THRESHOLD_NET 0.5 # (in combination with benchmark results)
################################################################################
DOMUS_CLUSTER_NAME mycluster #unique name of the Domus cluster;
DOMUS_CLUSTER_INTERFACES_FILE_PATH /home/user/.domus/etc/domus#mycluster#interfaces
DOMUS_SUPERVISOR_ROOT_DIR_PATH /home/user/.domus/var # "supervisor" working dir
# (shared by all instances)
DOMUS_SUPERVISOR_INTERFACE alfa # node where the Domus supervisor runs
DOMUS_SUPERVISOR_PORT 7571 # tcp/ip port of the Domus supervisor
# mainly relevant when operating a Domus cluster in a batch-managed physical cluster
DOMUS_SUPERVISOR_LIFETIME 0 # (in seconds); 0 is infinite lifetime
DOMUS_SUPERVISOR_LIFETIME_END_ACTION terminate # terminate, shutdown, auto-destroy
# only relevant if --service_threadsafe was assumed during installation
DOMUS_SUPERVISOR_TCP_FRONTEND_MULTITHREADED 0 # 1 == True ; 0 == False
DOMUS_SUPERVISOR_TCP_SESSIONS_MULTITHREADED 0 # 1 == True ; 0 == False
DOMUS_SUPERVISOR_UDP_FRONTEND_MULTITHREADED 0 # 1 == True ; 0 == False
DOMUS_SERVICE_ROOT_DIR_PATH /state/partition1/user/.domus/var # "service" working dir
# (local to each node)
# mainly relevant when operating a Domus cluster in a batch-managed physical cluster
DOMUS_SERVICE_LIFETIME 0 # (in seconds); 0 is infinite lifetime
DOMUS_SERVICE_LIFETIME_END_ACTION terminate # terminate, shutdown, auto-destroy
################################################################################
There are two blocks of definitions, delimited by sequences of the character #, like in a domus#nodeinfo#conf file. Moreover, the 1st block of domus#mycluster#conf should match the 1st block of domus#nodeinfo#conf. With regard to the 2nd block, most definitions are self-explanatory. Some, however, deserve a further discussion:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~domus/.domus/lib:~domus/.domus/bin:. LD_RUN_PATH=$LD_RUN_PATH:~domus/.domus/lib:~domus/.domus/bin:. PYTHONPATH=$PYTHONPATH:~domus/.domus/lib:~domus/.domus/bin:. PATH=$PATH:$HOME/bin:~domus/.domus/bin:. export PATH LD_LIBRARY_PATH LD_RUN_PATH PYTHONPATH
PYTHONPATH=/home/domus/.domus/lib
[user@frontend]# domus_manager_cluster.py -h
Usage: /home/domus/.domus/bin/domus_manager_cluster.py - h |
{ [-c cluster_conf_file_path] [-N cluster_name] [-I supervisor_interface]
[-P supervisor_port] [--debug] -o operation [specific_options] }
operation: { create | destroy | shutdown | restart | ping | kill |
remove | getpid | log | ls }
specific_options: { -o create ... [-e] } | { -o kill ... [-k kill_signal] }
kill_signal: { TERM (=> exit) | USR1 (=> shutdown) | USR2 (=>destroy) }
Parameters: