Nano快速入门手册

Nano是基于CentOS/KVM构建计算资源池并提供云主机实例管理服务的新一代IaaS(架构即服务)软件平台。

用户可以通过在普通x86服务器上安装Nano模块,将服务器集群转换为私有云平台,并且提供云主机服务。

Nano基于Go语言开发,目标是在极低的资源占用下提供强大而稳定的服务,同时避免Openstack等传统云平台需要大量外部组件依赖,维护复杂并且稳定性差的问题。所有模块均编译为独立运行的二进制包,模块升级时直接替换即可,无需考虑复杂的外部依赖,极大降低了维护难度和工作量。

Nano追求尽最大可能采用智能化和自动化手段替代繁琐易出错的手工操作,彻底解放运维人员,同时提高集群的资源利用率、可用性和可靠性,大幅度减少故障时间。

本手册将快速而简要的介绍Nano平台从安装部署到日常管理的主要流程和常见功能,其他更详细内容请访问 产品Wiki 了解

本手册内容对应Nano v0.3.1版本

欢迎访问官方网站 https://nanos.cloud/ 了解更多内容

章节

概念简介

Nano平台目前包含三个模块:Core/Cell/FrontEnd

Cell负责云主机的创建与管理;Core将多个Cell组成资源池,根据需求在池内调度和分配云主机;FrontEnd调用Core的API接口为用户提供HTML5的管理门户。

所有模块可以安装在一个服务器上,作为All In One平台进行体验和测试,但是对生产环境部署时,为了保障平台可用性,建议每个模块都部署在独立服务器上,如下图所示:

_images/1_1_nano_modules.png

Nano平台的网络通讯分为外部和内部两部分,外部通讯目前主要是Web管理端和Core API端口,用于用户访问和应用调用;默认端口Web为TCP 5850,API为TCP 5870,用户可以根据自己环境进行调整。

内部通讯主要是模块间的UDP协议和数据传输用HTTPS协议,协议端口都是平台自行动态分配和管理,通常情况下,管理员无需配置。

_images/1_2_communicate_overview.png

通讯域

Nano集群的模块可以相互发现,自动完成组网和识别,无需管理员配置。

Nano的自动发现基于组播协议实现,Nano通过 <通讯域名称:组播地址:组播端口> 的三元组定义一个独立的通讯域(默认为<”Nano”:224.0.0.226:5599>),同一通讯域内模块可以相互发现、识别和通讯。

如果需要在一个局域网内配置多个Nano集群,可以通过分配不同的通讯域地址来进行区分,有效的组播地址为224.0.0.0~224.0.0.255,具体请参考 Multicast address

工作原理如图:

_images/1_3_domain_discovery.png

Core作为接听模块,应该最先启动。 如果Core停止服务或者重启,已经启动的模块会自动尝试找回Core服务并重新加入通讯组。

资源模型

一个Nano本地集群构成一个可用域(Zone),一个域包含多个资源池(Pool),每个资源池包含一个或者多个Cell资源节点。

一个Cell只能属于一个Pool,当用户请求创建或者迁移云主机时,Core根据指定资源池内各Cell的实时负载,选择一个合适的Cell进行云主机实例创建。

_images/1_4_resource_model.png

Nano平台搭建完成后,会有一个空的Default资源池,在尝试创建云主机之前,请记得 首先往资源池中添加一个可用的Cell节点

镜像

为了便于云主机部署和维护,Nano提供了两种镜像:磁盘镜像和光盘镜像。

磁盘镜像保存云主机的系统盘数据,用户可以通过磁盘镜像快速复制新的云主机实例,直接获得与模板云主机相同的操作系统和预装软件,大幅度提高批量部署示例的效率。

光盘镜像保存了ISO格式的光盘数据,用于加载到云主机中安装操作系统或者其他系统软件,通常用于定制模板云主机。

你可以直接将准备好的镜像上传到平台中并开始使用,节省制作模板的时间。可以访问Nano官方网站 下载 页面,获取预置的CentOS 7镜像。

_images/1_5_images_overview.png

了解了Nano的基本概念,就可以开始进行平台的部署与安装了

系统部署

Nano平台提供了Installer安装程序用于自动化部署,最新版本Installer可以通过 官网下载 或者 Github发布页面 获取。

Installer会自行选择最合适的配置进行建议, 对于初次安装Nano的新用户,安装过程中尽量不要调整任何参数 ,如需调整参数、修改配置或者直接升级二进制文件,请在熟悉产品后参考 产品Wiki 进行操作。

服务器要求:

  • 支持虚拟化的X86服务器或者打开嵌套虚拟化(Intel VT-x/AMD-v)的虚拟机
  • 2核4G内存50GB磁盘和一个网络设备
  • CentOS 7.5(1804) Minimal
  • 操作系统安装完成并且网络就绪
  • 如有raid/lvm请先完成配置,再进行Nano安装

建议使用刚装完CentOS7.5的纯净系统开始安装,避免残留设置或者依赖版本有问题影响顺利部署。

模块安装

安装Nano平台,只需要解压并执行Installer即可。只需要选择需要在当前服务器部署的模块,Installer会自动完成参数配置、依赖安装和模块部署。

以v0.3.1为例,在shell执行以下指令:

$wget https://nanos.cloud/media/nano_installer_0.3.1.tar.gz
$tar zxfv nano_installer_0.3.1.tar.gz
$cd nano_installer
$./installer

Installer启动后首先要求输入要安装的模块,可以输入”0,1,2”+回车,在一个服务器安装所有模块,也可以输入”2”+回车只安装Cell。

Installer默认把模块安装在/opt/nano目录下,默认的通讯域标识为<”nano”:224.0.0.226:5599>,对于初次安装或者网络内仅有一套Nano平台的用户,不建议调整参数,以免错误参数影响平台工作。

如果选择安装Cell模块,Installer会要求用户输入”yes”确认构建默认的桥接网络br0; 如果已经有其他程序设置的br0,建议先手工删除,再安装Cell,否则可能会导致云主机网络连接不正常 。如果是以往Nano安装生成的br0则无影响,可以跳过。

Installer在安装过程中,会选择模块启动监听服务的网卡和地址,如果仅有一张网卡,Installer会自动选择并进行配置;如果存在多个网卡,Installer会列出设备清单要求用户选择Nano集群需要工作的网段。

假如服务器有两个网卡,eth0地址为192.168.1.56/24,eth1地址为172.16.8.55/24,如果希望Nano集群工作在172.16.8.0/24网段,则选择eth1即可。

请注意:Installer会首先使用自带RPM包安装依赖库,如果出现版本冲突,则尝试使用yum从网络获取更新版本;如果系统已经预装了会导致冲突的版本,请确保网络可用,以便顺利安装。

模块启动

所有Nano平台模块都使用命令行控制,调用方式:”<模块名称> [start|stop|status|halt]”,支持的指令含义如下:

  • start: 启动模块,故障打印错误信息,成功则输出版本及必要信息
  • stop: 优雅停止模块,自动释放相关资源并通知相关模块
  • status: 检查模块是否在运行中
  • halt: 强制终止模块运行

模块安装完成后,需要启动模块以提供服务,模块默认安装在/opt/nano目录下。使用命令手动启动所有模块(假定所有模块安装在同一台服务器), 请注意,必须首先启动Core

$cd /opt/nano/core
$./core start
$cd ../cell
$./cell start
$ cd ../frontend
$./frontend start

FrontEnd模块成功启动后,Console会输出一个形如”192.168.6.3:5870”的监听地址,使用Chrome或者Firefox访问这个地址就可以开始通过Web门户管理Nano平台了。

平台准备

添加资源节点

Nano平台初次启动时,会默认创建一个名为Default的计算资源池,但是该资源池没有可用资源。你需要先将一个Cell节点添加到该资源池,以便有足够资源分配云主机。

在Web门户上,选择”Compute Pool”菜单,点击default资源池的”cells”按钮,进入资源节点清单:

_images/2_1_compute_pool.png

当前没有任何资源节点,点击”Add Cell”按钮,进入添加页面

_images/2_2_add_cell.png

在下拉菜单中,选择目前平台中已经发现并且尚未加入资源池的Cell节点,完成添加

_images/2_3_choose_cell.png

添加完成回到资源节点清单,可以看到新Cell已经加入资源池,并且处于可用状态。

_images/2_4_cell_online.png

此时,就可以在”Compute Pool”或者”Instances”菜单创建新主机实例了。

上传镜像

空白云主机并不能满足我们的日常使用要求,我们还需要安装操作系统和应用软件,Nano提供了多种手段能够快速部署可用云主机。

磁盘镜像

磁盘镜像保存了模板云主机系统磁盘的数据,用户可以选择从预置的磁盘镜像克隆,新建云主机能够获得与模板云主机完全一致的系统和预装软件,有效减少系统重复安装部署的时间。

磁盘镜像中还可以通过预装Cloud-Init模块,配合Nano的CI服务,自动完成管理员密码初始化、系统磁盘扩容和自动数据盘格式化及挂载等配置任务。

Nano官网 下载 页面已经提供了CentOS 7.5 Minimal预置镜像(其中一个预装了Cloud Init)。

下载镜像,选择Web门户的”Images”=>”UPLOAD”上传到平台,后续创建云主机时就可以选择从镜像克隆了。

_images/2_5_upload_image.png
光盘镜像

光盘镜像保存了ISO格式的光盘数据,可以加载到云主机中安装操作系统或者其他系统软件,通常用于定制模板云主机,详见云主机管理和平台管理章节。


系统部署完成后,就可以开始进行云主机和平台的管理了。

云主机管理

请注意:目前Nano版本对于云主机仅提供直连模式的网络连接,即云主机通过物理服务器的桥接网络直接连入物理网络,默认使用DHCP从物理网络获取IP地址,与传统物理服务器的网络管理方式一致,尽量减少管理员维护网络的难度和工作量。

创建云主机

Nano中云主机是基于资源池创建的,Core收到创建云主机请求时,首先检测池内是否有可用Cell,然后评估各Cell可用资源和实时负载,选择加权负载最低的Cell创建实例。

在Nano中创建云主机时,有以下参数需要设置:

  • 主机名:用于标识云主机,仅允许数字字母和’-‘。
  • 资源池:承载该实例的资源池名称,Nano会在指定资源池中选择合适的Cell节点进行创建
  • 核心数:为云主机分配的核心数量,不建议设置超过Cell的最大物理线程数
  • 内存:为云主机分配的内存大小,不能超过Cell的最大物理内存
  • 系统磁盘:选择云主机系统磁盘的数据源,详情见后
  • 数据磁盘:选择是否为云主机挂载额外的数据盘
  • 开机启动:启用后,当Cell服务器开机时,会自动启动云主机实例
_images/3_1_create_instance.png

有三种系统盘数据源可选:空白系统、预制镜像和带Cloud-Init组件的预制镜像,Nano官网提供CentOS 7.5 Minimal的两种预制镜像 下载

空白系统

空白系统是默认选项。顾名思义,空白系统意味着创建出的云主机没有安装任何操作系统和软件,需要通过加载光盘镜像安装操作系统。空白系统通常用于构建模板云主机,详情请看平台管理的《构建模板镜像》章节。

_images/3_2_blank_system.png
预制镜像

预制镜像的系统磁盘已经预装了操作系统和系统软件,并可能进行了一些配置优化和调整,预制镜像可以通过模板云主机构建,也可以从其他平台下载后直接上传系统。

创建云主机时,在系统镜像菜单中选择想要的预制镜像,克隆完成后的新主机拥有跟源镜像相同的系统和软件,能够开机直接使用。

_images/3_3_prebuilt_image.png
带Cloud-Init组件的预制镜像

带Clout Init组件的预制镜像系统中,在普通预制镜像的基础上,额外安装了clout-init和cloud-utils组件(CentOS中可以使用yum指令安装),配合Nano提供的Cloud Init服务,可以实现初始化管理员账号、自动格式化并挂载数据盘和扩展系统盘容量等多种便利的管理功能,极大地方便管理员快速部署云主机实例。

带Clout Init组件的预制镜像同样可以通过模板云主机构建或者直接,使用时,除了选择源镜像,还需要勾选Cloud-Init模块并设置好初始化参数,以便Nano提供相应的服务。

_images/3_4_ci_image.png

请注意,只有镜像中预装了CI组件,并且创建时指定了CI服务的实例才会自动格式化并挂载数据盘同时扩容系统盘;否则需要手工在实例中进行处理。

实例起停和监控

用户可以通过主机监控、清单页面的控制栏按键管理实例的生命周期,新建云主机实例默认处于停止状态,可以使用以下功能启动云主机:

_images/3_5_stopped_buttons.png
  • Start: 启动云主机,进入运行状态
  • Start with Media: 从菜单中选择光盘镜像作为启动媒体,通常用于开机引导进入操作系统安装界面或者使用LiveCD恢复系统时使用

云主机进入运行状态后,控制栏会展示以下按键

_images/3_6_running_buttons.png

从左至右依次为:

  • Control:打开VNC远程监控页面,直接控制云主机
  • Stop: 模拟按下电源按键,正常关闭磁盘然后关机,数据不受影响(CentOS云主机中需要安装acpid服务)
  • Force Stop: 强制关机,类似直接断电,可能会导致数据不一致甚至磁盘毁损
  • Reboot: 模拟按下重启按键,优雅重启,通常不影响数据(CentOS云主机中需要安装acpid服务)
  • Force Reboot: 强制重启,类似于reset按键,可能会导致数据不一致甚至磁盘毁损

在远程监控页面,用户可以像管理本地服务器一样直接在云主机上进行操作,该功能不依赖云主机内部系统,所以即使云主机没有网络或者系统无法启动,也能通过该页面进行排查和修复。

_images/3_7_control_instance.png

监控页面也提供了以下辅助功能,从左至右依次为:

_images/3_8_control_buttons.png
  • 发送Ctrl+Alt+Del: 用于Windows等操作系统登录和重启
  • 插入光盘镜像:将指定光盘镜像加载到云主机的光驱中,用于安装额外软件和系统
  • 弹出光盘镜像:将光盘镜像弹出云主机光驱
  • 关机:模拟按下电源按键,正常关闭磁盘然后关机,数据不受影响(CentOS云主机中需要安装acpid服务)
  • 重启:模拟按下重启按键,优雅重启,通常不影响数据(CentOS云主机中需要安装acpid服务)
  • 强制重启:类似于reset按键,可能会导致数据不一致甚至磁盘毁损
除了内置的HTML5监控页面,用户也可以通过主机详情页面查询VNC访问地址和密码,使用第三方vnc软件连接和管理云主机。

主机详情及配置修改

在云主机实例清单的控制栏中,用户可以点击

_images/3_9_monitor_button.png

进入实例运行仪表盘,了解实时的资源用量和相关状态信息:

_images/3_10_monitor_instance.png

当默认创建时的资源选项不满足需要,或者需要重新调整实例资源配置的时候,可以点击

_images/3_11_detail_button.png

进入实例详情页面:

_images/3_12_instance_detail.png

详情页面提供了以下功能:

  • 修改核心数、内存等资源配置用量
  • 扩展或者压缩磁盘容量(压缩磁盘容量仅减少镜像文件物理空间占用,不减少逻辑容量,根据磁盘大小,该功能可能用时较长,如果出现超时告警,不影响功能使用)
  • 修改管理员密码(需要云主机安装qemu-guest-agent)
  • 查看VNC监控地址和连接密码

目前修改管理员密码功能只能在线调整,其他功能需要先将云主机停机后再操作。

快照及恢复

快照可以保存云主机的历史状态,并且在需要时恢复回去,可以有效避免误操作或者数据毁损。

当云主机处于停机状态时,点击图标

_images/3_13_snapshot_button.png

进入快照管理界面

_images/3_14_snapshots.png

你可以输入快照名称和描述,将当前云主机数据保存到新的快照中

_images/3_15_create_snapshot.png

也可以选择把系统状态恢复到特定快照或者删除某个快照

_images/3_16_restore_snapshot.png

图标

_images/3_17_active_snapshot.png

标识当前活动的快照,活动快照或者还被依赖的快照无法删除

光盘镜像加载

管理员可以将光盘镜像加载到运行中的实例中,以便安装软件或者操作系统。

在运行状态的云主机实例操作栏中,点击插入镜像

_images/3_18_insert_button.png

在弹出菜单中选择需要插入的光盘镜像即可,插入实时生效,跟使用笔记本一样方便快捷。

_images/3_19_insert_media.png

插入成功后,云主机实例的状态栏会显示已插入媒体的状态图标:

_images/3_20_media_icon.png

此时,点击弹出镜像功能即可将光盘镜像从实例中卸载

_images/3_21_eject_media.png

平台管理

Nano提供了一系列便捷的管理功能,用于简化管理员的日常运维工作。

仪表盘

Nano门户首页提供了整个平台级别的资源用量仪表盘,包含虚拟资源和物理资源的用量,便于随时了解系统负载情况,及时对资源进行扩充或者调整。

_images/4_dashboard.png

管理员可以点击仪表盘,下钻查看资源池、Cell节点或者云主机实例的实时用量

_images/4_instances.png

增加资源节点

当系统负载较大时,可以通过添加新的资源节点,来扩充池内可用资源。

首先需要在新的服务器上部署并启动Cell模块,然后在资源池的节点清单中,选择”Add Cell”

_images/4_add_cell.png

在下来菜单中选择新装的Cell节点进行添加

_images/4_select_cell.png

当资源池中Cell节点状态变为Online时,就可以承载新建的云主机实例了。

_images/4_new_cell_status.png

构建模板镜像

Nano可以将任意云主机的系统磁盘制作成磁盘镜像,然后从镜像快速克隆出与原模板主机系统、软件一样的新实例,以便大幅度提升管理员部署实例的效率。

_images/4_image_transport.png

要构建模板镜像,首先应该创建一个不含数据磁盘的空白云主机,然后通过加载系统光盘和网络方式安装好系统和软件。

以CentOS7为例,构建模板主机时,建议进行如下设置:

  • 设置模板主机名和默认用户密码
  • 默认启用网络并设置为DHCP获取地址
  • 安装acpid服务支持关机和重启操作
  • 安装qemu-guest-agent以支持实时密码修改、内存用量监控等功能
  • 使用yum更新软件版本
  • 如果需要使用Nano的Cloud Init服务对实例进行自动初始化设置,则需要安装cloud-init/cloud-utils组件

上述设置完成后,关闭云主机,通过”Images” => “BUILD”,进入镜像构建界面,在下拉菜单中选择模板云主机,点击创建

_images/4_build_image.png

当镜像制作完毕后,你就可以在新建云主机时选择从该镜像克隆实例了。

社区支持

Nano采用MIT许可,无论自用或者商业OEM均可使用。

代码库地址: https://github.com/project-nano

官方wiki: https://github.com/project-nano/releases/wiki

官方论坛:nanocloud.boards.net

QQ群: Nano Cloud(819161083)


感谢关注Nano,衷心期待您的加入