搭建简易的私有云

什么是「私有云」?

云服务一般有三种部署方式:

  • 公有云(Public Cloud)

    公有云由云服务提供商控制,对公共互联网开放。用户只需为其使用的资源(包括服务器、存储容量和应用等)付费,而无需担心具体的维护问题。

  • 私有云(Private Cloud)

    私有云是为单独的用户或组织构建的,可在公共互联网或内部网络中部署。用户可根据实际需求进行定制化的部署和管理。

  • 混合云(Hybrid Cloud)

    混合云是以上两种方式的组合,集合了公有云和私有云的优点。

(图片来源:Sam Johnston

私有云的搭建过程

环境:macOS,VirtualBox。

  1. 创建 Linux 虚拟机(以 Ubuntu 为例)

    在 Ubuntu 官网下载 Ubuntu 镜像文件,然后在 VirtualBox 中创建虚拟机(命名为 ubuntu-base,以区别其他虚拟机)。

  2. 配置虚拟机网络

    查阅 VirtualBox 的文档可知,VirtualBox 一共提供了 7 种网络连接方式,其中较常用的几种连接方式如下:

    查看 ubuntu-base 的网络设置,发现已经存在一块连接方式为 NAT 的网卡:

    由上面的表格可知,虚拟机能通过该网卡访问到主机(进而访问到外网),而虚拟机之间不能通过该网卡相互访问。

    接下来,在菜单—>管理->主机网络管理器中创建一块名为 vboxnet0 的虚拟网卡,并将 IPv4 地址设置为 192.168.100.1/24,作为主机的地址。

    在终端中使用 ifconfig 命令就可以找到该网卡:

    此时可以在 ubuntu-base 中启用第二块网卡(接口就是刚才创建的虚拟网卡),并将连接方式设置为仅主机(Host-Only)网络。由上面的表格可知,主机能通过该网卡访问虚拟机,虚拟机之间也可以通过该网卡通讯。

    启动 ubuntu-base,并在终端中输入 nmtui 打开网络管理器。选择「编辑连接」后可看到两个以太网连接:有线连接 1(enp0s3)和有线连接 2(enp0s8),分别对应网卡 1 和网卡 2。

    设置有线连接 2 的 IPv4 地址为 192.168.100.42/24(与主机地址 192.168.100.1/24 在同一网段),作为第二块网卡的地址。

    在主机的终端中输入 ping 192.168.100.42 能够 ping 通,说明主机可以访问虚拟机 ubuntu-base。

    在虚拟机的终端中输入 ping 192.168.100.1 能够 ping 通,说明虚拟机能够访问主机。

    在虚拟机的终端中输入 ping whichxjy.com 能够 ping 通,说明虚拟机能够访问外网。

  3. 通过 ssh 连接虚拟机

    首先检查虚拟机中是否开启了 ssh 服务:在终端中输入 ps -e | grep ssh,如果结果中只有 ssh-agent 则说明 ssh 服务器未开启。此时可通过 /etc/init.d/ssh start 指令开启 ssh 服务器。如果结果显示「没有那个文件或目录」,则说明该虚拟机并未下载 sshd,需要通过 sudo apt-get install openssh-server 下载相应的安装包之后再开启 ssh 服务。如果想要进一步确认,可以输入 service ssh status 指令,如果显示为 active 则说明 ssh 服务器已正常开启。

    确认虚拟机开启 ssh 服务后,在主机终端上输入 ssh 192.168.100.42 -l whichxjy 访问虚拟机,其中 192.168.100.42 是前面设置的第二块网卡的地址。

  4. 复制虚拟机

    在 VirtualBox 中右击 ubuntu-base,选择复制,将新的虚拟机命名为 ubuntu-clone。注意需要选择「为所有网卡重新生成 MAC 地址」,并选择「链接复制」(关于完全复制和链接复制的区别可见文档:Cloning Virtual Machines)。

    启动 ubuntu-clone,发现主机名和 ubuntu-base 一样。为了区分这两个虚拟机,可以通过 sudo vim /etc/hostname 指令打开 /etc/hostname 来修改主机名。

    与此同时,通过 sudo vim /etc/hosts 指令打开 /etc/hosts 来修改 IP 地址与主机名之间的映射。

    这次我们用另一种方式来配置网卡:通过 sudo vim /etc/network/interfaces 指令打开 /etc/network/interfaces 文件并修改第二块网卡的 IP 地址为 192.168.100.43/24

    重启该虚拟机,在终端中输入 ping 192.168.100.1 能够 ping 通,说明虚拟机能够访问主机。

    在该虚拟机的终端中输入 ping whichxjy.com 能够 ping 通,说明该虚拟机能够访问外网。

    在主机的终端中输入 ping 192.168.100.43 能够 ping 通,说明主机可以访问虚拟机 ubuntu-clone。

    在主机终端上输入 ssh 192.168.100.43 -l whichxjy 访问虚拟机。

    主机可通过 ssh 对 ubuntu-clone 进行一系列操作:

参考

Cloud Computing - Wikipedia

What is a private cloud computing? - CloudPro

What is a private cloud? - Microsoft Azure

Public Cloud vs Private Cloud vs Hybrid Cloud - IntelCanada

How to Create a Network of Machines in VirtualBox with SSH Access - Corey Schafer

Updated: