Nano快速入门手册¶
说明¶
本手册将快速而简要的介绍Nano平台从安装部署到日常管理的主要流程和常见功能,其他更详细内容请访问 产品Wiki 了解
本手册内容对应 Nano v0.4.1 版本
欢迎访问官方网站 https://nanos.cloud/ 或者加入官方QQ群 Nano Cloud( 819161083 )了解更多内容
前言¶
Nano是基于CentOS/KVM构建计算资源池并提供云主机实例管理服务的新一代IaaS(架构即服务)软件平台。
Nano基于KVM虚拟机,以虚拟化集群为核心提供资源池管理、镜像克隆、快照备份、故障高可用、多租户VPC等多种私有云管理能力。
Nano独立设计的轻巧架构,配合最新一代虚拟化技术,以自动化智能化为理念,在保持极致简洁、易学易用的基础上,提供强大而稳定的运营级平台产品,为需要搭建私有云的用户提供一种技术更强大,使用更便捷,更加稳定可靠,总体维护成本更低的完整解决方案。
Nano使用MIT许可,无论自用、修改或者商用都无限制,平台全功能均提供REST API调用接口,可以方便地集成到现有产品或者自动化运维脚本。
对于支持Intel VT-d或者AMD-v的普通x86服务器,管理员只需要下载并安装Nano部署包,即可在三分钟内将其转换为私有云平台,并且提供云主机服务。
Nano基于Go语言开发,目标是在极低的资源占用下提供强大而稳定的服务,同时避免Openstack等传统云平台需要大量外部组件依赖,维护复杂并且稳定性差的问题。所有模块均编译为独立运行的二进制包,模块升级时直接替换即可,无需考虑复杂的外部依赖,极大降低了维护难度和工作量。
Nano追求尽最大可能采用智能化和自动化手段替代繁琐易出错的手工操作,彻底解放运维人员,同时提高集群的资源利用率、可用性和可靠性,大幅度减少故障时间。
最新功能一览¶
- 资源池管理 :资源节点增删、云主机调度、实时资源用量监控(CPU/内存/磁盘/网络)、多层级资源下钻(集群/资源池/节点/实例)
- 存储后端支持 :本地磁盘存储、NFS共享存储
- 云主机功能 :
- 生命周期管理:创建、释放、起停
- 配置管理:核心数、内存修改,磁盘扩容、压缩
- 虚拟机操作系统:重置密码、CPU/内存用量监控、磁盘自动格式化/挂载、修改主机名
- 远程管理:内嵌HTML5监控端、第三方VNC连接支持、VNC连接加密
- 批量构建:云主机模板构建、复制、上传、下载
- 数据安全:云主机增量快照创建、还原、管理
- 媒介管理:光盘镜像上传、加载、卸载
- 平台管理 :自动识别组网、连接检测、模块起停、运行状态检测
- 辅助工具 :Installer安装包
- 浏览器支持 :Chrome/Firefox
章节¶
概念简介¶
Nano平台目前包含三个模块:Core/Cell/FrontEnd
Cell负责云主机的创建与管理;Core将多个Cell组成资源池,根据需求在池内调度和分配云主机;FrontEnd调用Core的API接口为用户提供HTML5的管理门户。
所有模块可以安装在一个服务器上,作为All In One平台进行体验和测试,但是对生产环境部署时,为了保障平台可用性,建议每个模块都部署在独立服务器上,如下图所示:

Nano平台的网络通讯分为外部和内部两部分,外部通讯目前主要是Web管理端和Core API端口,用于用户访问和应用调用;默认端口Web为TCP 5850,API为TCP 5870,用户可以根据自己环境进行调整。
内部通讯主要是模块间的UDP协议和数据传输用HTTPS协议,协议端口都是平台自行动态分配和管理,通常情况下,管理员无需配置。

通讯域¶
Nano集群的模块可以相互发现,自动完成组网和识别,无需管理员配置。
Nano的自动发现基于组播协议实现,Nano通过 <通讯域名称:组播地址:组播端口> 的三元组定义一个独立的通讯域(默认为<”Nano”:224.0.0.226:5599>),同一通讯域内模块可以相互发现、识别和通讯。
如果需要在一个局域网内配置多个Nano集群,可以通过分配不同的通讯域地址来进行区分,有效的组播地址为224.0.0.0~224.0.0.255,具体请参考 Multicast address 。
工作原理如图:

Core作为接听模块,应该最先启动。 如果Core停止服务或者重启,已经启动的模块会自动尝试找回Core服务并重新加入通讯组。
资源模型¶
一个Nano本地集群构成一个可用域(Zone),一个域包含多个资源池(Pool),每个资源池包含一个或者多个Cell资源节点。
一个Cell只能属于一个Pool,当用户请求创建或者迁移云主机时,Core根据指定资源池内各Cell的实时负载,选择一个合适的Cell进行云主机实例创建。

Nano平台搭建完成后,会有一个空的Default资源池,在尝试创建云主机之前,请记得 首先往资源池中添加一个可用的Cell节点 。
系统部署¶
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.4.1为例,在shell执行以下指令:
$wget https://nanos.cloud/media/nano_installer_0.4.1.tar.gz
$tar zxfv nano_installer_0.4.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中云主机实例的磁盘数据存储在承载Cell节点的本地存储系统中,无需额外配置,性价比也最高。不过管理员也可以指定将数据存储在独立的NFS文件服务器上,防止Cell节点故障影响云主机服务,也可以更方便地在节点之间迁移实例,重新均衡负载,以提升集群整体性能和使用寿命。
使用共享存储,只需要创建一个存储资源池,然后与计算资源池关联。关联之后,所有添加到该资源池的资源节点,都会由Nano自动配置为使用共享存储,无需用户干预和设置。
一个存储池对应一个共享存储路径,一个存储池可以同时为多个计算池提供后端存储,但是每个计算资源池只能绑定一个存储池。
配置NFS服务器¶
要让Nano正常使用NFS存储后端,首先需要正确配置好NFS服务器。
假定NFS Server地址为192.168.3.138,共享路径为/var/nfs/nano,Nano集群网段为192.168.3.0/24。
以CentOS 7.5为例,在NFS Server端执行以下指令:
开启防火墙端口
$firewall-cmd --zone=public --add-service=nfs --permanent
$firewall-cmd --reload
安装NFS服务并设置为开机启动
$yum install nfs-utils
$systemctl start nfs
$systemctl enable nfs
创建路径
$mkdir -p /var/nfs/nano
由于NFS是将客户端用户直接映射到服务端用户进行权限判断,当管理员使用不同的用户运行Nano模块和KVM服务时,需要设置不同的访问规则。
NFS默认禁止将客户端root映射为服务端root用户,所以配置路径时需要使用no_root_squash选项。
在NFS Server执行
创建规则文件
$vi /etc/exports
将以下规则写入文件
/var/nfs/nano 192.168.3.0/24(rw,sync,no_subtree_check,no_root_squash)
映射共享路径
$exportfs -a
对于普通用户,NFS是根据客户端用户的uid/gid映射到本地相同id用户和组进行权限校验。
假定Cell节点运行Nano和KVM/QEMU的是用户及用户组为nano/nano,对应的uid/gid为108,则需要在NFS Server创建相同ID的用户,并将其设置为共享路径的owner。
在NFS Server执行以下指令:
$groupadd nano -g 108
$useradd nano -u 108 -g nano -Z system_u
$chown nano:nano /var/nfs/nano
$chmod 755 /var/nfs/nano
创建映射规则并共享
创建规则文件
#vi /etc/exports
写入以下内容并保存
/var/nfs/nano 192.168.3.0/24(rw,sync,no_subtree_check)
映射共享路径
#exportfs -a
当NFS Server配置完成后,请先使用一个客户端服务器手工mount验证设置是否正确,以减少后续Nano自动配置的故障可能。
创建存储池¶
NFS Server配置完成后,在Web门户上选择”Storage”=>”Create”创建新的共享存储池

为存储池设定名称nfs-pool1,输入服务器192.168.3.138和共享路径/var/nfs/nano,点击创建

创建成功后返回存储清单,能够看到新建的存储池

修改存储设置¶
共享存储创建完成后,可以修改已有计算池的关联存储或者新建一个新的计算池,当新的Cell节点加入资源池后,Nano会自动同步并设置存储配置,无需用户干预。
已修改默认计算池default为例,在”Resource Pool”的资源池清单中,点击default资源池的”modify”图标,在编辑界面下拉菜单中选择新建的nfs-pool1

保存后查看资源池清单属性检查是否生效

设置完成后,就可以开始往资源池中添加资源节点了,使用了共享存储的Cell节点创建实例、快照时,都会自动保存到NFS Server的共享路径上。
添加资源¶
添加资源节点¶
Nano平台初次启动时,会默认创建一个名为Default的计算资源池,但是该资源池没有可用资源。你需要先将一个Cell节点添加到该资源池,以便有足够资源分配云主机。
在Web门户上,选择”Resource Pool”菜单,点击default资源池的”cells”按钮,进入资源节点清单:

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

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

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

请注意:如果资源池使用了共享存储,节点加入时可能会因为配置耗时太久产生超时提醒,这种情况不影响使用,重新刷新节点清单检查状态即可
对于使用共享存储的Cell节点,添加后请在节点清单中点击”Detail”图标,查看存储加载状态,确保后端存储已经成功挂载,如下图所示

资源节点状态可用后,就可以在”Resource Pool”或者”Instances”菜单创建新主机实例了。
上传镜像¶
空白云主机并不能满足我们的日常使用要求,我们还需要安装操作系统和应用软件,Nano提供了多种手段能够快速部署可用云主机。
磁盘镜像保存了模板云主机系统磁盘的数据,用户可以选择从预置的磁盘镜像克隆,新建云主机能够获得与模板云主机完全一致的系统和预装软件,有效减少系统重复安装部署的时间。
磁盘镜像中还可以通过预装Cloud-Init模块,配合Nano的CI服务,自动完成管理员密码初始化、系统磁盘扩容和自动数据盘格式化及挂载等配置任务。
Nano官网 下载 页面已经提供了CentOS 7.5 Minimal预置镜像(其中一个预装了Cloud Init)。
下载镜像,选择Web门户的”Images”=>”UPLOAD”上传到平台,后续创建云主机时就可以选择从镜像克隆了。

光盘镜像保存了ISO格式的光盘数据,可以加载到云主机中安装操作系统或者其他系统软件,通常用于定制模板云主机,详见云主机管理和平台管理章节。
系统部署完成后,就可以开始进行云主机和平台的管理了。
云主机管理¶
请注意:目前Nano版本对于云主机仅提供直连模式的网络连接,即云主机通过物理服务器的桥接网络直接连入物理网络,默认使用DHCP从物理网络获取IP地址,与传统物理服务器的网络管理方式一致,尽量减少管理员维护网络的难度和工作量。
创建云主机¶
Nano中云主机是基于资源池创建的,Core收到创建云主机请求时,首先检测池内是否有可用Cell,然后评估各Cell可用资源和实时负载,选择加权负载最低的Cell创建实例。
在Nano中创建云主机时,有以下参数需要设置:
- 主机名:用于标识云主机,仅允许数字字母和’-‘。
- 资源池:承载该实例的资源池名称,Nano会在指定资源池中选择合适的Cell节点进行创建
- 核心数:为云主机分配的核心数量,不建议设置超过Cell的最大物理线程数
- 内存:为云主机分配的内存大小,不能超过Cell的最大物理内存
- 系统磁盘:选择云主机系统磁盘的数据源,详情见后
- 数据磁盘:选择是否为云主机挂载额外的数据盘
- 开机启动:启用后,当Cell服务器开机时,会自动启动云主机实例

有三种系统盘数据源可选:空白系统、预制镜像和带Cloud-Init组件的预制镜像,Nano官网提供CentOS 7.5 Minimal的两种预制镜像 下载
空白系统¶
空白系统是默认选项。顾名思义,空白系统意味着创建出的云主机没有安装任何操作系统和软件,需要通过加载光盘镜像安装操作系统。空白系统通常用于构建模板云主机,详情请看平台管理的《构建模板镜像》章节。

预制镜像¶
预制镜像的系统磁盘已经预装了操作系统和系统软件,并可能进行了一些配置优化和调整,预制镜像可以通过模板云主机构建,也可以从其他平台下载后直接上传系统。
创建云主机时,在系统镜像菜单中选择想要的预制镜像,克隆完成后的新主机拥有跟源镜像相同的系统和软件,能够开机直接使用。

带Cloud-Init组件的预制镜像¶
带Clout Init组件的预制镜像系统中,在普通预制镜像的基础上,额外安装了clout-init和cloud-utils组件(CentOS中可以使用yum指令安装),配合Nano提供的Cloud Init服务,可以实现初始化管理员账号、自动格式化并挂载数据盘和扩展系统盘容量等多种便利的管理功能,极大地方便管理员快速部署云主机实例。
带Clout Init组件的预制镜像同样可以通过模板云主机构建或者直接,使用时,除了选择源镜像,还需要勾选Cloud-Init模块并设置好初始化参数,以便Nano提供相应的服务。

请注意,只有镜像中预装了CI组件,并且创建时指定了CI服务的实例才会自动格式化并挂载数据盘同时扩容系统盘;否则需要手工在实例中进行处理。
实例起停和监控¶
用户可以通过主机监控、清单页面的控制栏按键管理实例的生命周期,新建云主机实例默认处于停止状态,可以使用以下功能启动云主机:

- Start: 启动云主机,进入运行状态
- Start with Media: 从菜单中选择光盘镜像作为启动媒体,通常用于开机引导进入操作系统安装界面或者使用LiveCD恢复系统时使用
云主机进入运行状态后,控制栏会展示以下按键

从左至右依次为:
- Control:打开VNC远程监控页面,直接控制云主机
- Stop: 模拟按下电源按键,正常关闭磁盘然后关机,数据不受影响(CentOS云主机中需要安装acpid服务)
- Force Stop: 强制关机,类似直接断电,可能会导致数据不一致甚至磁盘毁损
- Reboot: 模拟按下重启按键,优雅重启,通常不影响数据(CentOS云主机中需要安装acpid服务)
- Force Reboot: 强制重启,类似于reset按键,可能会导致数据不一致甚至磁盘毁损
在远程监控页面,用户可以像管理本地服务器一样直接在云主机上进行操作,该功能不依赖云主机内部系统,所以即使云主机没有网络或者系统无法启动,也能通过该页面进行排查和修复。

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

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

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

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

进入实例详情页面:

详情页面提供了以下功能:
- 修改核心数、内存等资源配置用量
- 扩展或者压缩磁盘容量(压缩磁盘容量仅减少镜像文件物理空间占用,不减少逻辑容量,根据磁盘大小,该功能可能用时较长,如果出现超时告警,不影响功能使用)
- 修改管理员密码(需要云主机安装qemu-guest-agent)
- 查看VNC监控地址和连接密码
目前修改管理员密码功能只能在线调整,其他功能需要先将云主机停机后再操作。
快照及恢复¶
快照可以保存云主机的历史状态,并且在需要时恢复回去,可以有效避免误操作或者数据毁损。
当云主机处于停机状态时,点击图标

进入快照管理界面

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

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

图标

标识当前活动的快照,活动快照或者还被依赖的快照无法删除
光盘镜像加载¶
管理员可以将光盘镜像加载到运行中的实例中,以便安装软件或者操作系统。
在运行状态的云主机实例操作栏中,点击插入镜像

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

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

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

平台管理¶
Nano提供了一系列便捷的管理功能,用于简化管理员的日常运维工作。
仪表盘¶
Nano门户首页提供了整个平台级别的资源用量仪表盘,包含虚拟资源和物理资源的用量,便于随时了解系统负载情况,及时对资源进行扩充或者调整。

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

增加资源节点¶
当系统负载较大时,可以通过添加新的资源节点,来扩充池内可用资源。
首先需要在新的服务器上部署并启动Cell模块,然后在资源池的节点清单中,选择”Add Cell”

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

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

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

要构建模板镜像,首先应该创建一个不含数据磁盘的空白云主机,然后通过加载系统光盘和网络方式安装好系统和软件。
以CentOS7为例,构建模板主机时,建议进行如下设置:
- 设置模板主机名和默认用户密码
- 默认启用网络并设置为DHCP获取地址
- 安装acpid服务支持关机和重启操作
- 安装qemu-guest-agent以支持实时密码修改、内存用量监控等功能
- 使用yum更新软件版本
- 如果需要使用Nano的Cloud Init服务对实例进行自动初始化设置,则需要安装cloud-init/cloud-utils组件
上述设置完成后,关闭云主机,通过”Images” => “BUILD”,进入镜像构建界面,在下拉菜单中选择模板云主机,点击创建

当镜像制作完毕后,你就可以在新建云主机时选择从该镜像克隆实例了。
社区支持¶
Nano采用MIT许可,无论自用或者商业OEM均可使用。
代码库地址: https://github.com/project-nano
官方wiki: https://github.com/project-nano/releases/wiki
官方论坛:nanocloud.boards.net
QQ群: Nano Cloud(819161083)
感谢关注Nano,衷心期待您的加入