天天看點

swarm叢集實踐(一):搭建環境一、準備所需軟體二、建立虛拟機svr00三、複制虛拟電腦svr00為svr01四、複制虛拟電腦svr00為svr02五、複制虛拟電腦svr00為svr03六、總結

一、準備所需軟體

作業系統:ubuntu-20.04.2-live-server-amd64.iso (可從國内鏡像網站mirrors.163.com下載下傳)

虛拟軟體:VirtualBox-6.1.20-143896-Win.exe  VBoxGuestAdditions_6.1.20.iso 

    (可從官網download.virtualbox.org/virtualbox/下載下傳)

終端軟體:MobaXterm_Portable_v21.1.zip  MobaXterm_Installer_v21.1.zip

    (可從官網mobaxterm.mobatek.net下載下傳MobaXterm Home版本)

docker安裝包:containerd.io_1.4.6-1_amd64.deb  

              docker-ce_20.10.7~3-0~ubuntu-focal_amd64.deb  

              docker-ce-cli_20.10.7~3-0~ubuntu-focal_amd64.deb

       (可從國内鏡像網站mirrors.163.com下載下傳)

docker-compose:docker-compose-Linux-x86_64 (版本1.29.2)

       (從github上下載下傳最新版本1.29.2,位址:https://github.com/docker/compose/releases)

         注意:我用家裡的移動寬帶上網始終打不開github網站,後用手機開熱點,電腦連上手機熱點,輕松下載下傳了下來。

二、建立虛拟機svr00

虛拟機軟體VirtualBox安裝過程此處不較長的描述,直接輕按兩下安裝檔案,一路預設設定即可。如過遇到問題,可自行百度解決。

1 建立虛拟電腦

在VirtualBox界面工具欄上,點選【建立】圖示,在彈出視窗【建立虛拟電腦】中設定如下圖2.1-1,點選【建立】,彈出視窗【建立虛拟硬碟】,設定如下圖2.1-2,點選【建立】,即可完成虛拟電腦的建立。

swarm叢集實踐(一):搭建環境一、準備所需軟體二、建立虛拟機svr00三、複制虛拟電腦svr00為svr01四、複制虛拟電腦svr00為svr02五、複制虛拟電腦svr00為svr03六、總結

圖2.1-1 建立虛拟電腦設定

swarm叢集實踐(一):搭建環境一、準備所需軟體二、建立虛拟機svr00三、複制虛拟電腦svr00為svr01四、複制虛拟電腦svr00為svr02五、複制虛拟電腦svr00為svr03六、總結

圖2.1-2 建立虛拟硬碟設定

swarm叢集實踐(一):搭建環境一、準備所需軟體二、建立虛拟機svr00三、複制虛拟電腦svr00為svr01四、複制虛拟電腦svr00為svr02五、複制虛拟電腦svr00為svr03六、總結

圖2.1-3 建立虛拟硬碟成功後的參數界面

2 配置虛拟電腦

1)設定CPU數量

【系統】【處理器】【處理器數量】設定為2

swarm叢集實踐(一):搭建環境一、準備所需軟體二、建立虛拟機svr00三、複制虛拟電腦svr00為svr01四、複制虛拟電腦svr00為svr02五、複制虛拟電腦svr00為svr03六、總結

圖2.2.1 配置虛拟電腦的CPU數量

2)設定虛拟CD光牒ubuntu-20.04.2-live-server-amd64.iso

【存儲】【存儲媒體】【控制器:SATA】右側圖示【添加虛拟光驅】,

在彈出的【虛拟CD光牒選擇】視窗中,點選【注冊】圖示,指定ubuntu-20.04.2-live-server-amd64.iso檔案,如圖2.2.2-3 所示,點選【打開】,注冊成功,如圖2.2.2-4所示。

選中清單中的ubuntu-20.04.2-live-server-amd64.iso,點選【選擇】,成功後如圖2.2.2-5所示。

點選【OK】

swarm叢集實踐(一):搭建環境一、準備所需軟體二、建立虛拟機svr00三、複制虛拟電腦svr00為svr01四、複制虛拟電腦svr00為svr02五、複制虛拟電腦svr00為svr03六、總結

圖2.2.2-1 存儲設定界面

swarm叢集實踐(一):搭建環境一、準備所需軟體二、建立虛拟機svr00三、複制虛拟電腦svr00為svr01四、複制虛拟電腦svr00為svr02五、複制虛拟電腦svr00為svr03六、總結

圖2.2.2-2 虛拟CD光牒選擇界面

swarm叢集實踐(一):搭建環境一、準備所需軟體二、建立虛拟機svr00三、複制虛拟電腦svr00為svr01四、複制虛拟電腦svr00為svr02五、複制虛拟電腦svr00為svr03六、總結

圖2.2.2-3 虛拟CD光牒檔案注冊界面

swarm叢集實踐(一):搭建環境一、準備所需軟體二、建立虛拟機svr00三、複制虛拟電腦svr00為svr01四、複制虛拟電腦svr00為svr02五、複制虛拟電腦svr00為svr03六、總結

圖2.2.2-4 虛拟CD光牒檔案注冊成功界面

swarm叢集實踐(一):搭建環境一、準備所需軟體二、建立虛拟機svr00三、複制虛拟電腦svr00為svr01四、複制虛拟電腦svr00為svr02五、複制虛拟電腦svr00為svr03六、總結

圖2.2.2-5 虛拟CD光牒檔案設定成功界面

注意:記得将【存儲媒體】中的【控制器:IDE】删除掉。不然,在後面安裝VirtualBox附件時,需要執行“sudo mount /dev/sr1 /mnt”,因為,/dev/cdrom指向的是/dev/sr0,而此時,sr0為【控制器:IDE】裝置,這個裝置裡沒有CD光牒檔案。

3)設定橋接網絡

【網絡】【網卡1】【連接配接方式】選擇:橋接網卡,如圖2.2.3-1所示。

點選【OK】

swarm叢集實踐(一):搭建環境一、準備所需軟體二、建立虛拟機svr00三、複制虛拟電腦svr00為svr01四、複制虛拟電腦svr00為svr02五、複制虛拟電腦svr00為svr03六、總結

圖2.2.3-1 網絡設定界面

4)設定共享檔案夾

【共享檔案夾】清單右側【添加共享檔案夾】圖示,在彈出的視窗中,指定共享檔案夾路徑,如圖2.2.4-1所示。點選【OK】,成功後如圖2.2.4-2所示。

點選【OK】

swarm叢集實踐(一):搭建環境一、準備所需軟體二、建立虛拟機svr00三、複制虛拟電腦svr00為svr01四、複制虛拟電腦svr00為svr02五、複制虛拟電腦svr00為svr03六、總結

圖2.2.4-1 添加共享檔案夾界面

swarm叢集實踐(一):搭建環境一、準備所需軟體二、建立虛拟機svr00三、複制虛拟電腦svr00為svr01四、複制虛拟電腦svr00為svr02五、複制虛拟電腦svr00為svr03六、總結

圖2.2.4-2 共享檔案夾設定界面

3 安裝作業系統

設定完成後,即可啟動虛拟電腦,進行作業系統安裝。 

點選工具欄中【啟動】圖示,啟動虛拟電腦,并加載虛拟CD光牒ubuntu-20.04.2-live-server-amd64.iso

Ubuntu伺服器作業系統的安裝過程,此處不做詳述,有問題可自行百度查找解決方法。

swarm叢集實踐(一):搭建環境一、準備所需軟體二、建立虛拟機svr00三、複制虛拟電腦svr00為svr01四、複制虛拟電腦svr00為svr02五、複制虛拟電腦svr00為svr03六、總結

圖2.3-1 設定完成後的參數界面

swarm叢集實踐(一):搭建環境一、準備所需軟體二、建立虛拟機svr00三、複制虛拟電腦svr00為svr01四、複制虛拟電腦svr00為svr02五、複制虛拟電腦svr00為svr03六、總結

圖2.3-2 系統安裝完成後的啟動界面

4 安裝VirtualBox附件VBoxGuestAdditions_6.1.20.iso

1)添加虛拟CD光牒檔案VBoxGuestAdditions_6.1.20.iso

先要關閉虛拟電腦ub2004-svr00。

跟添加虛拟CD光牒ubuntu-20.04.2-live-server-amd64.iso一樣,在【存儲】設定界面裡,将VBoxGuestAdditions_6.1.20.iso添加進去,成功後,如圖2.4.1-1所示。

點選【OK】

swarm叢集實踐(一):搭建環境一、準備所需軟體二、建立虛拟機svr00三、複制虛拟電腦svr00為svr01四、複制虛拟電腦svr00為svr02五、複制虛拟電腦svr00為svr03六、總結

圖2.4.1-1 設定虛拟CD光牒檔案成功界面

2)在系統Ubuntu中執行安裝指令

啟動虛拟電腦ub2004-svr00。

挂載光驅裝置到/mnt路徑上。

$ sudo mount /dev/cdrom /mnt

$ ls /mnt

如果裡面沒有檔案,可嘗試執行“sudo mount /dev/sr1 /mnt”指令。

加載成功時,其檔案如圖2.4.2-1所示:

swarm叢集實踐(一):搭建環境一、準備所需軟體二、建立虛拟機svr00三、複制虛拟電腦svr00為svr01四、複制虛拟電腦svr00為svr02五、複制虛拟電腦svr00為svr03六、總結

圖2.4.2-1 VirtualBox附件CD光牒加載成功後的檔案

執行安裝指令VBoxLinuxAdditions.run

$ sudo ./VBoxLinuxAdditions.run

Verifying archive integrity... All good.

Uncompressing VirtualBox 6.1.20 Guest Additions for Linux........

VirtualBox Guest Additions installer

Copying additional installer modules ...

Installing additional modules ...

VirtualBox Guest Additions: Starting.

VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel

modules.  This may take a while.

VirtualBox Guest Additions: To build modules for other installed kernels, run

VirtualBox Guest Additions:   /sbin/rcvboxadd quicksetup <version>

VirtualBox Guest Additions: or

VirtualBox Guest Additions:   /sbin/rcvboxadd quicksetup all

VirtualBox Guest Additions: Building the modules for kernel 5.4.0-74-generic.

This system is currently not set up to build kernel modules.

Please install the gcc make perl packages from your distribution.

VirtualBox Guest Additions: Running kernel modules will not be replaced until

the system is restarted

提示:缺少gcc make perl軟體包!

安裝gcc make perl軟體包

$ sudo apt-get update

$ sudo apt-get install make gcc perl

安裝成功後重新執行VBoxLinuxAdditions.run:

$ sudo ./VBoxLinuxAdditions.run

Verifying archive integrity... All good.

Uncompressing VirtualBox 6.1.20 Guest Additions for Linux........

VirtualBox Guest Additions installer

Removing installed version 6.1.20 of VirtualBox Guest Additions...

Copying additional installer modules ...

Installing additional modules ...

VirtualBox Guest Additions: Starting.

VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel

modules.  This may take a while.

VirtualBox Guest Additions: To build modules for other installed kernels, run

VirtualBox Guest Additions:   /sbin/rcvboxadd quicksetup <version>

VirtualBox Guest Additions: or

VirtualBox Guest Additions:   /sbin/rcvboxadd quicksetup all

VirtualBox Guest Additions: Building the modules for kernel 5.4.0-74-generic.

update-initramfs: Generating /boot/initrd.img-5.4.0-74-generic

VirtualBox Guest Additions: Running kernel modules will not be replaced until

the system is restarted

VirtualBox附件安裝成功,重新開機虛拟電腦ub2004-svr00:

$ sudo reboot

啟動成功後,登入虛拟電腦ub2004-svr00,檢視共享檔案夾是否自動挂載好:

$ mount

vmshare2021 on /media/sf_vmshare2021 type vboxsf (rw,nodev,relatime,iocharset=utf8,uid=0,gid=998,dmode=0770,fmode=0770,tag=VBoxAutomounter)

$ ls -l /media/sf_vmshare2021

total 4

drwxrwx--- 1 root vboxsf 4096 Jun 14 00:26 docker20210613-ub20.04

注意:此處需要将使用者添加進vboxsf組!

在virtualbox中設定共享檔案夾後,共享檔案夾的所有者是root,所屬的組是vboxsf。使用者登入是沒有權限通路該檔案夾的。是以,需要将使用者添加進vboxsf組中,以獲得通路權限。

指令格式:sudo usermod -aG vboxsf <username>

$ cat /etc/group

hexx:x:1000:

vboxsf:x:998:

$ sudo usermod -aG vboxsf hexx

$ cat /etc/group

hexx:x:1000:

vboxsf:x:998:hexx

重新開機一下即可生效。

5 安裝docker和docker-compose

$ cd /media/sf_vmshare2021/docker20210613-ub20.04/

[email protected]:/media/sf_vmshare2021/docker20210613-ub20.04$ ls

compose-1.29.2

containerd.io_1.4.6-1_amd64.deb

docker-ce_20.10.7_3-0_ubuntu-focal_amd64.deb

docker-ce-cli_20.10.7_3-0_ubuntu-focal_amd64.deb

docker-ce-rootless-extras_20.10.7_3-0_ubuntu-focal_amd64.deb

docker-compose-Linux-x86_64-v1.29.2

docker-scan-plugin_0.8.0_ubuntu-focal_amd64.deb

$ sudo dpkg -i containerd.io_1.4.6-1_amd64.deb  docker-ce_20.10.7_3-0_ubuntu-focal_amd64.deb docker-ce-cli_20.10.7_3-0_ubuntu-focal_amd64.deb

Selecting previously unselected package containerd.io.

(Reading database ... 75625 files and directories currently installed.)

Preparing to unpack containerd.io_1.4.6-1_amd64.deb ...

Unpacking containerd.io (1.4.6-1) ...

Selecting previously unselected package docker-ce.

Preparing to unpack docker-ce_20.10.7_3-0_ubuntu-focal_amd64.deb ...

Unpacking docker-ce (5:20.10.7~3-0~ubuntu-focal) ...

Selecting previously unselected package docker-ce-cli.

Preparing to unpack docker-ce-cli_20.10.7_3-0_ubuntu-focal_amd64.deb ...

Unpacking docker-ce-cli (5:20.10.7~3-0~ubuntu-focal) ...

Setting up containerd.io (1.4.6-1) ...

Created symlink /etc/systemd/system/multi-user.target.wants/containerd.service → /lib/systemd/system/containerd.service.

Setting up docker-ce-cli (5:20.10.7~3-0~ubuntu-focal) ...

Setting up docker-ce (5:20.10.7~3-0~ubuntu-focal) ...

Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service.

Created symlink /etc/systemd/system/sockets.target.wants/docker.socket → /lib/systemd/system/docker.socket.

Processing triggers for man-db (2.9.1-1) ...

Processing triggers for systemd (245.4-4ubuntu3.4) ...

$ sudo docker version

Client: Docker Engine - Community

 Version:           20.10.7

 API version:       1.41

 Go version:        go1.13.15

 Git commit:        f0df350

 Built:             Wed Jun  2 11:56:38 2021

 OS/Arch:           linux/amd64

 Context:           default

 Experimental:      true

Server: Docker Engine - Community

 Engine:

  Version:          20.10.7

  API version:      1.41 (minimum version 1.12)

  Go version:       go1.13.15

  Git commit:       b0f5bc3

  Built:            Wed Jun  2 11:54:50 2021

  OS/Arch:          linux/amd64

  Experimental:     false

 containerd:

  Version:          1.4.6

  GitCommit:        d71fcd7d8303cbf684402823e425e9dd2e99285d

 runc:

  Version:          1.0.0-rc95

  GitCommit:        b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7

 docker-init:

  Version:          0.19.0

  GitCommit:        de40ad0

$ sudo cp docker-compose-Linux-x86_64-v1.29.2 /usr/bin/docker-compose

$ ll `which docker-compose`

-rwxr-xr-x 1 root root 12737304 Jun 14 00:32 /usr/bin/docker-compose*

$ sudo docker-compose version

docker-compose version 1.29.2, build 5becea4c

docker-py version: 5.0.0

CPython version: 3.7.10

OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019

6 設定IP位址

$ sudo vim /etc/netplan/00-installer-config.yaml

network:

   ethernets:

      enp0s3:

          #dhcp4: true

          dhcp4: no

          dhcp6: no

          addresses: [192.168.1.200/24]

          gateway4: 192.168.1.1

   version: 2

$ sudo netplan apply

三、複制虛拟電腦svr00為svr01

關閉虛拟電腦ub2004-svr00

1、複制虛拟電腦檔案夾

1)将ub2004-svr00檔案夾複制成ub2004-svr01檔案夾

2)将ub2004-svr01檔案夾中的

ub2004-svr00.vmdk  改名為 ub2004-svr01.vmdk

ub2004-svr00.vbox 改名為 ub2004-svr01.vbox

2、更改ub2004-svr01.vmdk的UUID

1)使用VBoxManage.exe internalcommands sethduuid重新設定vmdk的UUID

PS C:\Program Files\Oracle\VirtualBox> .\VBoxManage.exe internalcommands sethduuid D:\vm2021\ub2004-svr02\ub2004-svr01.vmdk

UUID changed to: 94e78577-c743-4186-aad2-499c23bbda73

2)修改ub2004-svr01.vbox檔案中跟vmdk有關的uuid和location

    <MediaRegistry>

      <HardDisks>

        <HardDisk uuid="{94e78577-c743-4186-aad2-499c23bbda73}" location="ub2004-svr01.vmdk" format="VMDK" type="Normal"/>

      </HardDisks>

    </MediaRegistry>

        <StorageController name="SATA" type="AHCI" PortCount="3" useHostIOCache="false" Bootable="true" IDE0MasterEmulationPort="0" IDE0SlaveEmulationPort="1" IDE1MasterEmulationPort="2" IDE1SlaveEmulationPort="3">

          <AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0">

            <Image uuid="{94e78577-c743-4186-aad2-499c23bbda73}"/>

          </AttachedDevice>

        </StorageController>

      <SharedFolders>

        <SharedFolder name="vmshare2021" hostPath="D:\vm2021\vmshare2021" writable="true" autoMount="true"/>

      </SharedFolders>

3、更改虛拟機的UUID

1)建立一個虛拟機temp,獲得其vbox檔案中的Machine标簽中的uuid

使用vbox建立一個虛拟電腦,名稱任意,【類型】為Linux,【版本】為Ubuntu (64-bit),【虛拟硬碟】選不添加虛拟硬碟,建立即可。

然後打開其vbox檔案,将其Machine标簽中的uuid值拷貝出來用于更改拷貝虛拟機的vbox檔案中Machine标簽的uuid。

然後删除建立的虛拟電腦。

2)修改ub2004-svr01.vbox檔案中Machine标簽的uuid

<Machine uuid="{e728022c-c7e0-43f2-97e8-34cb70788087}" name="ub2004-svr01" OSType="Ubuntu_64" snapshotFolder="Snapshots" lastStateChange="2021-06-13T16:07:51Z">

注意:将【name】修改為ub2004-svr01

4、輕按兩下ub2004-svr01.vbox檔案,即可在VirtualBox6中打開。

5、啟動成功!

6、修改系統IP

$ sudo vim /etc/netplan/00-installer-config.yaml

network:

  ethernets:

    enp0s3:

      #dhcp4: true

      dhcp4: no

      dhcp6: no

      addresses: [192.168.1.201/24]

      gateway4: 192.168.1.1

  version: 2

$ sudo netplan apply

7、修改系統主機名

1)編輯/etc/cloud/cloud.cfg

$ sudo vim /etc/cloud/cloud.cfg

# This will cause the set+update hostname module to not operate (if true)

#preserve_hostname: false

preserve_hostname: true

2)編輯/etc/hosts

$ sudo vim /etc/hosts

127.0.1.1 svr01

3)設定主機名

$ sudo hostnamectl set-hostname svr01

4)重新虛拟電腦,使之生效

$ sudo reboot

四、複制虛拟電腦svr00為svr02

重複第三章中的步驟,複制出虛拟電腦ub2004-svr02,并将其IP設定為192.168.1.202,主機名設定為svr02.

五、複制虛拟電腦svr00為svr03

重複第三章中的步驟,複制出虛拟電腦ub2004-svr03,并将其IP設定為192.168.1.203,主機名設定為svr03.

六、總結

swarm叢集實踐(一):搭建環境一、準備所需軟體二、建立虛拟機svr00三、複制虛拟電腦svr00為svr01四、複制虛拟電腦svr00為svr02五、複制虛拟電腦svr00為svr03六、總結

圖6-1 建立的虛拟電腦的檔案目錄

swarm叢集實踐(一):搭建環境一、準備所需軟體二、建立虛拟機svr00三、複制虛拟電腦svr00為svr01四、複制虛拟電腦svr00為svr02五、複制虛拟電腦svr00為svr03六、總結

圖6-2 建立的虛拟電腦在VirtualBox中的界面