Step‑by‑Step Guide to Building a Local Linux Cluster with VirtualBox
This tutorial walks you through creating four VirtualBox Linux VMs, configuring networking, disabling firewalls, installing Java and Perl, setting up password‑less SSH, and preparing a reusable cluster environment that can later host Redis, Kafka, or Storm clusters.
In this article the author, Wu Kong, explains how to create a four‑node Linux cluster on a local machine using VirtualBox, enabling you to simulate distributed and high‑concurrency scenarios for future e‑commerce projects.
Creating the Virtual Machines
Install VirtualBox, add a Linux ISO image, and create four VMs. Choose Bridge networking and start each VM. During the first boot set the hostname eshop-cache01 and the password huang123.
Network Configuration
Because the VMs initially cannot reach the Internet, edit the network script to obtain a dynamic IP:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=dhcpRestart the network and verify connectivity:
service network restart
ifconfigSwitch to a static IP (e.g., 192.168.10.86) by modifying the same file:
BOOTPROTO=static
IPADDR=192.168.10.86
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
service network startUpdate /etc/hosts to map hostnames to IPs:
vi /etc/hosts
192.168.10.86 eshop-cache01Installing Supporting Tools
Install SecureCRT (download from Baidu Cloud) for convenient SSH access, and WinSCP for file transfers.
Disable firewalls and SELinux to avoid inter‑node communication issues:
service iptables stop
service ip6tables stop
chkconfig iptables off
chkconfig ip6tables off
vi /etc/selinux/config
SELINUX=disabledConfigure YUM to use Alibaba mirrors, clean the cache, and install basic utilities:
sed -i "s|enabled=1|enabled=0|g" /etc/yum/pluginconf.d/fastestmirror.conf
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.xmpan.com/Centos-6-Vault-Aliyun.repo
yum clean all
yum makecache
yum install -y wgetInstalling Java JDK 7
Copy the JDK RPM to /usr/local and install it:
rpm -ivh jdk-7u65-linux-i586.rpm
rm -rf jdk-7u65-linux-i586.rpmSet environment variables:
vi ~/.bashrc
export JAVA_HOME=/usr/java/latest
export PATH=$PATH:$JAVA_HOME/bin
source ~/.bashrc
java -versionInstalling Perl 5.16.1
Extract the source, install GCC, configure, compile and install:
tar -zxvf perl-5.16.1.tar.gz
yum install -y gcc
cd perl-5.16.1
./Configure -des -Dprefix=/usr/local/perl
make && make test && make install
rm -rf perl-5.16.1.tar.gzSetting Up Password‑less SSH
On each node generate an RSA key pair and copy the public key to authorized_keys:
ssh-keygen -t rsa
cd /root/.ssh
cp id_rsa.pub authorized_keysTest the login:
ssh eshop-cache01Copy each node’s public key to the others to enable mutual password‑less access:
ssh-copy-id -i eshop-cache01
scp authorized_keys eshop-cache02:/root/.ssh
scp authorized_keys eshop-cache03:/root/.ssh
scp authorized_keys eshop-cache04:/root/.sshFinal Cluster Verification
After configuring /etc/hosts on all machines and confirming SSH connectivity, the four nodes can communicate freely, completing the basic cluster environment.
Encountered Issue
The VMs lost external network access; switching the host’s network from wireless to wired and setting the VirtualBox network adapter to a bridged wired interface resolved the problem.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Wukong Talks Architecture
Explaining distributed systems and architecture through stories. Author of the "JVM Performance Tuning in Practice" column, open-source author of "Spring Cloud in Practice PassJava", and independently developed a PMP practice quiz mini-program.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
