Preparing your cluster and nodes
Before you install IBM® Cloud Private, you must configure a cluster of server nodes.
Prepare your cluster for installation
Before you prepare your nodes to install IBM Cloud Private, you must make some decisions about the cluster.
- Review the system requirements. For more information about software and hardware requirements, see System requirements.
- Determine your cluster architecture, and obtain the IP address for all nodes in your cluster. For more information about node types, see Architecture. During installation, you specify the IP addresses for each node type. Remember that after you install IBM Cloud Private, you can add or remove worker, proxy, or management nodes from your cluster.
-
Your environment can include nodes with different network device names such as
enXfor RHEL, ornetXfor Ubuntu. For Calico configurations, be sure to useinterface=<REGEX>in the network settings as shown in the following example.interface="en.*, net.*, eth.*"Note: You cannot change Calico network settings after your initial setup without experiencing network disruption. You must plan the settings before the initial setup of your IBM Cloud Private cluster.
Prepare each node for installation
-
Ensure that all required ports are open but are not in use. No firewall rules must block these ports. During installation, the installer also confirms that these ports are open. For more information about the IBM Cloud Private required ports, see Required ports.
To manually check whether a port is open and available, you can run one of the following two commands, where
port_numbersrepresent the TCP/UDP port or ports to check:-
Run the
sscommand:ss -tnlp | awk '{print $4}'| egrep -w "<port_numbers>"If the port is not in use, the output is empty. If the port is in use, the output displays as it does in the following example:
# ss -tnlp | awk '{print $4}' | egrep -w "8001|8500|3306" :::8001 :::3306 :::8500 -
Or, if you installed network utilities, run the
netstatcommand:netstat -tnlp | awk '{print $4}' | egrep -w "<port_numbers>"If the port is in use, the output displays as it does in the following example:
# netstat -tnlp | awk '{print $4}' | egrep -w "8001|8500|3306" :::8001 :::3306 :::8500Port numbers must be separated with the
|character.
-
-
Ensure that all directories on the node are empty and have space for the installation. For more information, see Hardware requirements and recommendations. For example, the
/var/lib/mysqlfolder must be empty on the master node before you install IBM Cloud Private. Note that theLost+Foundfolder is automatically created in Red Hat file systems, and you must manually remove it before installing. -
Configure the
/etc/hostsfile on each node in your cluster.- Add the IP addresses and host names for all nodes to the
/etc/hostsfile on each node.- Important: Ensure that the host name is listed by the IP address for the local host. You cannot list the host name by the loopback address,
127.0.0.1. - Host names in the
/etc/hostsfile cannot contain uppercase letters. - If your cluster contains a single node, you must list its IP address and host name.
- Important: Ensure that the host name is listed by the IP address for the local host. You cannot list the host name by the loopback address,
-
Comment out the line of the file that begins with
127.0.1.1and::1 localhost.The
/etc/hostsfile for a cluster that contains a master node, a proxy node, and two worker nodes resembles the following code:127.0.0.1 localhost # 127.0.1.1 <host_name> # The following lines are desirable for IPv6 capable hosts #::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters <master_node_IP_address> <master_node_host_name> <worker_node_1_IP_address> <worker_node_1_host_name> <worker_node_2_IP_address> <worker_node_2_IP_host_name> <proxy_node_IP_address> <proxy_node_host_name>Note: While the IBM Cloud Private installation process is running, the
/etc/hostsfile on all of the cluster nodes will be automatically updated to include an entry forclusterName.icp. This correlates tocluster_vip, unlesscluster_vipis not set, in which case it correlates tocluster_lb_address. IBM Cloud Private uses theclustername.icp:8500/xx/xxxin the/etc/hostsfile to pull the IBM Cloud Private registry Docker images.
- Add the IP addresses and host names for all nodes to the
-
On each cluster node, you must configure either a default gateway or a route to the
service_cluster_ip_range.For example, if you want to configure a route to the default IPv4
service_cluster_ip_range, run the following command:ip route add 10.0.0.0/16 dev eth0Where
eth0is the Ethernet interface that is assigned to your public IP address. For more information aboutservice_cluster_ip_range, see Network settings. -
For OpenStack environments, if the
/etc/hostsis managed by the cloud-init service, you need to prevent the cloud-init service from modifying the/etc/hostsfile. In the/etc/cloud/cloud.cfgfile, ensure that themanage_etc_hostsparameter is set tofalse:manage_etc_hosts: false -
Ensure network connectivity between all nodes in your cluster. Confirm that each node is connected to all other nodes in the cluster.
-
On each node in your cluster, confirm that a supported version of Python is installed. Python 2 (versions 2.6 or 2.7) and Python 3 (version 3.5 or later) are supported.
python --versionNote: If Python 3 or later is used, the location of the Python interpreter must be set in the config.yaml file by inserting the following line:
ansible_python_interpreter: /usr/bin/python3 -
Synchronize the clocks in each node in the cluster. To synchronize your clocks, you can use network time protocol (NTP). For more information about setting up NTP, see the user documentation for your operating system.
- Ensure that an SSH client is installed on each node.
What to do next
Install your cluster, see Installing IBM Cloud Private.