General
Use xcatha-setup
and xcatha-failover
to automate most functions in user case.
xcatha-setup: We have xcat-automation using ansible to install xCAT now. In setup and configure HA mn part, add xcatha-setup script to fill in the gaps, the xcatha-setup can run standalone, and xcat-automation can integrate it easily. In the future, we can use xcat-automation to setup and configure HA MN nodes.
xcatha-failover: realize activate|deactivate HA MN.
User interface:
-
xcatha-setup -p <shared-data directory path> -i <nic> -v <virtual ip> [-m <netmask>] [-n <hostname>] [-t <database type>]
-
activate MN:
xcatha-failover -a|--activate -p <shared-data directory path> -i <nic> -v <virtual ip> [-m <netmask>] [-t <database type>]
-
deactivate MN:
xcatha-failover -d|--deactivate -i <nic> -v <virtual ip>
Workflow:
-
xcatha-setup
setup and configure HA mn work flow:- check virtual ip, make sure virtual ip is not used (ping), or else, exit with error message
- check if there is xcat data in shared data directories, and check if DB type in shared data directory is different from target type from input , if they are different, exit and print error
- add virtual ip into its nic
- set hostname for virtual ip
- check xCAT installed or not:
- if xcat is not installed, install xCAT;
- if xcat is installed, skip this step
- if current xcat DB type (lsxcatd -d) is different from target type, switch DB to target type
- check if the site table master and nameservers and network tftpserver attribute are the Virtual ip, if not, correct them -----This is another story refer to doc Changing the hostname/IP address
- check if there is xcat data in shared data directories:
- if no xcat data in shared data, and shared data directory permission is proper, create xcat data structure under shared data directory, copy xcat data into shared data directories, take
/install
directory as an example:mkdir /HA-data/install cp -r /install /HA-data/install
- create symbolic link to share data directories
- if no xcat data in shared data, and shared data directory permission is proper, create xcat data structure under shared data directory, copy xcat data into shared data directories, take
- check xcat service work well, if not, exit and print error
- add the MN including VIP hostname and local IP hostname into policy table
- xcatha-failover deactivate this MN node
-
xcatha-failover -a|--activate
- check virtual ip, make sure virtual ip is not used (ping), or else, exit
- add virtual ip into its nic
- set hostname to virtual ip
- check if current DB type is matched, if not, exit and clean up env
- make symbolic link to share data directories, for example:
/install -> /HA-data/install /etc/xcat ->/HA-data/etc/xcat /root/.xcat -> /HA-data/root/.xcat /var/lib/pgsql -> /HA-data/var/lib/pgsql /tftpboot -> /HA-data/tftpboot
- start/re-configure all related services as followings, make sure all related services are configured stop from starting on reboot :
- database (mysql/postgresql/sqlite type)
- xcatd
- named service (makedns -n)
- DHCP service (makedhcp -n, makedhcp -a)
- Console Server
- ... ...
-
xcatha-failover -d|--deactivate
- make sure all related services as followings are down, make sure all related services are configured stop from starting on reboot
- console service
- DHCP service
- named service
- xcatd
- database (mysql/postgresql/sqlite type)
- umount/un-link shared data directories on host1
- change hostname if needed
- remove virtual IP
- make sure all related services as followings are down, make sure all related services are configured stop from starting on reboot
Function modules (this is only reference for functions)
vip_check:
- check if vip is used or not, (can use ping), if it is used, print error and exit 1.
configure_vip:
- configure virtual ip as non-persistent alias IP address, it is no need to write ifcfg_* files.
- add the alias ip address into the /etc/resolv.conf as the nameserver
change_hostname:
- change the hostname resolution order to be using /etc/hosts before using name server
- add the specific ip address and its hostname into /etc/hosts
- change hostname to the hostname that resolves to the specific ip address
unconfigure_vip: remove virtual ip, call change_hostname to original hostname
check_xcat_attribute: check attribute value is the virtual ip (master and nameservers in site table, tftpserver in networks table)
execute_command: start|stop service, if success, return [Passed], or else , retry, after retry 3 times and get failed , return [Failed]
configure_shared_data:
- check if xcat data is in shared data directory or not,
if not:
- check shared data directory permission
- create xcat data structure in shared data directory
- copy xcat data into shared data directories
- create symbolic link to share data directories
unconfigure_shared_data: unlink shared data directories
clean_up_env: if some service is failed, call unconfig_vip, call change_hostname, to restore original hostname
log_info(self, message)
runcmd(self, cmd)
configure_xcat_attribute(self, host, ip)
current_database_type(self, path)
get_physical_ip(self, nic)
check_database_type(self, dbtype, vip, nic)
check_xcat_exist_in_shared_data(self, path)
check_shared_data_db_type(self, tdbtype, path)
switch_database(self, dbtype, vip, physical_ip)
install_db_package(self, dbtype)
install_xcat(self, url)
find_line(self, filename, keyword)
change_hostname(self, host, ip)
unconfigure_vip(self, vip, nic)
check_service_status(self, service_name)
finditem(self, n, server)
change_xcat_policy_attribute(self, nic, vip)
copy_files(self, sourceDir, targetDir)
configure_shared_data(self, path, sharedfs)
clean_env(self, vip, nic, host)
deactivate_management_node(self, nic, vip, dbtype)
xcatha_setup_mn(self, args)
parser_arguments()
News
- Apr 22, 2016: xCAT 2.11.1 released.
- Mar 11, 2016: xCAT 2.9.3 (AIX only) released.
- Dec 11, 2015: xCAT 2.11 released.
- Nov 11, 2015: xCAT 2.9.2 (AIX only) released.
- Jul 30, 2015: xCAT 2.10 released.
- Jul 30, 2015: xCAT migrates from sourceforge to github
- Jun 26, 2015: xCAT 2.7.9 released.
- Mar 20, 2015: xCAT 2.9.1 released.
- Dec 12, 2014: xCAT 2.9 released.
- Sep 5, 2014: xCAT 2.8.5 released.
- May 23, 2014: xCAT 2.8.4 released.
- Jan 24, 2014: xCAT 2.7.8 released.
- Nov 15, 2013: xCAT 2.8.3 released.
- Jun 26, 2013: xCAT 2.8.2 released.
- May 17, 2013: xCAT 2.7.7 released.
- May 10, 2013: xCAT 2.8.1 released.
- Feb 28, 2013: xCAT 2.8 released.
- Nov 30, 2012: xCAT 2.7.6 released.
- Oct 29, 2012: xCAT 2.7.5 released.
- Aug 27, 2012: xCAT 2.7.4 released.
- Jun 22, 2012: xCAT 2.7.3 released.
- May 25, 2012: xCAT 2.7.2 released.
- Apr 20, 2012: xCAT 2.7.1 released.
- Mar 19, 2012: xCAT 2.7 released.
- Mar 15, 2012: xCAT 2.6.11 released.
- Jan 23, 2012: xCAT 2.6.10 released.
- Nov 15, 2011: xCAT 2.6.9 released.
- Sep 30, 2011: xCAT 2.6.8 released.
- Aug 26, 2011: xCAT 2.6.6 released.
- May 20, 2011: xCAT 2.6 released.
- Feb 14, 2011: Watson plays on Jeopardy and is managed by xCAT!
- xCAT Release Notes Summary
- xCAT OS And Hw Support Matrix
- xCAT Test Environment Summary
History
- Oct 22, 2010: xCAT 2.5 released.
- Apr 30, 2010: xCAT 2.4 is released.
- Oct 31, 2009: xCAT 2.3 released.
xCAT's 10 year anniversary! - Apr 16, 2009: xCAT 2.2 released.
- Oct 31, 2008: xCAT 2.1 released.
- Sep 12, 2008: Support for xCAT 2
can now be purchased! - June 9, 2008: xCAT breaths life into
(at the time) the fastest
supercomputer on the planet - May 30, 2008: xCAT 2.0 for Linux
officially released! - Oct 31, 2007: IBM open sources
xCAT 2.0 to allow collaboration
among all of the xCAT users. - Oct 31, 1999: xCAT 1.0 is born!
xCAT started out as a project in
IBM developed by Egan Ford. It
was quickly adopted by customers
and IBM manufacturing sites to
rapidly deploy clusters.