Persiapan
Saya menggunakan tiga node VM untuk proyek lab rumah ini dengan 4 inti, 4 GB memori, dan 20 GB untuk penyimpanan kontainer, menggunakan sistem operasi Rocky Linux 9.5 dengan Docker Community Edition v28.2.2.
| Nama Host Node | vCPU | Memori | Penyimpanan | Jaringan Pribadi |
|---|---|---|---|---|
| hmlab01swarm01 | 4 Core | 4GB | 20GB | 172.16.0.111 |
| hmlab01swarm02 | 4 Core | 4GB | 20GB | 172.16.0.112 |
| hmlab01swarm03 | 4 Core | 4GB | 20GB | 172.16.0.113 |
Semua operasi menggunakan pengguna
root, berhati-hatilah saat menjalankan perintah!
Pada langkah ini, eksekusi dilakukan di semua node
Opsional: Atur SElinux ke mode permisif untuk lingkungan pengembangan
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
Atur nama host statis
Konfigurasi lingkungan
node_01=hmlab01swarm01
node_02=hmlab01swarm02
node_03=hmlab01swarm03
node_IP01=172.16.0.111
node_IP02=172.16.0.112
node_IP03=172.16.0.113
Kemudian tambahkan nama host statis di /etc/hosts untuk semua node.
cat <<EOF > /etc/hosts
$NODE_IP01 $NODE_01
$NODE_IP02 $NODE_02
$NODE_IP03 $NODE_03
EOF
Tambahkan Repositori dan Instal Docker
dnf install -y dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Set
cat <<EOF | sudo tee /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
systemctl restart docker.service
systemctl enable docker.service
Membuat kluster
Jalankan perintah berikut hanya pada node manajer pertama
docker swarm init --advertise-addr 172.16.0.111 --force-new-cluster

Untuk menambahkan node manajer lain, jalankan perintah ini yang telah kita gunakan sebelumnya dengan docker swarm join-token manager di node manajer pertama.
docker swarm join --token SWMTKN-1-04x40p3y8w72nv7a3merg1ee4ya4t6r3ra379gv7hv79udt0ho-8d18zrgpy5elj3f69i7rvz8tf 172.16.0.111:2377
