SmartOS基础知识及Triton部署简述

过儿古墓 2018-06-08

概述

SmartOS是一个开源的Unix系列操作系统,从Solaris10分支出来,由Joyent公司开发。 SmartOS拥有非常强大而简便的虚拟化功能,非常适合用来做云计算。

而Triton则是Joyent开发的,基于Smartos系统的一套开源云平台管理软件,可以用来管理私有云。

Smartos详细资料请参考:https://wiki.smartos.org/display/DOC/Home。

Triton详细资料请参考:https://docs.joyent.com/private-cloud。

Smartos入门

为了方便理解接下来的安装配置过程,先介绍一些Smartos相关的入门知识。

Smartos是驻内存的操作系统

说Smartos是驻内存的操作系统,是因为它本身不在磁盘上保存任何操作系统运行相关的文件,只将配置、虚拟机等信息持久化到磁盘上。所以每次启动时,整个系统都会被全部加载到内存中运行。而根据加载源的不同,就有两种加载方式

1.USB启动。将操作系统写入到U盘中,并让服务器从本地U盘启动。

2.PXE启动。将操作系统放到某个服务器中并提供PXE启动服务,其他的服务器就可以通过网络启动了。

因此,操作系统更新时,也从来不用打任何补丁,直接从最新版的系统重新启动即可。

zfs文件系统

Smartos使用zfs作为本地的文件系统,而zfs本身并不是Smartos独有的,其他Linux发行版也可以使用。zfs和其他的文件系统相比有诸多好处,这里就不一一陈述了,但是简单的介绍下zfs的结构。

存储池

zfs首先从物理磁盘开始构建存储池,叫做zpool,服务器的存储空间可以由一个或者多个zpool组成,每个zpool都是独立的存储空间。

SmartOS基础知识及Triton部署简述

disk:操作系统可以直接检测到物理磁盘,也可以检测到硬件raid虚拟化出来的磁盘,但是为了充分利用zfs的性能,应该将硬件raid设置成直连(HBA)模式,直接暴露所有物理磁盘。

array:将物理磁盘进行任意组合,可以生成一个或多个软件阵列,可以是mirror、raid等模式。一旦阵列生成,组成阵列的磁盘数量将不允许变更,只能对成员磁盘进行脱离、更换等工作。

zpool:将阵列进行任意的组合,可以生成一个或者多个zpool,zpool可以添加或者删除子阵列,zpool的存储空间就是所有阵列存储空间的叠加

文件系统

有了zpool存储空间后,就可以构建文件系统了。

SmartOS基础知识及Triton部署简述

zfs文件系统

zfs文件系统以zpool为根,以树形结构进行层级划分和管理,但是文件系统的属性(比如预留空间、权限、配额)可以有继承和依赖关系。

zfs文件系统和虚拟机里面的文件系统很像似,但是不一样,zfs文件系统的节点是一个设备,需要挂载到虚拟机文件系统的一个目录树节点上,而虚拟机文件系统中的节点就是目录或者文件。最简洁的判别方法就是zfs文件系统不以/开头。

Smartos网络层次

Smartos作为虚拟化操作系统,必然要实现网络硬件的虚拟化,虚拟化的技术叫做Crossbow,这里只简单的介绍一下。

SmartOS基础知识及Triton部署简述

physical nic:一台物理机上可以插多张物理网卡,每个网卡上可以有多个物理网口,每个物理网口都有一个全宇宙唯一的mac地址。

aggregation:聚合网口由多个物理网口聚合而成,一个物理网口只能加入一个聚合网口或者不聚合,聚合网口通过一个名称来进行标识,物理网口直接用mac进行标识。

virtual switch:虚拟交换机的名称在Smartos里叫做nic tag,每个虚拟交换机能且只能配置一个聚合网口或者物理网口,一个聚合网口或者物理网口可以属于任意多个虚拟交换机。

global zone和vm:global zone就是物理机的根操作系统,但是应该理解成一个特殊的虚拟机。虚拟机通过给每个虚拟网卡指定nic tag来接入虚拟交换机,每台虚拟机都必须指定一个主要网卡作为默认路由。

硬件需求

Smartos和Triton的运行对硬件有些需求,并不适用任意硬件,不过也没有太多苛刻的地方,这里简单概括下:

Smartos:

1.64-bit x86架构,推荐Intel的CPU,开启VT-x功能支持kvm虚拟化。

2.能够USB启动以及能够PXE启动,第一台机器只可能USB启动,之后的机器可以PXE启动。

3.只支持本地存储,尽量避免使用硬件RAID,将RAID控制器设置成HBA直连模式。因为要使用zfs文件系统。

4.推荐Intel的网卡,至少两块网卡。

Triton:

1.由于Triton是安装在主节点(head node)上并控制从节点(compute node)的,所以需要至少两台服务器,推荐三台。Triton不会允许用户在head node上创建虚机,同时要求主从节点的硬件配置是一样的。

2.64G内存以上。因为head node要运行很多服务。

3.至少三块同样大小的磁盘,有1T实际可用空间,推荐奇数块磁盘,推荐保持内存磁盘比为1:20。

详细请参考:https://docs.joyent.com/private-cloud/install/hardware-selection。

硬件参考:

我们主要是拿来做开发测试机,不需要特别好的性能,所以选择了戴尔R730,质量比较好。

CPU是E5-2630V4*2,遵循推荐。

内存16G*8,够用。

硬盘1T*4,SAS盘7200转,3.5寸的损坏率比2.5寸的小。

板载千兆网口没什么好说。一块Intel的X520双口万兆网卡,遵循推荐。

启动

先从网上下操作系统,由于Triton是集成到Smartos里面一并安装的,所以不需要先下Smartos系统,直接装Triton就行了。注意:Joyent一再强调付费用户必须找他们要,虽然和免费版没什么区别。

curl -C - -O https://us-east.manta.joyent.com/Joyent_Dev/public/SmartDataCenter/usb-latest.tgz

然后怼到U盘里去就行了,mac很方便,注意别填错磁盘号,还要确保U盘有至少8G空间。使用其他操作系统的同学就参考官方文档吧:https://docs.joyent.com/private-cloud/install/installation-media。

diskutil list

sudo diskutil umountDisk /dev/disk2

tar -xvzf usb-lastest.tgz

sudo dd if=usb-release-20170302-20170303T225707Z-gc64b017-4gb.img of=/dev/rdisk2 bs=1m

sudo diskutil eject /dev/disk2

然后把U盘插到服务器上,按照上述需求配置好BIOS,启动。

安装head node在进入GRUB时选择Live 64,然后根据提示安装即可。

Triton head node网络配置

Triton head node的安装过程中,网络配置是最复杂的。

基于Smartos的网络层次,Triton对网络有一些定制化的需求,配置中提到了三个网络,这里的网络指虚拟交换机以及连入虚拟交换机的虚拟网卡

1.admin。这个网络本身就是Smartos的默认网络,Smartos要求这个网络不能打vlan标,而且不能和其他网络共享(物理或聚合网口独享)。Triton用它来做内部管理,所有核心服务都会在这个网络上,并且加了一个额外限制,不能连接外网。此外需要预留18个ip地址给Triton用。

2.external。这是一个常用网络名称,Triton将它定义成有外网访问的网络,并且可以被共享。此外需要预留6个地址给Triton用。

3.underlay。高级服务用的,暂时忽略。总之不能连接外网,而且要MTU9000,可以共享。

至于说防火墙,总结来说就是不要乱墙。

由于head node安装时就需要去网上下一些服务的镜像,所以请确保external网络是连通外网的。

此外,Triton暂不支持以交互方式配置链路聚合,需要手动修改最终的配置文件,详细资料请看:https://docs.joyent.com/private-cloud/install/headnode-installation。

注意head node会被自动将域名设置成headnode,这个是不能修改的。

交换机配置

根据Triton的网络要求,理想情况下的网络拓扑应该是这样的。读者需要先自学一下交换机的access口和trunk口的区别。

SmartOS基础知识及Triton部署简述

1.为admin网络准备一个千兆交换机,因为只有一些基础服务需要这个网络,所以一个子网就足够了,端口可以都配置成access vlan 1。由于不需要外网,可以不连上行口

2.为external网络准备一个万兆交换机,一方面可以和fabric网络复用,另一方面也可以测试万兆的性能。注意这些网络都是复用同一个物理网口的。而每个物理网口可能会出各种子网和vlan的包,毕竟所有流量都要从这个交换机出去,所以每个物理口都配置成trunk pvid 1 permit all的模式,然后把ip都放在vlan口上作为网关。最后给上行物理口一个ip,并且把默认路由指到路由器上和上行口直接连接的端口的ip就行了(注意这两个ip一定要在一个子网,不然是不通的)。

3.由于大多数机器还有一个ipmi口用来做控制的,一般这个口也是千兆的,转接到万兆上没有必要,所以也可以接在千兆上,选一个与admin网络不同的子网和vlan,把端口配置成access,然后给vlan配置一个子网内的ip作为网关,再仿照万兆连出去就行了。由于没有给admin那些口配置网关,所以它们仍然是访问不了外网的。

安装Compute node

先在head node上把adminui(用户界面)和imgapi服务连通外网(配置一个在external网络中的虚拟网卡)比较好。然后把cloudapi服务也顺手装了。

sdcadm post-setup common-external-nics

sdcadm post-setup cloudapi

安装compute node和安装head node要使用同一个系统制作的U盘,只是进入GRUB时选项不一样,这次选择compute node。

实际上他们启动的方式也不一样,head node是直接从U盘读取系统的,而compute node是使用head node里面安装好的PXE服务通过iPXE启动的,所以compute node直接从板载PXE启动而不使用U盘也可以。只是官方对iPXE有特殊修改,所以推荐每台服务器都配备一个时刻插着的U盘。

compute node的配置都是由head node统一管理的,所以安装时不���配置任何东西,但是进入登录界面后,需要在head node上进行初始化,这时候装了用户界面就爽了,点点就行,否则要用命令行。

sdc-server setup -s 715020ea-11e1-11e4-bb8a-002590e4edcc "hostname=node1"

uuid是新的compute node的uuid,hostname默认是admin的网卡mac,还是修改一下比较愉快不然以后不知道是哪台,不过修改域名只有一次机会,别乱来。

结尾

现在就可以开心的通过用户界面来操作这几台服务器了,云平台的功能这里就不介绍了。

值得一提的是,nic tag在每台服务器上都是单独的,千万记住给每个compute node都配置好external网络,不然在这个网络中生成虚机时会找不到符合条件的compute node。

相关推荐