共计 4719 个字符,预计需要花费 12 分钟才能阅读完成。
概述
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 都是 独立 的存储空间。
disk:操作系统可以直接检测到物理磁盘,也可以检测到硬件 raid 虚拟化出来的磁盘,但是为了充分利用 zfs 的性能,应该将硬件 raid 设置成 直连(HBA)模式,直接暴露所有物理磁盘。
array:将物理磁盘进行任意组合,可以生成一个或多个软件阵列,可以是 mirror、raid 等模式。一旦阵列生成,组成阵列的磁盘 数量将不允许变更,只能对成员磁盘进行脱离、更换等工作。
zpool:将阵列进行任意的组合,可以生成一个或者多个 zpool,zpool 可以添加或者删除子阵列,zpool 的存储空间就是所有阵列存储空间的 叠加。
文件系统
有了 zpool 存储空间后,就可以构建文件系统了。
zfs 文件系统以 zpool 为根,以 树形结构 进行层级划分和管理,但是文件系统的属性(比如预留空间、权限、配额)可以有继承和依赖关系。
zfs 文件系统和虚拟机里面的文件系统很像似,但是不一样,zfs 文件系统的节点是一个 设备,需要挂载到虚拟机文件系统的一个目录树节点上,而虚拟机文件系统中的节点就是目录或者文件。最简洁的判别方法就是 zfs 文件系统不以 / 开头。
Smartos 网络层次
Smartos 作为虚拟化操作系统,必然要实现网络硬件的虚拟化,虚拟化的技术叫做 Crossbow,这里只简单的介绍一下。
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 口的区别。
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。
: