burnley
Regular Pleskian
Hi,
Lately we've been looking at discontinuing the existing CentOS 5 Plesk servers and replacing them with CentOS 7. Given our existing environment, where hundreds of customers with hundreds of GB of data are stored on each server, the basic requirements are:
- Minimal outage.
- The OS upgrade should look like an in-place upgrade. Unfortunately, unlike Debian's vastly superior package management which makes dist-upgrades and release upgrades a breeze, RedHat doesn't support in-place upgrade in versions 5 and 6, this is why we need to be creative. The end result should be a fresh, new CentOS 7 Plesk server with all the settings and customer data imported properly from the old server.
I've recently started to use plesk-migrator for reseller and client based migration between the Plesk servers and, while it's doing a great job with small numbers of clients on large amounts of data, it's pretty slow for batches containing hundreds of clients.
The strategy I'm using currently for the migration is largely based on https://docs.plesk.com/en-US/12.5/m...m-plesk/migrating-via-the-command-line.75722/ with adjustments for our local environment. The main steps are:
- Prepare the source and destination server as documented (ssh keys, generate migration list, import plans, DNS TTL etc)
- Run initial bulk transfer. Keywords: "transfer-accounts --skip-services-checks --skip-main-node-disk-space-checks --migration-list-file ${PLESKMIGRATORLIST} --ip-mapping-file ${PLESKMIGRATORIPMAP}"
- Incremental transfer. Keywords: "copy-content --skip-services-checks --migration-list-file ${PLESKMIGRATORLIST} --ip-mapping-file ${PLESKMIGRATORIPMAP}"
After several incremental transfer rounds I can get a good estimate for the outage window. Based on the that, we schedule the outage window and run:
- Final transfer. Keywords: defer email delivery, "copy-content --skip-services-checks --migration-list-file ${PLESKMIGRATORLIST} --ip-mapping-file ${PLESKMIGRATORIPMAP}", adjust DNS, re-enable email delivery.
For one of the servers, hosting 700+ clients with about that many subscriptions, the incremental transfer phase takes in excess of 3.5 hours, which is way beyond what is acceptable for us. In the console & info.log file I see a lot of what seems to be redundant activity. Is it really necessary to run for every "copy-content" all those commands? Example:
[2016-08-05 13:12:01][INFO] Initialize Plesk Migrator
[2016-08-05 13:12:01][INFO] Load configuration
[2016-08-05 13:12:01][INFO] Target Plesk host: 10.168.1.199
[2016-08-05 13:12:01][INFO] Source Plesk 'pfu' host: 192.168.1.181
[2016-08-05 13:12:12][INFO] START: Check if migration list file exists
[2016-08-05 13:12:12][INFO] FINISH: Check if migration list file exists
[2016-08-05 13:12:12][INFO] START: Check connections
>>> 25 seconds spent here.
[2016-08-05 13:12:37][INFO] FINISH: Check connections
[2016-08-05 13:12:37][INFO] Check migration compatibility of source and target Plesk versions
[2016-08-05 13:12:37][INFO] Check that all required components are installed on source Plesk
[2016-08-05 13:12:37][INFO] START: Fetch basic information about resellers, clients and domains data from source servers
[2016-08-05 13:12:37][INFO] Using the existing shallow dump for 'pfu'
[2016-08-05 13:12:37][INFO] FINISH: Fetch basic information about resellers, clients and domains data from source servers
[2016-08-05 13:12:37][INFO] START: Read migration list
[2016-08-05 13:12:37][INFO] FINISH: Read migration list
[2016-08-05 13:12:37][INFO] Read IP mapping file
[2016-08-05 13:12:38][INFO] Read IP-mapping file /usr/local/psa/var/modules/panel-migrator/conf/ipmapping.conf
[2016-08-05 13:12:38][INFO] START: Fetch information from source panel
[2016-08-05 13:12:38][INFO] START: Fetch configuration data from Plesk servers
[2016-08-05 13:12:38][INFO] Using the existing dump '/usr/local/psa/var/modules/panel-migrator/sessions/migration-session/plesk.backup.pfu.raw.tar' for 'pfu'
[2016-08-05 13:12:38][INFO] FINISH: Fetch configuration data from Plesk servers
[2016-08-05 13:12:38][INFO] Fetch information about APS web applications
[2016-08-05 13:12:38][INFO] Merge information about APS web applications into backup
[2016-08-05 13:12:38][INFO] START: Fetch capability info from Plesk servers
[2016-08-05 13:12:38][INFO] Using the existing dump '/usr/local/psa/var/modules/panel-migrator/sessions/migration-session/capability_dump.pfu.xml' for 'pfu'
[2016-08-05 13:12:38][INFO] FINISH: Fetch capability info from Plesk servers
[2016-08-05 13:12:38][INFO] FINISH: Fetch information from source panel
[2016-08-05 13:12:38][INFO] START: Fetch information from target servers
>>> Why fetch the information again and not reuse the information fetched during "transfer-accounts" stage?
[2016-08-05 13:12:53][INFO] Get target panel's resellers for conflict resolution
[2016-08-05 13:12:53][INFO] Get target panel's service templates for conflict resolution
[2016-08-05 13:12:57][INFO] Get target panel's customers for conflict resolution
>>> More time spend here
[2016-08-05 13:14:14][INFO] Get target panel's auxiliary users and roles for conflict resolution
>>> And here
[2016-08-05 13:16:59][INFO] Get target panel's subscriptions and webspaces for conflict resolution
>>> And here!
[2016-08-05 13:22:34][INFO] Get target panel's subscriptions, sites and site aliases for conflict resolution
[2016-08-05 13:29:23][INFO] FINISH: Fetch information from target servers
[2016-08-05 13:29:23][INFO] START: Convert clients and subscriptions
[2016-08-05 13:29:41][INFO] Convert resellers
[2016-08-05 13:29:54][INFO] FINISH: Convert clients and subscriptions
[2016-08-05 13:29:54][INFO] Convert hosting settings to target panel format
>>> And here!
[2016-08-05 13:49:57][INFO] START: Check target panel capability
>>> And here!
[2016-08-05 13:54:18][INFO] Set component 'mod_perl 'can not be installed in capability report
[2016-08-05 13:54:18][INFO] Set component 'mod_python 'can not be installed in capability report
[2016-08-05 13:54:18][INFO] FINISH: Check target panel capability
[2016-08-05 13:54:18][INFO] Import backup dumps to target panel's repository
So, looking at the above: copy-content started at 13:12:01, but 42 minutes later the migrator still hasn't started to transfer the actual data increments!
Are there any options to speed up copy-content? In the current form we're unlikely to be able to do a full server migration without looking at ~4 hours downtime.
Will follow up shortly with the subscription transfer log data.
Lately we've been looking at discontinuing the existing CentOS 5 Plesk servers and replacing them with CentOS 7. Given our existing environment, where hundreds of customers with hundreds of GB of data are stored on each server, the basic requirements are:
- Minimal outage.
- The OS upgrade should look like an in-place upgrade. Unfortunately, unlike Debian's vastly superior package management which makes dist-upgrades and release upgrades a breeze, RedHat doesn't support in-place upgrade in versions 5 and 6, this is why we need to be creative. The end result should be a fresh, new CentOS 7 Plesk server with all the settings and customer data imported properly from the old server.
I've recently started to use plesk-migrator for reseller and client based migration between the Plesk servers and, while it's doing a great job with small numbers of clients on large amounts of data, it's pretty slow for batches containing hundreds of clients.
The strategy I'm using currently for the migration is largely based on https://docs.plesk.com/en-US/12.5/m...m-plesk/migrating-via-the-command-line.75722/ with adjustments for our local environment. The main steps are:
- Prepare the source and destination server as documented (ssh keys, generate migration list, import plans, DNS TTL etc)
- Run initial bulk transfer. Keywords: "transfer-accounts --skip-services-checks --skip-main-node-disk-space-checks --migration-list-file ${PLESKMIGRATORLIST} --ip-mapping-file ${PLESKMIGRATORIPMAP}"
- Incremental transfer. Keywords: "copy-content --skip-services-checks --migration-list-file ${PLESKMIGRATORLIST} --ip-mapping-file ${PLESKMIGRATORIPMAP}"
After several incremental transfer rounds I can get a good estimate for the outage window. Based on the that, we schedule the outage window and run:
- Final transfer. Keywords: defer email delivery, "copy-content --skip-services-checks --migration-list-file ${PLESKMIGRATORLIST} --ip-mapping-file ${PLESKMIGRATORIPMAP}", adjust DNS, re-enable email delivery.
For one of the servers, hosting 700+ clients with about that many subscriptions, the incremental transfer phase takes in excess of 3.5 hours, which is way beyond what is acceptable for us. In the console & info.log file I see a lot of what seems to be redundant activity. Is it really necessary to run for every "copy-content" all those commands? Example:
[2016-08-05 13:12:01][INFO] Initialize Plesk Migrator
[2016-08-05 13:12:01][INFO] Load configuration
[2016-08-05 13:12:01][INFO] Target Plesk host: 10.168.1.199
[2016-08-05 13:12:01][INFO] Source Plesk 'pfu' host: 192.168.1.181
[2016-08-05 13:12:12][INFO] START: Check if migration list file exists
[2016-08-05 13:12:12][INFO] FINISH: Check if migration list file exists
[2016-08-05 13:12:12][INFO] START: Check connections
>>> 25 seconds spent here.
[2016-08-05 13:12:37][INFO] FINISH: Check connections
[2016-08-05 13:12:37][INFO] Check migration compatibility of source and target Plesk versions
[2016-08-05 13:12:37][INFO] Check that all required components are installed on source Plesk
[2016-08-05 13:12:37][INFO] START: Fetch basic information about resellers, clients and domains data from source servers
[2016-08-05 13:12:37][INFO] Using the existing shallow dump for 'pfu'
[2016-08-05 13:12:37][INFO] FINISH: Fetch basic information about resellers, clients and domains data from source servers
[2016-08-05 13:12:37][INFO] START: Read migration list
[2016-08-05 13:12:37][INFO] FINISH: Read migration list
[2016-08-05 13:12:37][INFO] Read IP mapping file
[2016-08-05 13:12:38][INFO] Read IP-mapping file /usr/local/psa/var/modules/panel-migrator/conf/ipmapping.conf
[2016-08-05 13:12:38][INFO] START: Fetch information from source panel
[2016-08-05 13:12:38][INFO] START: Fetch configuration data from Plesk servers
[2016-08-05 13:12:38][INFO] Using the existing dump '/usr/local/psa/var/modules/panel-migrator/sessions/migration-session/plesk.backup.pfu.raw.tar' for 'pfu'
[2016-08-05 13:12:38][INFO] FINISH: Fetch configuration data from Plesk servers
[2016-08-05 13:12:38][INFO] Fetch information about APS web applications
[2016-08-05 13:12:38][INFO] Merge information about APS web applications into backup
[2016-08-05 13:12:38][INFO] START: Fetch capability info from Plesk servers
[2016-08-05 13:12:38][INFO] Using the existing dump '/usr/local/psa/var/modules/panel-migrator/sessions/migration-session/capability_dump.pfu.xml' for 'pfu'
[2016-08-05 13:12:38][INFO] FINISH: Fetch capability info from Plesk servers
[2016-08-05 13:12:38][INFO] FINISH: Fetch information from source panel
[2016-08-05 13:12:38][INFO] START: Fetch information from target servers
>>> Why fetch the information again and not reuse the information fetched during "transfer-accounts" stage?
[2016-08-05 13:12:53][INFO] Get target panel's resellers for conflict resolution
[2016-08-05 13:12:53][INFO] Get target panel's service templates for conflict resolution
[2016-08-05 13:12:57][INFO] Get target panel's customers for conflict resolution
>>> More time spend here
[2016-08-05 13:14:14][INFO] Get target panel's auxiliary users and roles for conflict resolution
>>> And here
[2016-08-05 13:16:59][INFO] Get target panel's subscriptions and webspaces for conflict resolution
>>> And here!
[2016-08-05 13:22:34][INFO] Get target panel's subscriptions, sites and site aliases for conflict resolution
[2016-08-05 13:29:23][INFO] FINISH: Fetch information from target servers
[2016-08-05 13:29:23][INFO] START: Convert clients and subscriptions
[2016-08-05 13:29:41][INFO] Convert resellers
[2016-08-05 13:29:54][INFO] FINISH: Convert clients and subscriptions
[2016-08-05 13:29:54][INFO] Convert hosting settings to target panel format
>>> And here!
[2016-08-05 13:49:57][INFO] START: Check target panel capability
>>> And here!
[2016-08-05 13:54:18][INFO] Set component 'mod_perl 'can not be installed in capability report
[2016-08-05 13:54:18][INFO] Set component 'mod_python 'can not be installed in capability report
[2016-08-05 13:54:18][INFO] FINISH: Check target panel capability
[2016-08-05 13:54:18][INFO] Import backup dumps to target panel's repository
So, looking at the above: copy-content started at 13:12:01, but 42 minutes later the migrator still hasn't started to transfer the actual data increments!
Are there any options to speed up copy-content? In the current form we're unlikely to be able to do a full server migration without looking at ~4 hours downtime.
Will follow up shortly with the subscription transfer log data.
Last edited: