├── .gitignore ├── LICENSE ├── README.md ├── docs ├── Makefile ├── community.rst ├── concept.rst ├── conf.py ├── deployment.rst ├── faq.rst ├── images │ ├── 1_1_nano_modules.png │ ├── 1_2_communicate_overview.png │ ├── 1_3_domain_discovery.png │ ├── 1_4_resource_model.png │ ├── 1_5_images_overview.png │ ├── 2_1_compute_pool.png │ ├── 2_2_add_cell.png │ ├── 2_3_choose_cell.png │ ├── 2_4_cell_online.png │ ├── 2_5_upload_image.png │ ├── 2_add_address_range.png │ ├── 2_address_of_allocated_instance.png │ ├── 2_address_pool_detail.png │ ├── 2_address_pool_list.png │ ├── 2_address_pool_modified.png │ ├── 2_allocated_address.png │ ├── 2_choose_create_storage.png │ ├── 2_create_address_pool.png │ ├── 2_create_storage.png │ ├── 2_create_storage_success.png │ ├── 2_initial_system.png │ ├── 2_login.png │ ├── 2_logout.png │ ├── 2_modify_address_pool.png │ ├── 2_modify_pool.png │ ├── 2_modify_pool_success.png │ ├── 2_storage_attached.png │ ├── 3_10_monitor_instance.png │ ├── 3_11_detail_button.png │ ├── 3_12_instance_detail.png │ ├── 3_13_snapshot_button.png │ ├── 3_14_snapshots.png │ ├── 3_15_create_snapshot.png │ ├── 3_16_restore_snapshot.png │ ├── 3_17_active_snapshot.png │ ├── 3_18_insert_button.png │ ├── 3_19_insert_media.png │ ├── 3_1_create_instance.png │ ├── 3_20_media_icon.png │ ├── 3_21_eject_media.png │ ├── 3_2_blank_system.png │ ├── 3_3_prebuilt_image.png │ ├── 3_4_ci_image.png │ ├── 3_5_stopped_buttons.png │ ├── 3_6_running_buttons.png │ ├── 3_7_control_instance.png │ ├── 3_8_control_buttons.png │ ├── 3_9_monitor_button.png │ ├── 3_batch_create.png │ ├── 3_batch_delete.png │ ├── 3_migrate_all_instance.png │ ├── 3_migrate_all_instance_confirm.png │ ├── 3_migrate_instance.png │ ├── 3_migrate_instance_confirm.png │ ├── 3_migrate_instance_finish.png │ ├── 3_reset_system_1.png │ ├── 3_reset_system_2.png │ ├── 3_reset_system_3.png │ ├── 4_add_cell.png │ ├── 4_add_member.png │ ├── 4_build_image.png │ ├── 4_change_password.png │ ├── 4_create_user.png │ ├── 4_dashboard.png │ ├── 4_disable_cell.png │ ├── 4_enable_failover.png │ ├── 4_group.png │ ├── 4_image_transport.png │ ├── 4_instances.png │ ├── 4_new_cell_status.png │ ├── 4_opreate_log.png │ ├── 4_role.png │ ├── 4_select_cell.png │ └── 4_visibility.png ├── index.rst ├── instance.rst ├── make.bat └── platform.rst └── quick_start_guide.pdf /.gitignore: -------------------------------------------------------------------------------- 1 | # Binaries for programs and plugins 2 | *.exe 3 | *.exe~ 4 | 5 | # Output of the go coverage tool, specifically when used with LiteIDE 6 | *.out 7 | *.log 8 | latex 9 | 10 | 11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 project-nano 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Nano快速入门手册 2 | 3 | 文档源 for readthedocs.org 4 | 5 | 6 | 7 | ## Build PDF 8 | 9 | 10 | 11 | ``` 12 | $sphinx-build.exe -b latex .\docs .\latex 13 | $cd latex 14 | $lualatex.exe .\quick_start_guide.tex 15 | ``` 16 | 17 | -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = 6 | SPHINXBUILD = sphinx-build 7 | SPHINXPROJ = QuickStartGuide 8 | SOURCEDIR = . 9 | BUILDDIR = _build 10 | 11 | # Put it first so that "make" without argument is like "make help". 12 | help: 13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 14 | 15 | .PHONY: help Makefile 16 | 17 | # Catch-all target: route all unknown targets to Sphinx using the new 18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 19 | %: Makefile 20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -------------------------------------------------------------------------------- /docs/community.rst: -------------------------------------------------------------------------------- 1 | .. community . 2 | 3 | ---------- 4 | 社区支持 5 | ---------- 6 | 7 | Nano采用MIT许可,无论自用或者商业OEM均可使用。 8 | 9 | 代码库地址: https://github.com/project-nano 10 | 11 | API文档地址: https://nanocn.docs.apiary.io/ 12 | 13 | QQ群: Nano Cloud(819161083) 14 | 15 | 手册地址: https://nanocloud.readthedocs.io/projects/guide/zh_CN/latest/ 16 | 17 | ---- 18 | 19 | 感谢关注Nano,衷心期待您的加入 20 | -------------------------------------------------------------------------------- /docs/concept.rst: -------------------------------------------------------------------------------- 1 | .. concept . 2 | 3 | .. contents:: 本章目录 4 | :depth: 2 5 | 6 | ----------- 7 | 概念简介 8 | ----------- 9 | 10 | Nano平台目前包含三个模块:Core/Cell/FrontEnd 11 | 12 | Cell负责云主机的创建与管理;Core将多个Cell组成资源池,根据需求在池内调度和分配云主机;FrontEnd调用Core的API接口为用户提供HTML5的管理门户。 13 | 14 | 所有模块可以安装在一个服务器上,作为All In One平台进行体验和测试,但是对生产环境部署时,为了保障平台可用性,建议每个模块都部署在独立服务器上,如下图所示: 15 | 16 | .. image:: images/1_1_nano_modules.png 17 | 18 | Nano平台的网络通讯分为外部和内部两部分,外部通讯目前主要是Web管理端和Core API端口,用于用户访问和应用调用;默认端口Web为TCP 5850,API为TCP 5870,用户可以根据自己环境进行调整。 19 | 20 | 内部通讯主要是模块间的UDP协议和数据传输用HTTPS协议,协议端口都是平台自行动态分配和管理,通常情况下,管理员无需配置。 21 | 22 | .. image:: images/1_2_communicate_overview.png 23 | 24 | 25 | 通讯域 26 | ========== 27 | 28 | Nano集群的模块可以相互发现,自动完成组网和识别,无需管理员配置。 29 | 30 | Nano的自动发现基于组播协议实现,Nano通过 <通讯域名称:组播地址:组播端口> 的三元组定义一个独立的通讯域(默认为<"Nano":224.0.0.226:5599>),同一通讯域内模块可以相互发现、识别和通讯。 31 | 32 | 如果需要在一个局域网内配置多个Nano集群,可以通过分配不同的通讯域地址来进行区分,有效的组播地址为224.0.0.0~224.0.0.255,具体请参考 `Multicast address `_ 。 33 | 34 | 工作原理如图: 35 | 36 | .. image:: images/1_3_domain_discovery.png 37 | 38 | **Core作为接听模块,应该最先启动。** 如果Core停止服务或者重启,已经启动的模块会自动尝试找回Core服务并重新加入通讯组。 39 | 40 | 资源模型 41 | ========== 42 | 43 | 一个Nano本地集群构成一个可用域(Zone),一个域包含多个资源池(Pool),每个资源池包含一个或者多个Cell资源节点。 44 | 45 | 一个Cell只能属于一个Pool,当用户请求创建或者迁移云主机时,Core根据指定资源池内各Cell的实时负载,选择一个合适的Cell进行云主机实例创建。 46 | 47 | .. image:: images/1_4_resource_model.png 48 | 49 | Nano平台搭建完成后,会有一个空的Default资源池,在尝试创建云主机之前,请记得 **首先往资源池中添加一个可用的Cell节点** 。 50 | 51 | 镜像 52 | ======== 53 | 54 | 为了便于云主机部署和维护,Nano提供了两种镜像:磁盘镜像和光盘镜像。 55 | 56 | 磁盘镜像保存云主机的系统盘数据,用户可以通过磁盘镜像快速复制新的云主机实例,直接获得与模板云主机相同的操作系统和预装软件,大幅度提高批量部署示例的效率。 57 | 58 | 光盘镜像保存了ISO格式的光盘数据,用于加载到云主机中安装操作系统或者其他系统软件,通常用于定制模板云主机。 59 | 60 | 你可以直接将准备好的镜像上传到平台中并开始使用,节省制作模板的时间。可以访问Nano官方网站 `下载 `_ 页面,获取预置的CentOS 7镜像。 61 | 62 | .. image:: images/1_5_images_overview.png 63 | 64 | 65 | ---- 66 | 67 | 了解了Nano的基本概念,就可以开始进行平台的部署与安装了 68 | -------------------------------------------------------------------------------- /docs/conf.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # Configuration file for the Sphinx documentation builder. 4 | # 5 | # This file does only contain a selection of the most common options. For a 6 | # full list see the documentation: 7 | # http://www.sphinx-doc.org/en/master/config 8 | 9 | # -- Path setup -------------------------------------------------------------- 10 | 11 | # If extensions (or modules to document with autodoc) are in another directory, 12 | # add these directories to sys.path here. If the directory is relative to the 13 | # documentation root, use os.path.abspath to make it absolute, like shown here. 14 | # 15 | # import os 16 | # import sys 17 | # sys.path.insert(0, os.path.abspath('.')) 18 | 19 | 20 | # -- Project information ----------------------------------------------------- 21 | 22 | project = u'Nano Quick Start Guide' 23 | copyright = u'2018, Akumas' 24 | author = u'Akumas' 25 | 26 | # The short X.Y version 27 | version = u'' 28 | # The full version, including alpha/beta/rc tags 29 | release = u'1.0.0' 30 | 31 | 32 | # -- General configuration --------------------------------------------------- 33 | 34 | # If your documentation needs a minimal Sphinx version, state it here. 35 | # 36 | # needs_sphinx = '1.0' 37 | 38 | # Add any Sphinx extension module names here, as strings. They can be 39 | # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom 40 | # ones. 41 | extensions = [ 42 | ] 43 | 44 | # Add any paths that contain templates here, relative to this directory. 45 | templates_path = ['_templates'] 46 | 47 | # The suffix(es) of source filenames. 48 | # You can specify multiple suffix as a list of string: 49 | # 50 | # source_suffix = ['.rst', '.md'] 51 | source_suffix = '.rst' 52 | 53 | # The master toctree document. 54 | master_doc = 'index' 55 | 56 | # The language for content autogenerated by Sphinx. Refer to documentation 57 | # for a list of supported languages. 58 | # 59 | # This is also used if you do content translation via gettext catalogs. 60 | # Usually you set "language" from the command line for these cases. 61 | language = u'zh_CN' 62 | 63 | # List of patterns, relative to source directory, that match files and 64 | # directories to ignore when looking for source files. 65 | # This pattern also affects html_static_path and html_extra_path . 66 | exclude_patterns = [u'_build', 'Thumbs.db', '.DS_Store'] 67 | 68 | # The name of the Pygments (syntax highlighting) style to use. 69 | pygments_style = 'sphinx' 70 | 71 | 72 | # -- Options for HTML output ------------------------------------------------- 73 | 74 | # The theme to use for HTML and HTML Help pages. See the documentation for 75 | # a list of builtin themes. 76 | # 77 | html_theme = 'sphinx_rtd_theme' 78 | 79 | # Theme options are theme-specific and customize the look and feel of a theme 80 | # further. For a list of options available for each theme, see the 81 | # documentation. 82 | # 83 | # html_theme_options = {} 84 | 85 | # Add any paths that contain custom static files (such as style sheets) here, 86 | # relative to this directory. They are copied after the builtin static files, 87 | # so a file named "default.css" will overwrite the builtin "default.css". 88 | html_static_path = ['_static'] 89 | 90 | # Custom sidebar templates, must be a dictionary that maps document names 91 | # to template names. 92 | # 93 | # The default sidebars (for documents that don't match any pattern) are 94 | # defined by theme itself. Builtin themes are using these templates by 95 | # default: ``['localtoc.html', 'relations.html', 'sourcelink.html', 96 | # 'searchbox.html']``. 97 | # 98 | # html_sidebars = {} 99 | 100 | 101 | # -- Options for HTMLHelp output --------------------------------------------- 102 | 103 | # Output file base name for HTML help builder. 104 | htmlhelp_basename = 'QuickStartGuidedoc' 105 | 106 | 107 | # -- Options for LaTeX output ------------------------------------------------ 108 | latex_engine = 'lualatex' 109 | 110 | latex_elements = { 111 | # The paper size ('letterpaper' or 'a4paper'). 112 | # 113 | # 'papersize': 'letterpaper', 114 | 115 | # The font size ('10pt', '11pt' or '12pt'). 116 | # 117 | # 'pointsize': '10pt', 118 | 119 | # Additional stuff for the LaTeX preamble. 120 | # 121 | # 'preamble': '', 122 | 123 | # Latex figure (float) alignment 124 | # 125 | # 'figure_align': 'htbp', 126 | 127 | 'extraclassoptions': 'UTF8' 128 | } 129 | 130 | # Grouping the document tree into LaTeX files. List of tuples 131 | # (source start file, target name, title, 132 | # author, documentclass [howto, manual, or own class]). 133 | latex_documents = [ 134 | (master_doc, 'quick_start_guide.tex', u'Quick Start Guide Documentation', 135 | u'Akumas', 'ctexart'), 136 | ] 137 | 138 | 139 | # -- Options for manual page output ------------------------------------------ 140 | 141 | # One entry per manual page. List of tuples 142 | # (source start file, name, description, authors, manual section). 143 | man_pages = [ 144 | (master_doc, 'quickstartguide', u'Quick Start Guide Documentation', 145 | [author], 1) 146 | ] 147 | 148 | 149 | # -- Options for Texinfo output ---------------------------------------------- 150 | 151 | # Grouping the document tree into Texinfo files. List of tuples 152 | # (source start file, target name, title, author, 153 | # dir menu entry, description, category) 154 | texinfo_documents = [ 155 | (master_doc, 'QuickStartGuide', u'Quick Start Guide Documentation', 156 | author, 'QuickStartGuide', 'One line description of project.', 157 | 'Miscellaneous'), 158 | ] 159 | 160 | 161 | # -- Options for Epub output ------------------------------------------------- 162 | 163 | # Bibliographic Dublin Core info. 164 | epub_title = project 165 | epub_author = author 166 | epub_publisher = author 167 | epub_copyright = copyright 168 | 169 | # The unique identifier of the text. This can be a ISBN number 170 | # or the project homepage. 171 | # 172 | # epub_identifier = '' 173 | 174 | # A unique identification for the text. 175 | # 176 | # epub_uid = '' 177 | 178 | # A list of files that should not be packed into the epub file. 179 | epub_exclude_files = ['search.html'] 180 | -------------------------------------------------------------------------------- /docs/deployment.rst: -------------------------------------------------------------------------------- 1 | .. deployment . 2 | 3 | .. contents:: 本章目录 4 | :depth: 2 5 | 6 | ----------- 7 | 系统部署 8 | ----------- 9 | 10 | Nano平台提供了Installer安装程序用于自动化部署,最新版本Installer可以通过 `官网下载 `_ 或者 `Github发布页面 `_ 获取。 11 | 12 | Installer会自行选择最合适的配置进行建议, **对于初次安装Nano的新用户,安装过程中尽量不要调整任何参数** ,如需调整参数、修改配置或者直接升级二进制文件,请在熟悉产品后进行操作。 13 | 14 | 服务器要求: 15 | 16 | - 支持虚拟化的X86服务器或者打开嵌套虚拟化(Intel VT-x/AMD-v)的虚拟机 17 | - 2核4G内存50GB磁盘和一个网络设备 18 | - CentOS 7.6(1810) Minimal 19 | - 操作系统安装完成并且网络就绪 20 | - 如有raid/lvm请先完成配置,再进行Nano安装 21 | 22 | 建议使用刚装完CentOS7.6的纯净系统开始安装,避免残留设置或者依赖版本有问题影响顺利部署。 23 | 24 | 模块安装 25 | ============ 26 | 27 | 安装Nano平台,只需要解压并执行Installer即可。只需要选择需要在当前服务器部署的模块,Installer会自动完成参数配置、依赖安装和模块部署。 28 | 29 | 以1.0.0为例,在shell执行以下指令: 30 | 31 | :: 32 | 33 | $wget https://nanos.cloud/media/nano_installer_1.0.0.tar.gz 34 | $tar zxfv nano_installer_1.0.0.tar.gz 35 | $cd nano_installer 36 | $./installer 37 | 38 | Installer启动后首先要求输入要安装的模块,比如输入"2"+回车只安装Cell,或者可以输入"3"+回车,在一个服务器安装所有模块。 39 | 40 | Installer默认把模块安装在/opt/nano目录下,默认的通讯域标识为<"nano":224.0.0.226:5599>,对于初次安装或者网络内仅有一套Nano平台的用户,不建议调整参数,以免错误参数影响平台工作。 41 | 42 | 如果选择安装Cell模块,Installer会要求用户输入"yes"确认构建默认的桥接网络br0; **如果已经有其他程序设置的br0,建议先手工删除,再安装Cell,否则可能会导致云主机网络连接不正常** 。如果是以往Nano安装生成的br0则无影响,可以跳过。 43 | 44 | 45 | *已知部分服务器在进行桥接时,会因为网卡驱动原因导致SSH连接中断从而造成安装失败,请使用IPMI或者iDRAC类似远程服务接口执行installer* 46 | 47 | Installer在安装过程中,会选择模块启动监听服务的网卡和地址,如果仅有一张网卡,Installer会自动选择并进行配置;如果存在多个网卡,Installer会列出设备清单要求用户选择Nano集群需要工作的网段。 48 | 49 | 假如服务器有两个网卡,eth0地址为192.168.1.56/24,eth1地址为172.16.8.55/24,如果希望Nano集群工作在172.16.8.0/24网段,则选择eth1即可。 50 | 51 | *请注意:Installer会首先使用自带RPM包安装依赖库,如果出现版本冲突,则尝试使用yum从网络获取更新版本;如果系统已经预装了会导致冲突的版本,请确保网络可用,以便顺利安装。* 52 | 53 | 模块启动 54 | ============ 55 | 56 | 所有Nano平台模块都使用命令行控制,调用方式:"<模块名称> [start\|stop\|status\|halt]",支持的指令含义如下: 57 | 58 | - start: 启动模块,故障打印错误信息,成功则输出版本及必要信息 59 | - stop: 优雅停止模块,自动释放相关资源并通知相关模块 60 | - status: 检查模块是否在运行中 61 | - halt: 强制终止模块运行 62 | 63 | 模块安装完成后,需要启动模块以提供服务,模块默认安装在/opt/nano目录下。使用命令手动启动所有模块(假定所有模块安装在同一台服务器), **请注意,必须首先启动Core模块** 。 64 | 65 | :: 66 | 67 | $cd /opt/nano/core 68 | $./core start 69 | $cd ../cell 70 | $./cell start 71 | $ cd ../frontend 72 | $./frontend start 73 | 74 | FrontEnd模块成功启动后,Console会输出一个形如"192.168.6.3:5870"的监听地址,使用Chrome或者Firefox访问这个地址就可以开始通过Web门户管理Nano平台了。 75 | 76 | 初始化系统 77 | ============= 78 | 79 | 初次打开Nano管理页面,会提示输入账号密码,创建初始管理员,密码要求长度不小于8位,必须包含数字、小写字母和大写字母各一个。 80 | 81 | .. image:: images/2_initial_system.png 82 | 83 | 创建成功后进入登录界面,登录成功后可以开始管理Nano平台或者为你的团队创建更多用户账号。 84 | 85 | .. image:: images/2_login.png 86 | 87 | 界面底部会显示已登录用户,点击按钮注销。 88 | 89 | .. image:: images/2_logout.png 90 | 91 | 设置共享存储(可选) 92 | ====================== 93 | 94 | 默认情况下,Nano中云主机实例的磁盘数据存储在承载Cell节点的本地存储系统中,无需额外配置,性价比也最高。不过管理员也可以指定将数据存储在独立的NFS文件服务器上,防止Cell节点故障影响云主机服务,也可以更方便地在节点之间迁移实例,重新均衡负载,以提升集群整体性能和使用寿命。 95 | 96 | 使用共享存储,只需要创建一个存储资源池,然后与计算资源池关联。关联之后,所有添加到该资源池的资源节点,都会由Nano自动配置为使用共享存储,无需用户干预和设置。 97 | 98 | 一个存储池对应一个共享存储路径,一个存储池可以同时为多个计算池提供后端存储,但是每个计算资源池只能绑定一个存储池。 99 | 100 | 配置NFS服务器 101 | ................ 102 | 103 | 要让Nano正常使用NFS存储后端,首先需要正确配置好NFS服务器。 104 | 105 | 假定NFS Server地址为192.168.3.138,共享路径为/var/nfs/nano,Nano集群网段为192.168.3.0/24。 106 | 107 | 以CentOS 7.6为例,在NFS Server端执行以下指令: 108 | 109 | :: 110 | 111 | 开启防火墙端口 112 | $firewall-cmd --zone=public --add-service=nfs --permanent 113 | $firewall-cmd --reload 114 | 115 | 安装NFS服务并设置为开机启动 116 | $yum install nfs-utils 117 | $systemctl start nfs 118 | $systemctl enable nfs 119 | 120 | 创建路径 121 | $mkdir -p /var/nfs/nano 122 | 123 | 由于NFS是将客户端用户直接映射到服务端用户进行权限判断,当管理员使用不同的用户运行Nano模块和KVM服务时,需要设置不同的访问规则。 124 | 125 | 126 | 127 | 使用root用户运行Nano和KVM/QEMU服务 128 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 129 | 130 | NFS默认禁止将客户端root映射为服务端root用户,所以配置路径时需要使用no_root_squash选项。 131 | 132 | 在NFS Server执行 133 | 134 | :: 135 | 136 | 创建规则文件 137 | $vi /etc/exports 138 | 139 | 将以下规则写入文件 140 | /var/nfs/nano 192.168.3.0/24(rw,sync,no_subtree_check,no_root_squash) 141 | 142 | 映射共享路径 143 | $exportfs -a 144 | 145 | 使用普通用户运行Nano和KVM/QEMU服务 146 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 147 | 148 | 对于普通用户,NFS是根据客户端用户的uid/gid映射到本地相同id用户和组进行权限校验。 149 | 150 | 假定Cell节点运行Nano和KVM/QEMU的是用户及用户组为nano/nano,对应的uid/gid为108,则需要在NFS Server创建相同ID的用户,并将其设置为共享路径的owner。 151 | 152 | 在NFS Server执行以下指令: 153 | 154 | :: 155 | 156 | $groupadd nano -g 108 157 | $useradd nano -u 108 -g nano -Z system_u 158 | $chown nano:nano /var/nfs/nano 159 | $chmod 755 /var/nfs/nano 160 | 161 | 创建映射规则并共享 162 | 163 | :: 164 | 165 | 创建规则文件 166 | #vi /etc/exports 167 | 168 | 写入以下内容并保存 169 | /var/nfs/nano 192.168.3.0/24(rw,sync,no_subtree_check) 170 | 171 | 映射共享路径 172 | #exportfs -a 173 | 174 | ---- 175 | 176 | 当NFS Server配置完成后,请先使用一个客户端服务器手工mount验证设置是否正确,以减少后续Nano自动配置的故障可能。 177 | 178 | 179 | 创建存储池 180 | ............. 181 | 182 | NFS Server配置完成后,在Web门户上选择"存储池"=>"创建"创建新的共享存储池 183 | 184 | .. image:: images/2_choose_create_storage.png 185 | 186 | 为存储池设定名称nfs-pool1,输入服务器192.168.3.138和共享路径/var/nfs/nano,点击创建 187 | 188 | .. image:: images/2_create_storage.png 189 | 190 | 创建成功后返回存储清单,能够看到新建的存储池 191 | 192 | .. image:: images/2_create_storage_success.png 193 | 194 | 修改存储设置 195 | ............... 196 | 197 | 共享存储创建完成后,可以修改已有计算池的关联存储或者新建一个新的计算池,当新的Cell节点加入资源池后,Nano会自动同步并设置存储配置,无需用户干预。 198 | 199 | 以修改默认计算池default为例,在"资源池"菜单的资源池清单中,点击default资源池的"修改"图标,在编辑界面下拉菜单中选择新建的nfs-pool1。 200 | 201 | 建议需要保证云主机实例高可用的用户打开"Failover/故障迁移"开关,当故障迁移生效时,如果Nano检测到某一Cell节点失联,会将该节点承载的云主机实例自动迁移到集群内其他节点恢复服务,详见“平台管理-故障迁移”章节。 202 | 203 | .. image:: images/2_modify_pool.png 204 | 205 | 修改后检查清单中相应属性和图标是否生效 206 | 207 | .. image:: images/2_modify_pool_success.png 208 | 209 | 设置完成后,就可以开始往资源池中添加资源节点了,使用了共享存储的Cell节点创建实例、快照时,都会自动保存到NFS Server的共享路径上。 210 | 211 | 添加地址池(可选) 212 | ===================== 213 | 214 | 默认情况下,Nano分配的云主机实例通过桥接网络从现有物理网络设备中获取地址,但是对于希望能够精确控制实例IP的用户,可以使用地址池对网络资源进行更有效地管理。 215 | 216 | 地址池允许添加多个可用地址段,当计算资源池创建实例时,自动从指定的地址范围内分配新IP,并且通过云主机所在Cell节点的DHCP服务绑定到实例。当实例删除时,分配IP释放回地址池,可以重新由其他实例申请。 217 | 218 | 首先在地址池列表中,点击"创建"按钮新建地址池 219 | 220 | .. image:: images/2_create_address_pool.png 221 | 222 | 地址池名称使用字母、数字和'-',网关和DNS是IPv4格式,当云主机实例启动时,会通过DHCP client获得这里设定的参数并建立内部网络配置。创建成功后,返回地址池列表,点击“详情”添加可用地址段。 223 | 224 | .. image:: images/2_address_pool_list.png 225 | 226 | 地址池详情界面,点击“添加”按钮,输入可用地址段的起止范围和子网掩码。创建新实例时,会从中选择IP地址并且通过DHCP服务绑定实例。为了避免与现有网络DHCP服务冲突,更有效地实现云主机IP资源的管理,使用中请注意以下几点: 227 | 228 | 1. **合理规划地址网段,确保现有DHCP网段和Nano地址池中地址网段不出现重叠,避免出现IP冲突** 229 | 230 | 2. **确保地址池备选网段与网关IP处于同一子网,网络可达,而且网关地址不应出现在备选网段中。如网关地址192.168.3.1,则备选网段应考虑192.168.3.2~192.168.3.240/24** 231 | 232 | .. image:: images/2_add_address_range.png 233 | 234 | 添加完成后可以在详情清单中看到可用地址段,如有需要,可以在一个地址池内添加多个分散的地址段,以便进行统一管理。 235 | 236 | .. image:: images/2_address_pool_detail.png 237 | 238 | 地址池创建完毕后,需要在计算资源池中指定使用地址池,才能正确分配地址。选择修改计算资源池或者新建资源池 239 | 240 | .. image:: images/2_modify_address_pool.png 241 | 242 | 在下拉菜单中选择设置好的地址池即可,返回计算资源池列表查看地址池变更是否生效 243 | 244 | .. image:: images/2_address_pool_modified.png 245 | 246 | 地址池变更后,该计算资源池新建实例时,就会自动分配IP地址并完成绑定。 247 | 248 | 为云主机实例分配的绑定地址可以在云主机详情或者地址池详情中查看 249 | 250 | .. image:: images/2_address_of_allocated_instance.png 251 | 252 | .. image:: images/2_allocated_address.png 253 | 254 | 请注意,一个地址池可以关联多个计算资源池,地址池的服务器设置可以实时调整,关联关系也可以在线变更,但是在解除地址池绑定前,需要首先释放当前资源池中已经获得地址的实例。 255 | 256 | 257 | 添加资源 258 | ============ 259 | 260 | 添加资源节点 261 | ................ 262 | 263 | Nano平台初次启动时,会默认创建一个名为Default的计算资源池,但是该资源池没有可用资源。你需要先将一个Cell节点添加到该资源池,以便有足够资源分配云主机。 264 | 265 | 在Web门户上,选择"资源池"菜单,点击default资源池的"Cell节点"按钮,进入资源节点清单: 266 | 267 | .. image:: images/2_1_compute_pool.png 268 | 269 | 当前没有任何资源节点,点击"添加"按钮,进入添加页面 270 | 271 | .. image:: images/2_2_add_cell.png 272 | 273 | 在下拉菜单中,选择目前平台中已经发现并且尚未加入资源池的Cell节点,完成添加 274 | 275 | .. image:: images/2_3_choose_cell.png 276 | 277 | 添加完成回到资源节点清单,可以看到新Cell已经加入资源池,并且处于可用状态。 278 | 279 | .. image:: images/2_4_cell_online.png 280 | 281 | **请注意:如果资源池使用了共享存储,节点加入时可能会因为配置耗时太久产生超时提醒,这种情况不影响使用,重新刷新节点清单检查状态即可** 282 | 283 | *对于使用共享存储的Cell节点,添加后请在节点清单中点击"Detail"图标,查看存储加载状态,确保后端存储已经成功挂载,如下图所示* 284 | 285 | .. image:: images/2_storage_attached.png 286 | 287 | 288 | 资源节点状态可用后,就可以在"资源池"或者"云主机"菜单创建新主机实例了。 289 | 290 | 上传镜像 291 | ............ 292 | 293 | 空白云主机并不能满足我们的日常使用要求,我们还需要安装操作系统和应用软件,Nano提供了多种手段能够快速部署可用云主机。 294 | 295 | 磁盘镜像 296 | ,,,,,,,,,,,, 297 | 298 | 磁盘镜像保存了模板云主机系统磁盘的数据,用户可以选择从预置的磁盘镜像克隆,新建云主机能够获得与模板云主机完全一致的系统和预装软件,有效减少系统重复安装部署的时间。 299 | 300 | 磁盘镜像中还可以通过预装Cloud-Init模块,配合Nano的CI服务,自动完成管理员密码初始化、系统磁盘扩容和自动数据盘格式化及挂载等配置任务。 301 | 302 | Nano官网 `下载 `_ 页面已经提供了CentOS 7.5 Minimal预置镜像(其中一个预装了Cloud Init)。 303 | 304 | 下载镜像,选择Web门户的"磁盘镜像"=>"上传"到平台,后续创建云主机时就可以选择从镜像克隆了。 305 | 306 | .. image:: images/2_5_upload_image.png 307 | 308 | 光盘镜像 309 | ,,,,,,,,,,,, 310 | 311 | 光盘镜像保存了ISO格式的光盘数据,可以加载到云主机中安装操作系统或者其他系统软件,通常用于定制模板云主机,详见云主机管理和平台管理章节。 312 | 313 | 314 | ---- 315 | 316 | 系统部署完成后,就可以开始进行云主机和平台的管理了。 317 | -------------------------------------------------------------------------------- /docs/faq.rst: -------------------------------------------------------------------------------- 1 | .. faq . 2 | 3 | .. contents:: 本章目录 4 | :depth: 2 5 | 6 | --------- 7 | 常见问题 8 | --------- 9 | 10 | 安装Nano有什么要求? 11 | ============================= 12 | 13 | - 支持虚拟化的X86服务器或者打开嵌套虚拟化的虚拟机 14 | - 2核4G内存50GB磁盘和一个网络设备 15 | - CentOS 7.6(1810) Minimal 16 | - 操作系统安装完成并且网络就绪 17 | 18 | 能否在虚拟机安装Nano? 19 | =============================== 20 | 21 | 理论上支持嵌套虚拟化的技术都可以使用,已测试虚拟化技术: 22 | 23 | - VMware Station,可以安装,需要打开CPU的嵌套虚拟化开关 24 | - VMware ESXi,可以安装,需要启用网络混杂模式 25 | - VirtualBox,不可安装 26 | 27 | 能否在公有云安装Nano? 28 | =============================== 29 | 30 | 不行,目前已知大部分公有云平台都不允许使用虚拟化技术 31 | 32 | Nano安装过程中网络中断 33 | ============================= 34 | 35 | Installer安装过程中,会构建桥接网络并且重启网络服务,对于常见的Dell系列服务器和VMware实例,该操作不会中断网络连接。 36 | 37 | 但是确实有部分服务器可能因为网络驱动原因,会导致网络中断,这种情况请使用服务器的IPMI或者类似远程管理界面进行安装,而不要使用SSH。 38 | 39 | 40 | Installer或者Cell启动时提示"no default route available" 41 | =================================================================== 42 | 43 | Nano所在服务器必须配置好默认路由才能正常工作,如果模块检测不到默认路由,则需要手工配置再启动服务。 44 | 假设网络中默认网关为192.168.1.1,则在安装Nano的服务器上执行指令: 45 | 46 | :: 47 | 48 | $ip route add default via 192.168.1.1 49 | 50 | 51 | Cell启动提示"query timeout" 52 | ========================================== 53 | 54 | Cell模块启动时需要通过连接Core模块完成自我发现和组网,请检查Core模块是否启动。如果已经启动,请检查服务器网络配置和模块的通讯域配置信息是否一致 55 | 56 | 升级0.9.1之后看不到原有云主机和镜像了 57 | =============================================== 58 | 59 | 由于新版本只能查看自己拥有的云主机和镜像,请执行以下指令修改资源归属并重启服务,否则会无法看到自己的云主机和镜像资源。 60 | 以当前用户为nano,用户组为admin为例 61 | 62 | :: 63 | 64 | 更新Core模块镜像归属 65 | $sed -i 's/\"owner\": \"admin\"/\"owner\": \"nano\"/' /opt/nano/core/data/image.data 66 | $sed -i 's/\"group\": \"manager\"/\"group\": \"admin\"/' /opt/nano/core/data/image.data 67 | 68 | 更新Cell模块云主机归属 69 | $sed -i 's/\"user\": \"admin\"/\"user\": \"nano\"/' /opt/nano/cell/data/instance.data 70 | $sed -i 's/\"group\": \"manager\"/\"group\": \"admin\"/' /opt/nano/cell/data/instance.data 71 | 72 | 升级之后为什么看不到日志和可见性管理菜单 73 | ================================================== 74 | 75 | 旧版本升级之后,需要在角色管理中,为相应角色勾选"log"或者"visibility"菜单,用户重新登陆后即可 76 | -------------------------------------------------------------------------------- /docs/images/1_1_nano_modules.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/1_1_nano_modules.png -------------------------------------------------------------------------------- /docs/images/1_2_communicate_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/1_2_communicate_overview.png -------------------------------------------------------------------------------- /docs/images/1_3_domain_discovery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/1_3_domain_discovery.png -------------------------------------------------------------------------------- /docs/images/1_4_resource_model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/1_4_resource_model.png -------------------------------------------------------------------------------- /docs/images/1_5_images_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/1_5_images_overview.png -------------------------------------------------------------------------------- /docs/images/2_1_compute_pool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/2_1_compute_pool.png -------------------------------------------------------------------------------- /docs/images/2_2_add_cell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/2_2_add_cell.png -------------------------------------------------------------------------------- /docs/images/2_3_choose_cell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/2_3_choose_cell.png -------------------------------------------------------------------------------- /docs/images/2_4_cell_online.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/2_4_cell_online.png -------------------------------------------------------------------------------- /docs/images/2_5_upload_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/2_5_upload_image.png -------------------------------------------------------------------------------- /docs/images/2_add_address_range.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/2_add_address_range.png -------------------------------------------------------------------------------- /docs/images/2_address_of_allocated_instance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/2_address_of_allocated_instance.png -------------------------------------------------------------------------------- /docs/images/2_address_pool_detail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/2_address_pool_detail.png -------------------------------------------------------------------------------- /docs/images/2_address_pool_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/2_address_pool_list.png -------------------------------------------------------------------------------- /docs/images/2_address_pool_modified.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/2_address_pool_modified.png -------------------------------------------------------------------------------- /docs/images/2_allocated_address.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/2_allocated_address.png -------------------------------------------------------------------------------- /docs/images/2_choose_create_storage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/2_choose_create_storage.png -------------------------------------------------------------------------------- /docs/images/2_create_address_pool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/2_create_address_pool.png -------------------------------------------------------------------------------- /docs/images/2_create_storage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/2_create_storage.png -------------------------------------------------------------------------------- /docs/images/2_create_storage_success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/2_create_storage_success.png -------------------------------------------------------------------------------- /docs/images/2_initial_system.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/2_initial_system.png -------------------------------------------------------------------------------- /docs/images/2_login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/2_login.png -------------------------------------------------------------------------------- /docs/images/2_logout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/2_logout.png -------------------------------------------------------------------------------- /docs/images/2_modify_address_pool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/2_modify_address_pool.png -------------------------------------------------------------------------------- /docs/images/2_modify_pool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/2_modify_pool.png -------------------------------------------------------------------------------- /docs/images/2_modify_pool_success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/2_modify_pool_success.png -------------------------------------------------------------------------------- /docs/images/2_storage_attached.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/2_storage_attached.png -------------------------------------------------------------------------------- /docs/images/3_10_monitor_instance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_10_monitor_instance.png -------------------------------------------------------------------------------- /docs/images/3_11_detail_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_11_detail_button.png -------------------------------------------------------------------------------- /docs/images/3_12_instance_detail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_12_instance_detail.png -------------------------------------------------------------------------------- /docs/images/3_13_snapshot_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_13_snapshot_button.png -------------------------------------------------------------------------------- /docs/images/3_14_snapshots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_14_snapshots.png -------------------------------------------------------------------------------- /docs/images/3_15_create_snapshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_15_create_snapshot.png -------------------------------------------------------------------------------- /docs/images/3_16_restore_snapshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_16_restore_snapshot.png -------------------------------------------------------------------------------- /docs/images/3_17_active_snapshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_17_active_snapshot.png -------------------------------------------------------------------------------- /docs/images/3_18_insert_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_18_insert_button.png -------------------------------------------------------------------------------- /docs/images/3_19_insert_media.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_19_insert_media.png -------------------------------------------------------------------------------- /docs/images/3_1_create_instance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_1_create_instance.png -------------------------------------------------------------------------------- /docs/images/3_20_media_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_20_media_icon.png -------------------------------------------------------------------------------- /docs/images/3_21_eject_media.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_21_eject_media.png -------------------------------------------------------------------------------- /docs/images/3_2_blank_system.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_2_blank_system.png -------------------------------------------------------------------------------- /docs/images/3_3_prebuilt_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_3_prebuilt_image.png -------------------------------------------------------------------------------- /docs/images/3_4_ci_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_4_ci_image.png -------------------------------------------------------------------------------- /docs/images/3_5_stopped_buttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_5_stopped_buttons.png -------------------------------------------------------------------------------- /docs/images/3_6_running_buttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_6_running_buttons.png -------------------------------------------------------------------------------- /docs/images/3_7_control_instance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_7_control_instance.png -------------------------------------------------------------------------------- /docs/images/3_8_control_buttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_8_control_buttons.png -------------------------------------------------------------------------------- /docs/images/3_9_monitor_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_9_monitor_button.png -------------------------------------------------------------------------------- /docs/images/3_batch_create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_batch_create.png -------------------------------------------------------------------------------- /docs/images/3_batch_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_batch_delete.png -------------------------------------------------------------------------------- /docs/images/3_migrate_all_instance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_migrate_all_instance.png -------------------------------------------------------------------------------- /docs/images/3_migrate_all_instance_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_migrate_all_instance_confirm.png -------------------------------------------------------------------------------- /docs/images/3_migrate_instance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_migrate_instance.png -------------------------------------------------------------------------------- /docs/images/3_migrate_instance_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_migrate_instance_confirm.png -------------------------------------------------------------------------------- /docs/images/3_migrate_instance_finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_migrate_instance_finish.png -------------------------------------------------------------------------------- /docs/images/3_reset_system_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_reset_system_1.png -------------------------------------------------------------------------------- /docs/images/3_reset_system_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_reset_system_2.png -------------------------------------------------------------------------------- /docs/images/3_reset_system_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/3_reset_system_3.png -------------------------------------------------------------------------------- /docs/images/4_add_cell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/4_add_cell.png -------------------------------------------------------------------------------- /docs/images/4_add_member.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/4_add_member.png -------------------------------------------------------------------------------- /docs/images/4_build_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/4_build_image.png -------------------------------------------------------------------------------- /docs/images/4_change_password.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/4_change_password.png -------------------------------------------------------------------------------- /docs/images/4_create_user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/4_create_user.png -------------------------------------------------------------------------------- /docs/images/4_dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/4_dashboard.png -------------------------------------------------------------------------------- /docs/images/4_disable_cell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/4_disable_cell.png -------------------------------------------------------------------------------- /docs/images/4_enable_failover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/4_enable_failover.png -------------------------------------------------------------------------------- /docs/images/4_group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/4_group.png -------------------------------------------------------------------------------- /docs/images/4_image_transport.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/4_image_transport.png -------------------------------------------------------------------------------- /docs/images/4_instances.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/4_instances.png -------------------------------------------------------------------------------- /docs/images/4_new_cell_status.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/4_new_cell_status.png -------------------------------------------------------------------------------- /docs/images/4_opreate_log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/4_opreate_log.png -------------------------------------------------------------------------------- /docs/images/4_role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/4_role.png -------------------------------------------------------------------------------- /docs/images/4_select_cell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/4_select_cell.png -------------------------------------------------------------------------------- /docs/images/4_visibility.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/docs/images/4_visibility.png -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- 1 | .. index . 2 | 3 | ====================== 4 | 概览 5 | ====================== 6 | 7 | 说明 8 | ====== 9 | 10 | 本手册简要介绍Nano平台基本概念以及从安装部署到日常管理的主要流程和常见功能 11 | 12 | 手册内容对应 Nano v1.0.0 版本,实际内容请以最终发布版本为准 13 | 14 | 欢迎访问官方网站 https://nanos.cloud/ 或者加入官方QQ群 Nano Cloud( **819161083** )了解更多内容 15 | 16 | 作者: Akumas (bokuore@github.com) 17 | 18 | Git库: https://github.com/project-nano 19 | 20 | 手册地址: https://nanocloud.readthedocs.io/projects/guide/zh_CN/latest/ 21 | 22 | 前言 23 | ====== 24 | 25 | Nano是基于CentOS/KVM虚拟化技术,使用服务器集群构建计算资源池并提供云主机实例管理服务的新一代IaaS(架构即服务)软件平台。 26 | 27 | Nano最大可能采用智能化和自动化手段替代繁琐易出错的手工操作,在简单易用的基础上,提供强大而稳定的云管理平台,产品,在解放运维人员的同时,提高集群的资源利用率、可用性和可靠性。 28 | 29 | Nano基于Go语言开发,在极低的资源占用下提供强大而稳定的服务,同时避免Openstack等传统云平台需要大量外部组件依赖,维护复杂并且稳定性差的问题。所有模块均编译为独立运行的二进制包,模块升级时直接替换即可,无需考虑复杂的外部依赖,极大降低了维护难度和工作量。 30 | 31 | 对于支持Intel VT-d或者AMD-v的普通x86服务器,管理员只需要下载并安装Nano部署包,即可在三分钟内将其转换为云管理平台,并且开始创建云主机实例。 32 | 33 | Nano自带对用户友好的图形化管理界面,能够实现开箱即用;Nano也同时提供对机器友好的完整REST API调用接口,可以方便地集成到现有产品或者自动化运维脚本。 34 | 35 | Nano使用MIT许可,无论自用、修改或者商用都无限制 36 | 37 | 最新功能一览 38 | ============== 39 | 40 | - **资源池管理** :资源节点增删与禁用恢复、云主机调度、实时资源用量监控(CPU/内存/磁盘/网络/运行时间)、多层级资源下钻(集群/资源池/节点/实例) 41 | - **存储后端支持** :本地磁盘存储、NFS共享存储 42 | - **地址池管理** :IPv4云主机地址池管理与绑定,多地址段设定,网关及DNS分配 43 | - **云主机功能** : 44 | 45 | - 生命周期管理:创建、释放、起停、实例迁移、故障迁移 46 | - 配置管理:实例名、核心数、内存修改,QoS管理(CPU、磁盘、带宽),磁盘扩容、压缩,配置模板优化,重置系统 47 | - 虚拟机操作系统:重置密码、CPU/内存用量监控、磁盘自动格式化/挂载、修改主机名 48 | - 远程管理:内嵌HTML5监控端、第三方VNC连接支持、VNC连接加密 49 | - 批量构建:云主机模板构建、复制、上传、下载、批量创建与删除 50 | - 数据安全:云主机增量快照创建、还原、管理 51 | - 媒介管理:光盘镜像上传、加载、卸载、信息修改 52 | - 网络管理:地址绑定、回收与迁移,网关、DNS分配 53 | 54 | - **平台管理** :系统初始化、用户/组/角色权限管理、操作日志、资源组可见性管理、自动识别组网、连接检测、模块起停、运行状态检测 55 | - **辅助工具** :Installer安装包 56 | - **浏览器支持** :Chrome/Firefox 57 | - **语言支持** :中文/English 58 | 59 | 60 | 章节 61 | ------- 62 | 63 | .. toctree:: 64 | :maxdepth: 2 65 | 66 | index 67 | concept 68 | deployment 69 | instance 70 | platform 71 | faq 72 | community 73 | -------------------------------------------------------------------------------- /docs/instance.rst: -------------------------------------------------------------------------------- 1 | .. instance . 2 | 3 | .. contents:: 本章目录 4 | :depth: 2 5 | 6 | ------------- 7 | 云主机管理 8 | ------------- 9 | 10 | **请注意:目前推荐对于云主机使用直连模式的网络连接,即云主机通过物理服务器的桥接网络直接连入物理网络,默认使用DHCP从物理网络获取IP地址,与传统物理服务器的网络管理方式一致,尽量减少管理员维护网络的难度和工作量。** 11 | 12 | 创建云主机 13 | ============= 14 | 15 | Nano中云主机是基于资源池创建的,Core收到创建云主机请求时,首先检测池内是否有可用Cell,然后评估各Cell可用资源和实时负载,选择加权负载最低的Cell创建实例。 16 | 17 | 在Nano中创建云主机时,有以下参数需要设置: 18 | 19 | - 主机名:用于标识云主机,仅允许数字字母和'-'。 20 | - 资源池:承载该实例的资源池名称,Nano会在指定资源池中选择合适的Cell节点进行创建 21 | - 核心数:为云主机分配的核心数量,不建议设置超过Cell的最大物理线程数 22 | - 内存:为云主机分配的内存大小,不能超过Cell的最大物理内存 23 | - 系统版本:Nano会根据选择的版本对云主机硬件设置进行优化,在保证兼容性的情况提供更好的性能(如果操作系统版本较旧,建议选择Legacy System) 24 | - 系统磁盘:选择云主机系统磁盘的数据源,详情见后 25 | - 数据磁盘:选择是否为云主机挂载额外的数据盘 26 | - 开机启动:启用后,当Cell服务器开机时,会自动启动云主机实例 27 | - 系统镜像:是否从预制镜像生成云主机系统盘的数据 28 | - CPU优先级:高优先级实例在繁忙时,会获得更多系统资源 29 | - IOPS:设置磁盘IO读写上限,默认为无限制 30 | - 上下行带宽:设置网络带宽限制,默认为无限制 31 | 32 | .. image:: images/3_1_create_instance.png 33 | 34 | 有三种系统盘数据源可选:空白系统、预制镜像和带Cloud-Init组件的预制镜像,Nano官网提供CentOS 7.5 Minimal的两种预制镜像 `下载 `_ 35 | 36 | 空白系统 37 | ----------- 38 | 39 | 空白系统是默认选项。顾名思义,空白系统意味着创建出的云主机没有安装任何操作系统和软件,需要通过加载光盘镜像安装操作系统。空白系统通常用于构建模板云主机,详情请看平台管理的《构建模板镜像》章节。 40 | 41 | .. image:: images/3_2_blank_system.png 42 | 43 | 预制镜像 44 | ----------- 45 | 46 | 预制镜像的系统磁盘已经预装了操作系统和系统软件,并可能进行了一些配置优化和调整,预制镜像可以通过模板云主机构建,也可以从其他平台下载后直接上传系统。 47 | 48 | 创建云主机时,在系统镜像菜单中选择想要的预制镜像,克隆完成后的新主机拥有跟源镜像相同的系统和软件,能够开机直接使用。 49 | 50 | .. image:: images/3_3_prebuilt_image.png 51 | 52 | 带Cloud-Init组件的预制镜像 53 | ----------------------------- 54 | 55 | 带Clout Init组件的预制镜像系统中,在普通预制镜像的基础上,额外安装了clout-init和cloud-utils组件(CentOS中可以使用yum指令安装),配合Nano提供的Cloud Init服务,可以实现初始化管理员账号、自动格式化并挂载数据盘和扩展系统盘容量等多种便利的管理功能,极大地方便管理员快速部署云主机实例。 56 | 57 | 带Clout Init组件的预制镜像同样可以通过模板云主机构建或者直接上传。使用时,除了选择源镜像,还需要勾选Cloud-Init模块并设置好初始化参数,以便Nano提供相应的服务。 58 | 59 | .. image:: images/3_4_ci_image.png 60 | 61 | *请注意,只有镜像中预装了CI组件,并且创建时指定了CI服务的实例才会自动格式化并挂载数据盘同时扩容系统盘;否则需要手工在实例中进行处理。* 62 | 63 | 实例起停和监控 64 | ================= 65 | 66 | 用户可以通过主机监控、清单页面的控制栏按键管理实例的生命周期,新建云主机实例默认处于停止状态,可以使用以下功能启动云主机: 67 | 68 | .. image:: images/3_5_stopped_buttons.png 69 | 70 | - 启动: 启动云主机,进入运行状态 71 | - 从光盘启动: 从菜单中选择光盘镜像作为启动媒体,通常用于开机引导进入操作系统安装界面或者使用LiveCD恢复系统时使用 72 | - 快照:管理该实例所创建的快照 73 | - 创建磁盘镜像:基于当前云主机磁盘数据,构建新的磁盘镜像,用于批量复制 74 | - 重置系统:将当前云主机系统数据还原到指定系统镜像 75 | - 删除:永久删除该云主机实例 76 | - 迁移:将云主机实例迁移到其他资源节点(仅支持基于共享存储创建的实例) 77 | - 监控:监控云主机实例的实时资源用量 78 | - 详情:可以对云主机实例进行更详细的配置和管理 79 | 80 | 云主机进入运行状态后,控制栏会展示以下按键 81 | 82 | .. image:: images/3_6_running_buttons.png 83 | 84 | 从左至右依次为: 85 | 86 | - 远程控制:打开安全的VNC监控页面,直接控制云主机 87 | - 停止: 模拟按下电源按键,正常关闭磁盘然后关机,数据不受影响(CentOS云主机中需要安装acpid服务) 88 | - 强制终止: 强制关机,类似直接断电,可能会导致数据不一致甚至磁盘毁损 89 | - 重启: 模拟按下重启按键,优雅重启,通常不影响数据(CentOS云主机中需要安装acpid服务) 90 | - 强制重启: 强制重启,类似于reset按键,可能会导致数据不一致甚至磁盘毁损 91 | - 插入/弹出媒体:将已上传的光盘镜像插入或者弹出主机实例 92 | - 监控:监控云主机实例的实时资源用量 93 | - 详情:可以对云主机实例进行更详细的配置和管理 94 | 95 | 在远程监控页面,用户可以像管理本地服务器一样直接在云主机上进行操作,该功能不依赖云主机内部系统,所以即使云主机没有网络或者系统无法启动,也能通过该页面进行排查和修复。 96 | 97 | .. image:: images/3_7_control_instance.png 98 | 99 | 100 | 监控页面也提供了以下辅助功能,从左至右依次为: 101 | 102 | .. image:: images/3_8_control_buttons.png 103 | 104 | - 发送Ctrl+Alt+Del: 用于Windows等操作系统登录和重启 105 | - 插入光盘镜像:将指定光盘镜像加载到云主机的光驱中,用于安装额外软件和系统 106 | - 弹出光盘镜像:将光盘镜像弹出云主机光驱 107 | - 关机:模拟按下电源按键,正常关闭磁盘然后关机,数据不受影响(CentOS云主机中需要安装acpid服务) 108 | - 重启:模拟按下重启按键,优雅重启,通常不影响数据(CentOS云主机中需要安装acpid服务) 109 | - 强制重启:类似于reset按键,可能会导致数据不一致甚至磁盘毁损 110 | 111 | **除了内置的HTML5监控页面,用户也可以通过主机详情页面查询VNC访问地址和密码,使用第三方vnc软件连接和管理云主机。** 112 | 113 | 主机详情及配置修改 114 | ==================== 115 | 116 | 在云主机实例清单的控制栏中,用户可以点击 117 | 118 | .. image:: images/3_9_monitor_button.png 119 | 120 | 进入实例运行仪表盘,了解实时的资源用量和相关状态信息: 121 | 122 | .. image:: images/3_10_monitor_instance.png 123 | 124 | 当默认创建时的资源选项不满足需要,或者需要重新调整实例资源配置的时候,可以点击 125 | 126 | .. image:: images/3_11_detail_button.png 127 | 128 | 进入实例详情页面: 129 | 130 | .. image:: images/3_12_instance_detail.png 131 | 132 | 详情页面提供了以下功能: 133 | 134 | - 修改实例名称 135 | - 修改核心数、内存等资源配置用量 136 | - 扩展或者压缩磁盘容量(压缩磁盘容量仅减少镜像文件物理空间占用,不减少逻辑容量,根据磁盘大小,该功能可能用时较长,如果出现超时告警,不影响功能使用) 137 | - 修改管理员密码(需要云主机安装qemu-guest-agent) 138 | - 查看VNC监控地址和连接密码 139 | - 修改CPU优先级、磁盘IO和网络带宽限制 140 | 141 | 目前修改管理员密码功能只能在线调整,其他功能需要先将云主机停机后再操作。 142 | 143 | 快照及恢复 144 | ============= 145 | 146 | 快照可以保存云主机的历史状态,并且在需要时恢复回去,可以有效避免误操作或者数据毁损。 147 | 148 | 当云主机处于停机状态时,点击图标 149 | 150 | .. image:: images/3_13_snapshot_button.png 151 | 152 | 进入快照管理界面 153 | 154 | .. image:: images/3_14_snapshots.png 155 | 156 | 你可以输入快照名称和描述,将当前云主机数据保存到新的快照中 157 | 158 | .. image:: images/3_15_create_snapshot.png 159 | 160 | 也可以选择把系统状态恢复到特定快照或者删除某个快照 161 | 162 | .. image:: images/3_16_restore_snapshot.png 163 | 164 | 图标 165 | 166 | .. image:: images/3_17_active_snapshot.png 167 | 168 | 标识当前活动的快照,活动快照或者还被依赖的快照无法删除 169 | 170 | 光盘镜像加载 171 | ============= 172 | 173 | 管理员可以将光盘镜像加载到运行中的实例中,以便安装软件或者操作系统。 174 | 175 | 在运行状态的云主机实例操作栏中,点击插入镜像 176 | 177 | .. image:: images/3_18_insert_button.png 178 | 179 | 在弹出菜单中选择需要插入的光盘镜像即可,插入实时生效,跟使用笔记本一样方便快捷。 180 | 181 | .. image:: images/3_19_insert_media.png 182 | 183 | 插入成功后,云主机实例的状态栏会显示已插入媒体的状态图标: 184 | 185 | .. image:: images/3_20_media_icon.png 186 | 187 | 此时,点击弹出镜像功能即可将光盘镜像从实例中卸载 188 | 189 | .. image:: images/3_21_eject_media.png 190 | 191 | 重置系统 192 | ========== 193 | 194 | 当需要恢复云主机操作系统或者安装新系统时,可以选择直接从系统已有镜像重置云主机系统。 195 | 196 | 首先停止云主机,在功能按钮中选择“重置系统” 197 | 198 | .. image:: images/3_reset_system_1.png 199 | 200 | 重置界面里选择需要安装的镜像,点击开始重置。 201 | 202 | .. image:: images/3_reset_system_2.png 203 | 204 | 成功完成后,云主机的系统磁盘就会恢复到新装状态。 205 | 206 | .. image:: images/3_reset_system_3.png 207 | 208 | 209 | 实例迁移 210 | ========== 211 | 212 | 为了方便管理员手工优化资源配置和进行日常停机维护,Nano提供了云主机实例迁移功能。 **请注意,实例迁移必须基于后端共享存储使用。** 213 | 214 | 单实例迁移 215 | ------------ 216 | 217 | 单实例迁移可以将一个实例迁移到指定Cell节点,用于优化资源配置或者服务性能。在云主机清单中选择已停机的实例,点击“Migrate/迁移”功能 218 | 219 | .. image:: images/3_migrate_instance.png 220 | 221 | 在弹出菜单中选择迁移目标节点,确认后等待迁移完成即可。 222 | 223 | .. image:: images/3_migrate_instance_confirm.png 224 | 225 | 迁移完成后可以看到云主机承载节点已变更(如果使用第三方远程管理工具,请注意此时监控地址也已经迁移到新Cell节点,请查看云主机详情获取新地址) 226 | 227 | .. image:: images/3_migrate_instance_finish.png 228 | 229 | 全节点迁移 230 | ------------ 231 | 232 | 全节点迁移是将一个Cell节点的所有实例迁移到其他节点上,通常用于停机维护或者服务器搬迁。 233 | 234 | 在Cell节点列表中,点击“Migrate/迁移”功能 235 | 236 | .. image:: images/3_migrate_all_instance.png 237 | 238 | 在弹出菜单中选择迁移目标节点,确认后等待迁移完成即可。 239 | 240 | .. image:: images/3_migrate_all_instance_confirm.png 241 | 242 | 批量处理 243 | ========== 244 | 245 | 当需要管理大量实例时,批量处理能够有效提升管理效率。 246 | 247 | 批量创建 248 | ------------ 249 | 250 | 批量创建功能能够一次性创建一批配置相同的云主机,批量创建与原有创建功能一样,同样能够选择从源镜像克隆或者使用CloudInit进行实例初始化。在云主机列表中,点击"批量创建"按钮启用。 251 | 252 | .. image:: images/3_batch_create.png 253 | 254 | 批量删除 255 | ------------ 256 | 257 | 云主机列表界面,点击进入批量模式,就可以同时选中多个实例,一次性删除。 258 | 259 | .. image:: images/3_batch_delete.png 260 | 261 | 批量停止 262 | ------------ 263 | 264 | 云主机列表界面,点击进入批量模式,就可以同时选中多个实例,一起停止。 265 | -------------------------------------------------------------------------------- /docs/make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | pushd %~dp0 4 | 5 | REM Command file for Sphinx documentation 6 | 7 | if "%SPHINXBUILD%" == "" ( 8 | set SPHINXBUILD=sphinx-build 9 | ) 10 | set SOURCEDIR=. 11 | set BUILDDIR=_build 12 | set SPHINXPROJ=QuickStartGuide 13 | 14 | if "%1" == "" goto help 15 | 16 | %SPHINXBUILD% >NUL 2>NUL 17 | if errorlevel 9009 ( 18 | echo. 19 | echo.The 'sphinx-build' command was not found. Make sure you have Sphinx 20 | echo.installed, then set the SPHINXBUILD environment variable to point 21 | echo.to the full path of the 'sphinx-build' executable. Alternatively you 22 | echo.may add the Sphinx directory to PATH. 23 | echo. 24 | echo.If you don't have Sphinx installed, grab it from 25 | echo.http://sphinx-doc.org/ 26 | exit /b 1 27 | ) 28 | 29 | %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% 30 | goto end 31 | 32 | :help 33 | %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% 34 | 35 | :end 36 | popd 37 | -------------------------------------------------------------------------------- /docs/platform.rst: -------------------------------------------------------------------------------- 1 | .. platform . 2 | 3 | .. contents:: 本章目录 4 | :depth: 2 5 | 6 | --------- 7 | 平台管理 8 | --------- 9 | 10 | Nano提供了一系列便捷的管理功能,用于简化管理员的日常运维工作。 11 | 12 | 仪表盘 13 | =========== 14 | 15 | Nano门户首页提供了整个平台级别的资源用量仪表盘,包含虚拟资源和物理资源的用量,便于随时了解系统负载情况,及时对资源进行扩充或者调整。 16 | 17 | .. image:: images/4_dashboard.png 18 | 19 | 管理员可以点击仪表盘,下钻查看资源池、Cell节点或者云主机实例的实时用量 20 | 21 | .. image:: images/4_instances.png 22 | 23 | 增加资源节点 24 | ============= 25 | 26 | 当系统负载较大时,可以通过添加新的资源节点,来扩充池内可用资源。 27 | 28 | 首先需要在新的服务器上部署并启动Cell模块,然后在资源池的节点清单中,选择"添加" 29 | 30 | .. image:: images/4_add_cell.png 31 | 32 | 在下来菜单中选择新装的Cell节点进行添加 33 | 34 | .. image:: images/4_select_cell.png 35 | 36 | 当资源池中Cell节点状态变为Online时,就可以承载新建的云主机实例了。 37 | 38 | .. image:: images/4_new_cell_status.png 39 | 40 | 41 | 构建模板镜像 42 | ============= 43 | 44 | Nano可以将任意云主机的系统磁盘制作成磁盘镜像,然后从镜像快速克隆出与原模板主机系统、软件一样的新实例,以便大幅度提升管理员部署实例的效率。 45 | 46 | .. image:: images/4_image_transport.png 47 | 48 | 要构建模板镜像,首先应该创建一个不含数据磁盘的空白云主机,然后通过加载系统光盘和网络方式安装好系统和软件。 49 | 50 | 以CentOS7为例,构建模板主机时,建议进行如下设置: 51 | 52 | - 设置模板主机名和默认用户密码 53 | - 默认启用网络并设置为DHCP获取地址 54 | - 安装acpid服务支持关机和重启操作 55 | - 安装qemu-guest-agent以支持实时密码修改、内存用量监控等功能 56 | - 使用yum更新软件版本 57 | - 如果需要使用Nano的Cloud Init服务对实例进行自动初始化设置,则需要安装cloud-init/cloud-utils组件 58 | 59 | 上述设置完成后,关闭云主机,通过"磁盘镜像" => "构建",进入镜像构建界面,在下拉菜单中选择模板云主机,点击创建 60 | 61 | .. image:: images/4_build_image.png 62 | 63 | 64 | 当镜像制作完毕后,你就可以在新建云主机时选择从该镜像克隆实例了。 65 | 66 | 用户管理 67 | =========== 68 | 69 | Nano提供用户、组、角色三个层级的权限管理,来满足团队对于安全内控的要求。 70 | 71 | Nano目前权限控制按照功能菜单来划分,一个角色可以选择可以使用的功能菜单列表;一个用户组可以拥有多个角色;用户登录后,根据所属用户组的角色来获得自己可用的功能。一个用户只能属于一个用户组。 72 | 73 | 角色权限 74 | ------------ 75 | 76 | 管理员可以创建多个角色,可以为每个角色设置其可以使用的功能菜单,对应用户登录后,系统会根据角色权限生成管理界面。 77 | 78 | .. image:: images/4_role.png 79 | 80 | 用户 81 | -------- 82 | 83 | 用户账户是登录管理平台必要的身份凭据,后续也会涉及到资源所属的管理。增加用户时,只需要在用户清单点击新建,然后输入用户信息即可。 84 | 85 | .. image:: images/4_create_user.png 86 | 87 | **请注意,新建用户虽然可以登录,但是必须加入用户组才能获得相应的菜单权限。** 88 | 89 | 用户组 90 | ---------- 91 | 92 | 用户组是权限管理的核心,一个用户组能够拥有多个角色,能使用的功能菜单为所有角色所属菜单的集合。 93 | 94 | .. image:: images/4_group.png 95 | 96 | 在用户组清单中,进入目标组的成员清单,点击添加,选择要加入该组的已创建用户。 97 | 98 | .. image:: images/4_add_member.png 99 | 100 | 添加成功后,该用户登录时就可以访问相应的功能菜单了 101 | 102 | 资源可见性 103 | ------------ 104 | 105 | 云主机实例、磁盘镜像和光盘镜像都是系统资源,默认情况下,系统资源仅能由创建者访问。管理员可以通过可见性设置,允许访问同一组内其他用户创建的资源,以便实现组内资源共享。 106 | 107 | .. image:: images/4_visibility.png 108 | 109 | 密码修改 110 | ------------ 111 | 112 | 已登录用户可以点击底部的按钮,修改自己的登陆密码 113 | 114 | .. image:: images/4_change_password.png 115 | 116 | 系统操作日志 117 | =========== 118 | 119 | Nano记录包括登录失败在内的用户操作日志,用于审计用户操作,排查系统故障。当日志过多时,也可以通过日志管理界面进行清除。在需要的用户角色里,添加“log”菜单即可。 120 | 121 | .. image:: images/4_opreate_log.png 122 | 123 | 版本升级 124 | =========== 125 | 126 | Nano所有模块使用go编译为二进制可执行文件,无需外部库依赖,配置和数据文件格式通常保持后向兼容,无需用户干预。 127 | 128 | Nano能够通过两种方式进行升级,启动Installer并且选择"4"可以进行自动升级,自动升级会根据用户输入的安装路径,检查已经安装模块进行替换,并且自动停止并重启运行中的模块,是推荐的升级方式。 129 | 130 | 当自动升级方式出现问题时,可以选择手动升级,只需要使用"./模块名 stop"停止运行中的模块文件,替换可执行文件后使用"./模块名 start"重新启动服务即可。 131 | 132 | 唯一例外是FrontEnd模块还包含前端页面文件,所以升级时,除了要替换可执行文件,还需要手工将页面和js脚本文件从发布包中复制resource目录下进行覆盖。 133 | 134 | 以升级到1.0.0为例,假定旧版本已经安装在/opt/nano目录下 135 | 136 | :: 137 | 138 | 下载并解压新版本 139 | $cd ~ 140 | $wget https://nanos.cloud/media/nano_installer_1.0.0.tar.gz 141 | $tar zxfv nano_installer_1.0.0.tar.gz 142 | 143 | 替换Cell模块 144 | $cd /opt/nano/cell 145 | $./cell stop 146 | $cp ~/nano_installer/bin/cell . 147 | $./cell start 148 | 149 | 替换Core模块 150 | $cd /opt/nano/core 151 | $./core stop 152 | $cp ~/nano_installer/bin/core . 153 | $./core start 154 | 155 | 替换FrontEnd模块 156 | $cd /opt/nano/frontend 157 | $./frontend stop 158 | $cp ~/nano_installer/bin/frontend . 159 | $\cp ~/nano_installer/bin/frontend_files/resource/. resource/ -Rf 160 | $./frontend start 161 | 162 | 163 | 164 | 网络变更 165 | =========== 166 | 167 | Core与FrontEnd使用指定地址为用户提供服务,所以当所在服务器IP发生变化时,需要修改config目录下的配置IP,然后重启模块完成变更。 168 | 169 | Cell模块通过组播协议和Core模块自动发现所在服务器地址并完成组网,所以当Cell服务器IP变化时,只需要重新启动Cell模块,后续地址变更、组网和实例网络调整由可以由系统自动完成,无需网络干预。 170 | 171 | 当整个平台整体迁移或者变更到完全不同的网络时,请首先调整Core模块的监听IP和组播信息,确保Core模块正常启动后,再启动Cell模块,完成新网络识别和自动切换即可。 172 | 173 | 故障迁移 174 | ========== 175 | 176 | 当计算资源池使用共享存储作为后端存储时,可以开启故障迁移(Failover)开关。功能开启后,如果Nano平台检测到某一Cell节点失联,会自动将该节点管理的云主机实例迁移到集群内的一个或者多个Cell节点上。 177 | 178 | .. image:: images/4_enable_failover.png 179 | 180 | 如果原实例设置了自动启动,则迁移完成后,系统会自动将实例启动进入服务状态。 181 | 182 | **如果失联Cell节点恢复并重新加入Nano集群,系统将自动清除该Cell上的所有实例,并将该Cell置于禁用状态,管理员需要手动重新启用节点。** 183 | 184 | 禁用节点 185 | ========== 186 | 187 | 默认情况下,Nano会在资源池中选择负载较低的活动Cell节点创建云主机实例,但是用户可以选择手动禁用Cell节点,来避免在该节点上分配新的云主机实例,便于进行维护或者控制节点负载。 188 | 189 | .. image:: images/4_disable_cell.png 190 | 191 | 禁用的节点上云主机依然正常运行和管理,不受影响。禁用节点可以稍后手动重新启用,恢复承接新实例。 192 | 193 | 多语言 194 | ======== 195 | 196 | Nano管理页面目前支持中文、英文两种语言,可以在界面开关切换,Nano会记住用户选项,只需选择一次,不用反复设置。 197 | -------------------------------------------------------------------------------- /quick_start_guide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/project-nano/quick-start/3b6855b41f908ba1a047586745fb74e3d165a231/quick_start_guide.pdf --------------------------------------------------------------------------------