One place for hosting & domains

      Migrate

      How to Back Up, Import, and Migrate Your Apache Kafka Data on Ubuntu 18.04


      The author selected Tech Education Fund to receive a donation as part of the Write for DOnations program.

      Introduction

      Backing up your Apache Kafka data is an important practice that will help you recover from unintended data loss or bad data added to the cluster due to user error. Data dumps of cluster and topic data are an efficient way to perform backups and restorations.

      Importing and migrating your backed up data to a separate server is helpful in situations where your Kafka instance becomes unusable due to server hardware or networking failures and you need to create a new Kafka instance with your old data. Importing and migrating backed up data is also useful when you are moving the Kafka instance to an upgraded or downgraded server due to a change in resource usage.

      In this tutorial, you will back up, import, and migrate your Kafka data on a single Ubuntu 18.04 installation as well as on multiple Ubuntu 18.04 installations on separate servers. ZooKeeper is a critical component of Kafka’s operation. It stores information about cluster state such as consumer data, partition data, and the state of other brokers in the cluster. As such, you will also back up ZooKeeper’s data in this tutorial.

      Prerequisites

      To follow along, you will need:

      • An Ubuntu 18.04 server with at least 4GB of RAM and a non-root sudo user set up by following the tutorial.
      • An Ubuntu 18.04 server with Apache Kafka installed, to act as the source of the backup. Follow the How To Install Apache Kafka on Ubuntu 18.04 guide to set up your Kafka installation, if Kafka isn’t already installed on the source server.
      • OpenJDK 8 installed on the server. To install this version, follow these instructions on installing specific versions of OpenJDK.

      • Optional for Step 7 — Another Ubuntu 18.04 server with Apache Kafka installed, to act as the destination of the backup. Follow the article link in the previous prerequisite to install Kafka on the destination server. This prerequisite is required only if you are moving your Kafka data from one server to another. If you want to back up and import your Kafka data to a single server, you can skip this prerequisite.

      Step 1 — Creating a Test Topic and Adding Messages

      A Kafka message is the most basic unit of data storage in Kafka and is the entity that you will publish to and subscribe from Kafka. A Kafka topic is like a container for a group of related messages. When you subscribe to a particular topic, you will receive only messages that were published to that particular topic. In this section you will log in to the server that you would like to back up (the source server) and add a Kafka topic and a message so that you have some data populated for the backup.

      This tutorial assumes you have installed Kafka in the home directory of the kafka user (/home/kafka/kafka). If your installation is in a different directory, modify the ~/kafka part in the following commands with your Kafka installation’s path, and for the commands throughout the rest of this tutorial.

      SSH into the source server by executing:

      • ssh sammy@source_server_ip

      Run the following command to log in as the kafka user:

      Create a topic named BackupTopic using the kafka-topics.sh shell utility file in your Kafka installation's bin directory, by typing:

      • ~/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic BackupTopic

      Publish the string "Test Message 1" to the BackupTopic topic by using the ~/kafka/bin/kafka-console-producer.sh shell utility script.

      If you would like to add additional messages here, you can do so now.

      • echo "Test Message 1" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic BackupTopic > /dev/null

      The ~/kafka/bin/kafka-console-producer.sh file allows you to publish messages directly from the command line. Typically, you would publish messages using a Kafka client library from within your program, but since that involves different setups for different programming languages, you can use the shell script as a language-independent way of publishing messages during testing or while performing administrative tasks. The --topic flag specifies the topic that you will publish the message to.

      Next, verify that the kafka-console-producer.sh script has published the message(s) by running the following command:

      • ~/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic BackupTopic --from-beginning

      The ~/kafka/bin/kafka-console-consumer.sh shell script starts the consumer. Once started, it will subscribe to messages from the topic that you published in the "Test Message 1" message in the previous command. The --from-beginning flag in the command allows consuming messages that were published before the consumer was started. Without the flag enabled, only messages published after the consumer was started will appear. On running the command, you will see the following output in the terminal:

      Output

      Test Message 1

      Press CTRL+C to stop the consumer.

      You've created some test data and verified that it's persisted. Now you can back up the state data in the next section.

      Step 2 — Backing Up the ZooKeeper State Data

      Before backing up the actual Kafka data, you need to back up the cluster state stored in ZooKeeper.

      ZooKeeper stores its data in the directory specified by the dataDir field in the ~/kafka/config/zookeeper.properties configuration file. You need to read the value of this field to determine the directory to back up. By default, dataDir points to the /tmp/zookeeper directory. If the value is different in your installation, replace /tmp/zookeeper with that value in the following commands.

      Here is an example output of the ~/kafka/config/zookeeper.properties file:

      ~/kafka/config/zookeeper.properties

      ...
      ...
      ...
      # the directory where the snapshot is stored.
      dataDir=/tmp/zookeeper
      # the port at which the clients will connect
      clientPort=2181
      # disable the per-ip limit on the number of connections since this is a non-production config
      maxClientCnxns=0
      ...
      ...
      ...
      

      Now that you have the path to the directory, you can create a compressed archive file of its contents. Compressed archive files are a better option over regular archive files to save disk space. Run the following command:

      • tar -czf /home/kafka/zookeeper-backup.tar.gz /tmp/zookeeper/*

      The command's output tar: Removing leading / from member names you can safely ignore.

      The -c and -z flags tell tar to create an archive and apply gzip compression to the archive. The -f flag specifies the name of the output compressed archive file, which is zookeeper-backup.tar.gz in this case.

      You can run ls in your current directory to see zookeeper-backup.tar.gz as part of your output.

      You have now successfully backed up the ZooKeeper data. In the next section, you will back up the actual Kafka data.

      Step 3 — Backing Up the Kafka Topics and Messages

      In this section, you will back up Kafka's data directory into a compressed tar file like you did for ZooKeeper in the previous step.

      Kafka stores topics, messages, and internal files in the directory that the log.dirs field specifies in the ~/kafka/config/server.properties configuration file. You need to read the value of this field to determine the directory to back up. By default and in your current installation, log.dirs points to the /tmp/kafka-logs directory. If the value is different in your installation, replace /tmp/kafka-logs in the following commands with the correct value.

      Here is an example output of the ~/kafka/config/server.properties file:

      ~/kafka/config/server.properties

      ...
      ...
      ...
      ############################# Log Basics #############################
      
      # A comma separated list of directories under which to store log files
      log.dirs=/tmp/kafka-logs
      
      # The default number of log partitions per topic. More partitions allow greater
      # parallelism for consumption, but this will also result in more files across
      # the brokers.
      num.partitions=1
      
      # The number of threads per data directory to be used for log recovery at startup and flushing at shutdown.
      # This value is recommended to be increased for installations with data dirs located in RAID array.
      num.recovery.threads.per.data.dir=1
      ...
      ...
      ...
      

      First, stop the Kafka service so that the data in the log.dirs directory is in a consistent state when creating the archive with tar. To do this, return to your server's non-root user by typing exit and then run the following command:

      • sudo systemctl stop kafka

      After stopping the Kafka service, log back in as your kafka user with:

      It is necessary to stop/start the Kafka and ZooKeeper services as your non-root sudo user because in the Apache Kafka installation prerequisite you restricted the kafka user as a security precaution. This step in the prerequisite disables sudo access for the kafka user, which leads to commands failing to execute.

      Now, create a compressed archive file of the directory's contents by running the following command:

      • tar -czf /home/kafka/kafka-backup.tar.gz /tmp/kafka-logs/*

      Once again, you can safely ignore the command's output (tar: Removing leading / from member names).

      You can run ls in the current directory to see kafka-backup.tar.gz as part of the output.

      You can start the Kafka service again — if you do not want to restore the data immediately — by typing exit, to switch to your non-root sudo user, and then running:

      • sudo systemctl start kafka

      Log back in as your kafka user:

      You have successfully backed up the Kafka data. You can now proceed to the next section, where you will be restoring the cluster state data stored in ZooKeeper.

      Step 4 — Restoring the ZooKeeper Data

      In this section you will restore the cluster state data that Kafka creates and manages internally when the user performs operations such as creating a topic, adding/removing additional nodes, and adding and consuming messages. You will restore the data to your existing source installation by deleting the ZooKeeper data directory and restoring the contents of the zookeeper-backup.tar.gz file. If you want to restore data to a different server, see Step 7.

      You need to stop the Kafka and ZooKeeper services as a precaution against the data directories receiving invalid data during the restoration process.

      First, stop the Kafka service by typing exit, to switch to your non-root sudo user, and then running:

      • sudo systemctl stop kafka

      Next, stop the ZooKeeper service:

      • sudo systemctl stop zookeeper

      Log back in as your kafka user:

      You can then safely delete the existing cluster data directory with the following command:

      Now restore the data you backed up in Step 2:

      • tar -C /tmp/zookeeper -xzf /home/kafka/zookeeper-backup.tar.gz --strip-components 2

      The -C flag tells tar to change to the directory /tmp/zookeeper before extracting the data. You specify the --strip 2 flag to make tar extract the archive's contents in /tmp/zookeeper/ itself and not in another directory (such as /tmp/zookeeper/tmp/zookeeper/) inside of it.

      You have restored the cluster state data successfully. Now, you can proceed to the Kafka data restoration process in the next section.

      Step 5 — Restoring the Kafka Data

      In this section you will restore the backed up Kafka data to your existing source installation (or the destination server if you have followed the optional Step 7) by deleting the Kafka data directory and restoring the compressed archive file. This will allow you to verify that restoration works successfully.

      You can safely delete the existing Kafka data directory with the following command:

      Now that you have deleted the data, your Kafka installation resembles a fresh installation with no topics or messages present in it. To restore your backed up data, extract the files by running:

      • tar -C /tmp/kafka-logs -xzf /home/kafka/kafka-backup.tar.gz --strip-components 2

      The -C flag tells tar to change to the directory /tmp/kafka-logs before extracting the data. You specify the --strip 2 flag to ensure that the archive's contents are extracted in /tmp/kafka-logs/ itself and not in another directory (such as /tmp/kafka-logs/kafka-logs/) inside of it.

      Now that you have extracted the data successfully, you can start the Kafka and ZooKeeper services again by typing exit, to switch to your non-root sudo user, and then executing:

      • sudo systemctl start kafka

      Start the ZooKeeper service with:

      • sudo systemctl start zookeeper

      Log back in as your kafka user:

      You have restored the kafka data, you can move on to verifying that the restoration is successful in the next section.

      Step 6 — Verifying the Restoration

      To test the restoration of the Kafka data, you will consume messages from the topic you created in Step 1.

      Wait a few minutes for Kafka to start up and then execute the following command to read messages from the BackupTopic:

      • ~/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic BackupTopic --from-beginning

      If you get a warning like the following, you need to wait for Kafka to start fully:

      Output

      [2018-09-13 15:52:45,234] WARN [Consumer clientId=consumer-1, groupId=console-consumer-87747] Connection to node -1 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)

      Retry the previous command in another few minutes or run sudo systemctl restart kafka as your non-root sudo user. If there are no issues in the restoration, you will see the following output:

      Output

      Test Message 1

      If you do not see this message, you can check if you missed out any commands in the previous section and execute them.

      Now that you have verified the restored Kafka data, this means you have successfully backed up and restored your data in a single Kafka installation. You can continue to Step 7 to see how to migrate the cluster and topics data to an installation in another server.

      Step 7 — Migrating and Restoring the Backup to Another Kafka Server (Optional)

      In this section, you will migrate the backed up data from the source Kafka server to the destination Kafka server. To do so, you will first use the scp command to download the compressed tar.gz files to your local system. You will then use scp again to push the files to the destination server. Once the files are present in the destination server, you can follow the steps used previously to restore the backup and verify that the migration is successful.

      You are downloading the backup files locally and then uploading them to the destination server, instead of copying it directly from your source to destination server, because the destination server will not have your source server's SSH key in its /home/sammy/.ssh/authorized_keys file and cannot connect to and from the source server. Your local machine can connect to both servers however, saving you an additional step of setting up SSH access from the source to destination server.

      Download the zookeeper-backup.tar.gz and kafka-backup.tar.gz files to your local machine by executing:

      • scp sammy@source_server_ip:/home/kafka/zookeeper-backup.tar.gz .

      You will see output similar to:

      Output

      zookeeper-backup.tar.gz 100% 68KB 128.0KB/s 00:00

      Now run the following command to download the kafka-backup.tar.gz file to your local machine:

      • scp sammy@source_server_ip:/home/kafka/kafka-backup.tar.gz .

      You will see the following output:

      Output

      kafka-backup.tar.gz 100% 1031KB 488.3KB/s 00:02

      Run ls in the current directory of your local machine, you will see both of the files:

      Output

      kafka-backup.tar.gz zookeeper.tar.gz

      Run the following command to transfer the zookeeper-backup.tar.gz file to /home/kafka/ of the destination server:

      • scp zookeeper-backup.tar.gz sammy@destination_server_ip:/home/sammy/zookeeper-backup.tar.gz

      Now run the following command to transfer the kafka-backup.tar.gz file to /home/kafka/ of the destination server:

      • scp kafka-backup.tar.gz sammy@destination_server_ip:/home/sammy/kafka-backup.tar.gz

      You have uploaded the backup files to the destination server successfully. Since the files are in the /home/sammy/ directory and do not have the correct permissions for access by the kafka user, you can move the files to the /home/kafka/ directory and change their permissions.

      SSH into the destination server by executing:

      • ssh sammy@destination_server_ip

      Now move zookeeper-backup.tar.gz to /home/kafka/ by executing:

      • sudo mv zookeeper-backup.tar.gz /home/sammy/zookeeper-backup.tar.gz

      Similarly, run the following command to copy kafka-backup.tar.gz to /home/kafka/:

      • sudo mv kafka-backup.tar.gz /home/kafka/kafka-backup.tar.gz

      Change the owner of the backup files by running the following command:

      • sudo chown kafka /home/kafka/zookeeper-backup.tar.gz /home/kafka/kafka-backup.tar.gz

      The previous mv and chown commands will not display any output.

      Now that the backup files are present in the destination server at the correct directory, follow the commands listed in Steps 4 to 6 of this tutorial to restore and verify the data for your destination server.

      Conclusion

      In this tutorial, you backed up, imported, and migrated your Kafka topics and messages from both the same installation and installations on separate servers. If you would like to learn more about other useful administrative tasks in Kafka, you can consult the operations section of Kafka's official documentation.

      To store backed up files such as zookeeper-backup.tar.gz and kafka-backup.tar.gz remotely, you can explore Digital Ocean Spaces. If Kafka is the only service running on your server, you can also explore other backup methods such as full instance backups.



      Source link

      How to Migrate a CPanel Server to Linode


      Updated by Linode

      Written by Nathan Melehan


      Use promo code DOCS10 for $10 credit on a new account.

      This guide describes how to migrate from a server running WHM and CPanel on another hosting service to Linode. This transfer is completed using CPanel’s official Transfer Tool. Prior to using the Transfer Tool, you will complete a basic WHM installation on a new Linode. Read the Best Practices when Migrating to Linode guide for more information about migrating your sites before beginning.

      Note

      The Transfer Tool only transfers your CPanel accounts, and not your WHM settings. You will need to recreate your WHM settings on your new Linode separately.

      This guide does not cover how to handle CPanel deployments that are part of a DNS cluster. For guidance on migrating a CPanel server in a DNS cluster, see CPanel’s official documentation.

      Migrate Your CPanel Accounts

      Deploy Your Linode

      1. Follow Linode’s Getting Started guide and choose CentOS 7 as your Linux image. Choose a Linode plan with enough storage capacity to accommodate the data within the CPanel accounts on your current host.

      2. Use the How to Secure Your Server guide to create a limited Linux user with sudo privileges.

      3. Stand up a new WHM/CPanel installation by following the Install CPanel on Linode guide. Use the Linode’s generic domain name for WHM’s Hostname setting. This generic domain will be listed under the Remote Access tab for your Linode in the Linode Manager, and it will have the form liXY-ABC.members.linode.com.

        Note

        You will set the Hostname to be your actual domain name later on in this guide. If you set the Hostname setting as your domain name now, the WHM and CPanel dashboards on your new Linode will redirect to your current host, and you will not be able to access the settings for your new Linode.

      Use the CPanel Transfer Tool

      1. Visit http://your_linode_ip_address:2087 in your web browser to load the WHM dashboard. Bypass the browser warning message about the web server’s SSL/TLS certificate.

      2. Log in to WHM with the root user and password for your Linode.

        WHM Login Page

      3. In the menu on the left side of the WHM dashboard, scroll down to the Transfers section and choose the Transfer Tool option:

        WHM Dashboard Transfer Tool Menu Option

      4. In the Remote Server Address field, enter your current host’s IP address:

        WHM Transfer Tool Remote Server Information Form

      5. Enter the root credentials for your current host under the Authentication section. You will need the root password for your current host and root logins should be allowed on that host.

        If you don’t have root credentials or if root logins are not allowed, you will need the credentials of another user with sudo privileges on your current host. Enter that username and password and choose sudo for the Root Escalation Method field.

        WHM Transfer Tool Authentication Form

      6. Click the Fetch Account List button at the bottom of the form.

      7. A new page will load with forms listing the Service Configurations, Packages, and Accounts from your current host. Click the corresponding checkbox for each item in these sections to enable their transfer. Click the Show button for the Service Configurations section to see the options in that area:

        WHM Transfer Tool Service Configurations Form

      8. When all of the options are selected, click the Copy button at the bottom of the page. A new page will appear showing the progress of your transfer:

        WHM Transfer Tool Progress Information

      Verify Transferred Accounts

      You should verify that all information from your CPanel accounts was transferred successfully to your Linode. To do this, you will log in to CPanel on your new Linode for each account that was transferred and review the contents of the dashboard. The specific information in the following sections should also be reviewed for each account.

      Verify IP Address Assignments

      The Transfer Tool will attempt to assign your new Linode IP to the transferred CPanel accounts. It will sometimes fail and leave your old host’s IP in place, so you should confirm which IP is assigned to your CPanel accounts:

      1. In the menu on the left side of the WHM dashboard, navigate to the Account Information section and choose the List Accounts option:

        WHM List Accounts

      2. Verify that your new Linode’s IP is listed for the accounts. If it is not listed, use the CPanel IP Migration Wizard tool to update your account configurations with the new IP.

      Verify SSL Certificates

      The official CPanel migration documentation notes that SSL certificates (apart from the self-signed certificates that CPanel provides) need to be manually downloaded from the source CPanel server and then installed on the new Linode.

      When writing this guide it was found that the SSL certificates from the test source server were transferred automatically. It’s recommended that you verify that your SSL certificates are present on the new server, and that you backup the certificate files from the source server.

      1. The SSL certificates on your current CPanel host are located in /etc/ssl. Download them to your computer:

        scp -r root@current_host_ip_address:/etc/ssl ~
        

        You can also use FileZilla to download the files.

        If you are not able to login as root to your host, login as a user with sudo privileges and then copy those files to the user’s home folder:

        ssh your_sudo_user@current_host_ip_address
        sudo cp -r /etc/ssl ~
        sudo chown $(whoami):$(whoami) ssl
        exit
        

        Then download the files from the user’s home folder to your computer:

        scp -r root@current_host_ip_address:~/ssl ~
        

        After downloading the files, log back into your host and remove the files from the sudo user’s home folder:

        rm -r ~/ssl
        
      2. If you do not have terminal access to your current host, you can also copy the certificates from the CPanel interface. Load CPanel on your current host by visiting http://your_current_host_ip_address:2083 in your web browser and enter your CPanel account credentials.

        CPanel Login Page

        Visit the SSL/TLS section and view the private keys, certificate signing requests, and certificates listed. Copy and paste each of these to text files on your computer. Repeat this for each CPanel account on your current host.

        CPanel SSL/TLS Page

      3. Visit http://your_linode_ip_address:2083 in your web browser to load the CPanel dashboard on your Linode. Bypass the browser warning message about the web server’s SSL/TLS certificate.

      4. When presented with the CPanel Login form, enter the credentials you use for your CPanel account on your current host. These credentials were transferred by the Transfer Tool and are the same as before.

      5. Visit the SSL/TLS section and review the private keys and certificates sections. If you do not see your private keys and certificates, use the Upload a New Private Key and Upload a New Certificate forms to add them.

      6. Visit the SSL/TLS section again and navigate to the Install and Manage SSL for your site (HTTPS) page. Click the Certificate Details link to view which certificate is installed for your site.

        CPanel SSL/TLS Manage SSL Certificates Certificate Details

      7. If your certificate is not being used, click the Browse Certificates button and choose your certificate from the dialog that appears. After choosing your certificate, click the Install Certificate button at the bottom of the page.

      8. Repeat steps 4-8 for each transferred CPanel account.

      Test Your New CPanel Deployment

      If you visit your Linode’s IP address in your browser, the website served by your CPanel account will not appear. This is because the CPanel server expects your domain name to be passed in your web request, and you have not updated your DNS yet.

      The Previewing Websites Without DNS guide describes a way to visit your domain prior to updating your DNS records. When you have updated your DNS, this workaround will no longer be necessary to view your site.

      Migrating DNS Records

      After completing the CPanel migration, update your DNS records to reflect your new Linode’s IP. Once this is done, site visitors will start loading your CPanel accounts’ services from your new Linode.

      (Optional) Prepare Your Domain Name to Move

      A recommended first step is to lower the Time to Live (TTL) setting for your domain so that the migration won’t have a negative impact on your site’s visitors. TTL tells DNS caching servers how long to save information about your domain. Because DNS addresses don’t often change server IP addresses, default TTL is typically about 24 hours.

      When changing servers, however, make the TTL shorter to make sure that when you update your domain information, it takes effect quickly. Otherwise, your domain could resolve to your old server’s IP address for up to 24 hours.

      1. Locate your current nameservers. If you’re not sure what your nameservers are, use a Whois Search tool. You will see several nameservers listed, probably all at the same company.

        linode.com nameservers

        You can usually derive the website of your nameserver authority (the organization that manages your DNS) from the nameservers you find in the Whois report (e.g. ns1.linode.com corresponds with linode.com). Sometimes the labeling for the nameservers is not directly related to the organization’s website, and in those cases you can often find the website by plugging the nameserver into a Google search.

      2. Contact your nameserver authority for details on how to shorten the TTL for your domain. Every provider is a little different, so you may have to ask for instructions.


        Updating TTL at common nameserver authorities

        Most nameserver authorities will allow you to set the TTL on your domain or on individual records, but some do not allow this setting to be edited. Here are support documents from some common authorities that mention how they manage TTL:

      3. Make a note of your current TTL. It will be listed in seconds, so you need to divide by 3600 to get the number of hours (e.g. 86,400 seconds = 24 hours). This is the amount of time that you need to wait between now and when you actually move your domain.

      4. Adjust your TTL to its shortest setting. For example, 300 seconds is equal to 5 minutes, so that’s a good choice if it’s available.

      5. Wait out the original TTL from Step 3 before actually moving your domain–otherwise, DNS caching servers will not know of the new, lower TTL yet. For more information on domain TTL, see our DNS guide.

      Use Linode’s Nameservers

      1. Follow Linode’s instructions on adding a domain zone to create DNS records at Linode for your domain. Recreate the DNS records listed in your current nameserver authority’s website, but change the IP addresses to reflect your Linode IPs where appropriate.

      2. Locate your domain’s registrar, which is the company you purchased your domain from. If you’re not sure who your registrar is, you can find out with a Whois Search tool.

        linode.com nameservers

        Your registrar may not be the same organization as your current nameserver authority, though they often are, as registrars generally offer free DNS services.

      3. Log in to your domain registrar’s control panel and update the authoritative nameservers to be Linode’s nameservers:

        • ns1.linode.com
        • ns2.linode.com
        • ns3.linode.com
        • ns4.linode.com
        • ns5.linode.com


        Updating authoritative nameservers at common registrars

        The following support documents describe how to update the authoritative nameservers of common registrars:

      4. Wait the amount of time you set for your TTL for the domain to propagate. If you did not shorten your TTL, this may take up to 48 hours.

      5. Navigate to your domain in a web browser. It should now show the website from Linode, rather than your old host. If you can’t tell the difference, use the DIG utility. It should show the IP address for your Linode.

      6. Set reverse DNS for your domain. This is especially important if you are running a mail server.

        Note

        If you’re having trouble seeing your site at the new IP address, try visiting it in a different browser or in a private browsing session. Sometimes your browser will cache old DNS data, even if it has updated everywhere else.

      Update WHM Hostname

      After your DNS changes have propagated, update WHM’s hostname to be your domain. In the menu on the left side of the WHM dashboard, navigate to the Networking Setup section and choose the Change Hostname option. Enter the new hostname in the form that appears and click the Change button:

      CPanel Change Hostname page

      Transfer CPanel License

      If you purchased your license directly from CPanel, update your license to feature your new Linode’s IP address. If you purchased your license through your previous host, then you will need to purchase a new license from CPanel for your Linode deployment. As an alternative to purchasing from CPanel, a free CPanel subscription is included for each of your Linodes if you are a Linode Managed subscriber.

      More Information

      You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.

      Join our Community

      Find answers, ask questions, and help others.

      This guide is published under a CC BY-ND 4.0 license.



      Source link

      How to Migrate a CPanel Server to Linode


      Updated by Linode

      Written by Nathan Melehan


      Use promo code DOCS10 for $10 credit on a new account.

      This guide describes how to migrate from a server running WHM and CPanel on another hosting service to Linode. This transfer is completed using CPanel’s official Transfer Tool. Prior to using the Transfer Tool, you will complete a basic WHM installation on a new Linode. Read the Best Practices when Migrating to Linode guide for more information about migrating your sites before beginning.

      Note

      The Transfer Tool only transfers your CPanel accounts, and not your WHM settings. You will need to recreate your WHM settings on your new Linode separately.

      This guide does not cover how to handle CPanel deployments that are part of a DNS cluster. For guidance on migrating a CPanel server in a DNS cluster, see CPanel’s official documentation.

      Migrate Your CPanel Accounts

      Deploy Your Linode

      1. Follow Linode’s Getting Started guide and choose CentOS 7 as your Linux image. Choose a Linode plan with enough storage capacity to accommodate the data within the CPanel accounts on your current host.

      2. Use the How to Secure Your Server guide to create a limited Linux user with sudo privileges.

      3. Stand up a new WHM/CPanel installation by following the Install CPanel on Linode guide. Use the Linode’s generic domain name for WHM’s Hostname setting. This generic domain will be listed under the Remote Access tab for your Linode in the Linode Manager, and it will have the form liXY-ABC.members.linode.com.

        Note

        You will set the Hostname to be your actual domain name later on in this guide. If you set the Hostname setting as your domain name now, the WHM and CPanel dashboards on your new Linode will redirect to your current host, and you will not be able to access the settings for your new Linode.

      Use the CPanel Transfer Tool

      1. Visit http://your_linode_ip_address:2087 in your web browser to load the WHM dashboard. Bypass the browser warning message about the web server’s SSL/TLS certificate.

      2. Log in to WHM with the root user and password for your Linode.

        WHM Login Page

      3. In the menu on the left side of the WHM dashboard, scroll down to the Transfers section and choose the Transfer Tool option:

        WHM Dashboard Transfer Tool Menu Option

      4. In the Remote Server Address field, enter your current host’s IP address:

        WHM Transfer Tool Remote Server Information Form

      5. Enter the root credentials for your current host under the Authentication section. You will need the root password for your current host and root logins should be allowed on that host.

        If you don’t have root credentials or if root logins are not allowed, you will need the credentials of another user with sudo privileges on your current host. Enter that username and password and choose sudo for the Root Escalation Method field.

        WHM Transfer Tool Authentication Form

      6. Click the Fetch Account List button at the bottom of the form.

      7. A new page will load with forms listing the Service Configurations, Packages, and Accounts from your current host. Click the corresponding checkbox for each item in these sections to enable their transfer. Click the Show button for the Service Configurations section to see the options in that area:

        WHM Transfer Tool Service Configurations Form

      8. When all of the options are selected, click the Copy button at the bottom of the page. A new page will appear showing the progress of your transfer:

        WHM Transfer Tool Progress Information

      Verify Transferred Accounts

      You should verify that all information from your CPanel accounts was transferred successfully to your Linode. To do this, you will log in to CPanel on your new Linode for each account that was transferred and review the contents of the dashboard. The specific information in the following sections should also be reviewed for each account.

      Verify IP Address Assignments

      The Transfer Tool will attempt to assign your new Linode IP to the transferred CPanel accounts. It will sometimes fail and leave your old host’s IP in place, so you should confirm which IP is assigned to your CPanel accounts:

      1. In the menu on the left side of the WHM dashboard, navigate to the Account Information section and choose the List Accounts option:

        WHM List Accounts

      2. Verify that your new Linode’s IP is listed for the accounts. If it is not listed, use the CPanel IP Migration Wizard tool to update your account configurations with the new IP.

      Verify SSL Certificates

      The official CPanel migration documentation notes that SSL certificates (apart from the self-signed certificates that CPanel provides) need to be manually downloaded from the source CPanel server and then installed on the new Linode.

      When writing this guide it was found that the SSL certificates from the test source server were transferred automatically. It’s recommended that you verify that your SSL certificates are present on the new server, and that you backup the certificate files from the source server.

      1. The SSL certificates on your current CPanel host are located in /etc/ssl. Download them to your computer:

        scp -r root@current_host_ip_address:/etc/ssl ~
        

        You can also use FileZilla to download the files.

        If you are not able to login as root to your host, login as a user with sudo privileges and then copy those files to the user’s home folder:

        ssh your_sudo_user@current_host_ip_address
        sudo cp -r /etc/ssl ~
        sudo chown $(whoami):$(whoami) ssl
        exit
        

        Then download the files from the user’s home folder to your computer:

        scp -r root@current_host_ip_address:~/ssl ~
        

        After downloading the files, log back into your host and remove the files from the sudo user’s home folder:

        rm -r ~/ssl
        
      2. If you do not have terminal access to your current host, you can also copy the certificates from the CPanel interface. Load CPanel on your current host by visiting http://your_current_host_ip_address:2083 in your web browser and enter your CPanel account credentials.

        CPanel Login Page

        Visit the SSL/TLS section and view the private keys, certificate signing requests, and certificates listed. Copy and paste each of these to text files on your computer. Repeat this for each CPanel account on your current host.

        CPanel SSL/TLS Page

      3. Visit http://your_linode_ip_address:2083 in your web browser to load the CPanel dashboard on your Linode. Bypass the browser warning message about the web server’s SSL/TLS certificate.

      4. When presented with the CPanel Login form, enter the credentials you use for your CPanel account on your current host. These credentials were transferred by the Transfer Tool and are the same as before.

      5. Visit the SSL/TLS section and review the private keys and certificates sections. If you do not see your private keys and certificates, use the Upload a New Private Key and Upload a New Certificate forms to add them.

      6. Visit the SSL/TLS section again and navigate to the Install and Manage SSL for your site (HTTPS) page. Click the Certificate Details link to view which certificate is installed for your site.

        CPanel SSL/TLS Manage SSL Certificates Certificate Details

      7. If your certificate is not being used, click the Browse Certificates button and choose your certificate from the dialog that appears. After choosing your certificate, click the Install Certificate button at the bottom of the page.

      8. Repeat steps 4-8 for each transferred CPanel account.

      Test Your New CPanel Deployment

      If you visit your Linode’s IP address in your browser, the website served by your CPanel account will not appear. This is because the CPanel server expects your domain name to be passed in your web request, and you have not updated your DNS yet.

      The Previewing Websites Without DNS guide describes a way to visit your domain prior to updating your DNS records. When you have updated your DNS, this workaround will no longer be necessary to view your site.

      Migrating DNS Records

      After completing the CPanel migration, update your DNS records to reflect your new Linode’s IP. Once this is done, site visitors will start loading your CPanel accounts’ services from your new Linode.

      (Optional) Prepare Your Domain Name to Move

      A recommended first step is to lower the Time to Live (TTL) setting for your domain so that the migration won’t have a negative impact on your site’s visitors. TTL tells DNS caching servers how long to save information about your domain. Because DNS addresses don’t often change server IP addresses, default TTL is typically about 24 hours.

      When changing servers, however, make the TTL shorter to make sure that when you update your domain information, it takes effect quickly. Otherwise, your domain could resolve to your old server’s IP address for up to 24 hours.

      1. Locate your current nameservers. If you’re not sure what your nameservers are, use a Whois Search tool. You will see several nameservers listed, probably all at the same company.

        linode.com nameservers

        You can usually derive the website of your nameserver authority (the organization that manages your DNS) from the nameservers you find in the Whois report (e.g. ns1.linode.com corresponds with linode.com). Sometimes the labeling for the nameservers is not directly related to the organization’s website, and in those cases you can often find the website by plugging the nameserver into a Google search.

      2. Contact your nameserver authority for details on how to shorten the TTL for your domain. Every provider is a little different, so you may have to ask for instructions.


        Updating TTL at common nameserver authorities

        Most nameserver authorities will allow you to set the TTL on your domain or on individual records, but some do not allow this setting to be edited. Here are support documents from some common authorities that mention how they manage TTL:

      3. Make a note of your current TTL. It will be listed in seconds, so you need to divide by 3600 to get the number of hours (e.g. 86,400 seconds = 24 hours). This is the amount of time that you need to wait between now and when you actually move your domain.

      4. Adjust your TTL to its shortest setting. For example, 300 seconds is equal to 5 minutes, so that’s a good choice if it’s available.

      5. Wait out the original TTL from Step 3 before actually moving your domain–otherwise, DNS caching servers will not know of the new, lower TTL yet. For more information on domain TTL, see our DNS guide.

      Use Linode’s Nameservers

      1. Follow Linode’s instructions on adding a domain zone to create DNS records at Linode for your domain. Recreate the DNS records listed in your current nameserver authority’s website, but change the IP addresses to reflect your Linode IPs where appropriate.

      2. Locate your domain’s registrar, which is the company you purchased your domain from. If you’re not sure who your registrar is, you can find out with a Whois Search tool.

        linode.com nameservers

        Your registrar may not be the same organization as your current nameserver authority, though they often are, as registrars generally offer free DNS services.

      3. Log in to your domain registrar’s control panel and update the authoritative nameservers to be Linode’s nameservers:

        • ns1.linode.com
        • ns2.linode.com
        • ns3.linode.com
        • ns4.linode.com
        • ns5.linode.com


        Updating authoritative nameservers at common registrars

        The following support documents describe how to update the authoritative nameservers of common registrars:

      4. Wait the amount of time you set for your TTL for the domain to propagate. If you did not shorten your TTL, this may take up to 48 hours.

      5. Navigate to your domain in a web browser. It should now show the website from Linode, rather than your old host. If you can’t tell the difference, use the DIG utility. It should show the IP address for your Linode.

      6. Set reverse DNS for your domain. This is especially important if you are running a mail server.

        Note

        If you’re having trouble seeing your site at the new IP address, try visiting it in a different browser or in a private browsing session. Sometimes your browser will cache old DNS data, even if it has updated everywhere else.

      Update WHM Hostname

      After your DNS changes have propagated, update WHM’s hostname to be your domain. In the menu on the left side of the WHM dashboard, navigate to the Networking Setup section and choose the Change Hostname option. Enter the new hostname in the form that appears and click the Change button:

      CPanel Change Hostname page

      Transfer CPanel License

      If you purchased your license directly from CPanel, update your license to feature your new Linode’s IP address. If you purchased your license through your previous host, then you will need to purchase a new license from CPanel for your Linode deployment. As an alternative to purchasing from CPanel, a free CPanel subscription is included for each of your Linodes if you are a Linode Managed subscriber.

      More Information

      You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.

      Join our Community

      Find answers, ask questions, and help others.

      This guide is published under a CC BY-ND 4.0 license.



      Source link