Category Archives: FreeBSD

最近升级服务器的一些笔记

最近新采购了一批硬件用于升级现有DevOps服务,相关的软件也都更新到较新的版本。本次升级比较顺利,没有遇到担心的兼容性问题,放一下配置供参考。

Storage Server

Intel Xeon E5-2603 v3
Supermicro X10SRL-F
Samsung ECC DDR4-2400 16GB x 4
Chelsio T520-CR
LSI SAS9217-8i
InnoDisk SSD 32GB
WD HUS726T6TALE6L4 6TB 7.2K SATA x12 (2 stripped raidz2)
Intel Optane 900p 280G PCI-E (as ZIL/SLOG)
Samsung 970 EVO PLUS 1TB M.2 (as L2ARC)
FreeNAS 11.2-U2

Virtualization Server

Intel Xeon E5-2699 v3 x 2
Supermicro X10DAi
Samsung ECC DDR4-2400 32GB x 8
Chelsio T520-CR
InnoDisk SSD 32GB
VMware ESXi 6.5 U2

Switch & Cables

UBNT ES-16-XG
10GTek SFP+DAC

Tips:

ESXi 6.5 U2 安装 Chelsio T520-CR 驱动
https://service.chelsio.com/beta/drivers/esx_2_0_0_32_uwire/Chelsio_UnifiedWire_ESXi_UserGuide.pdf

ZIL/SLOG
对于没有强制 SYNC WRITE 的场景,一点儿用处都没有。

MTU
9000 比 1500 性能好?未必!相反 9000 会带来额外的一些问题。

MPIO
iSCSI 实测可以跑满两根 10Gbps 。

Dell PowerEdge R510安装FreeNAS 9.10

计划将一台二手服务器(Dell PowerEdge R510) 改造为iSCSI-SAN/NAS,原配置如下:

  • Intel Xeon L5520 x2
  • 32GB DDR3 ECC
  • Dell PERC H700 RAID Card x1

ZFS建议直接控制硬盘,不建议通过RAID卡,以可以获得最佳性能和监控硬盘状态。H700这块卡不支持JBOD或“直通”模式,相反低端的H200可以通过刷新固件,成为纯HBA卡。当然如果用H700,也是有办法的:将每块硬盘都组成RAID-0;带来的问题是:ZFS无法直接读取硬盘的S.M.A.R.T信息,只能得到阵列的信息。

其它配件:

  • Dell PERC H200 HBA Card x1
  • Seagate ES.3 4TB 7200RPM/128M x6
  • SanDisk CZ33 16GB x1

STEP 1:更换H200阵列卡

Dell PERC H200 有两款:一款(备件号:47MCV)是带挡板给C1100、C2100机器用的,另一款(备件号:3J8FW)是不带挡板,但是在金手指旁有一个塑料卡扣,用于扣住PCI-E插槽的。R系列的机器用的就是不带挡板的型号,淘宝上购买时注意区分。

STEP 2:刷 IT Firmware

我参考了这篇文章:http://blog.michael.kuron-germany.de/2014/11/crossflashing-dell-perc-h200-to-lsi-9211-8i/comment-page-1/

主要几个步骤如下:

  1. 用Rufus制作一个FreeDOS的可启动U盘,将烧写程序、固件都拷贝进去
  2. 从U盘引导进入FreeDOS,运行sas2flash.efi -listall确认卡的Index
  3. 运行sas2flash.efi -c 0 -list记录下卡的SAS Address,后续要用到
  4. 擦除原来的固件和Boot ROM:sas2flash.efi -o -e 6
  5. 烧写Dell 6Gbps Firmware:sas2flash.efi -o -f 6GBPSAS.FW
  6. 烧写LSI P20 Firmware:sas2flash.efi -o -f 2118it.bin
  7. 重启,进入H200的配置界面可以看到Firmware的版本,厂牌也变成了LSI

STEP 3:安装FreeNAS

不再赘述,请参考 FreeNAS 官方文档。

DevOps环境搭建指南

维基百科上关于DevOps的定义:

DevOps(英文Development和Operations的组合)代表一种文化、运动或实践。旨在促进软件交付和基础设施变更软件开发人员(Dev)和IT运维技术人员(Ops)之间的合作和沟通。它的目的是构建一种文化和环境使构建,测试,发布软件更加快捷,频繁和可靠。

DevOps环境是由多种工具或者工具链组成,一般按交付过程包含以下部分:

  • 编码:代码编写、审查、持续集成
  • 构建:版本控制、代码合并、构建状态
  • 测试:自动化测试及测试报告
  • 打包:二进制仓库、Docker镜像仓库
  • 发布:变更管理、自动发布
  • 配置:基础设施配置和管理
  • 监视:性能监视、用户行为反馈

下面列举我在日常工作中用到的工具、环境,具体的安装、配置方法请参考官方手册或借助搜索引擎。

RouterOS

RouterOS(简称ROS)是一个基于Linux的软路由系统,我一般使用ROS的以下功能:

  • VLAN——可以区分公司内部的开发、测试、办公网络,保证研发环境网络的可用性
  • L2TP/IPSEC VPN——每个人都可以随时接入公司网络,方便在外调试
  • DNS——将公司内部的服务都通过域名进行访问,无需记忆IP地址
  • DHCP——配合PXE网络安装环境使用

VMware ESXi

虚拟化利器,不多介绍。机器加足内存就好。

FreeNAS

可靠的存储是其它服务的基础,我个人倾向于使用独立的SAN/NAS设备而不是服务器的本地存储。

主要原因有以下两点:

  • ESXi只支持高端的硬件RAID卡,成本高
  • 需要一开始就规划好每台机器的需求,没法共享

利用FreeNAS可以提供iSCSI Target给ESXi使用,同时可以给每个人都提供独立的Samba空间——通过Windows共享访问。

选择FreeNAS还有一个重要的原因就是ZFS。

OpenLDAP

OpenLDAP用来存放组织结构树及相应的权限,GitLab、MediaWiki、FreeNAS都支持基于LDAP的用户认证。

GitLab

GitLab提供了Git仓库、Code Review(通过Merger Request实现)、Issue Tracker等功能。

我认为GitLab相比传统的Git Server、Visual SVN等工具,最为实用的一点就是每个人都有自己空间的管理权限。

比如很多尚未立项的小项目或个人项目,需要版本控制但是又无必要托管在部门的仓库上,有了GitLab便可以在自己的一亩三分地上随便玩了。

GitLab-CI

GitLab配套的持续集成工具,一般用来编译、构建和运行自动化测试。

简单、够用,yml语法也很简单。

Docker Registry

Docker镜像仓库,从GitLab-CI打包好的包会直接Push进入registry。

MediaWiki

GitLab针对每个项目都有wiki功能,但是我们需要一个独立于项目的知识库,因此选择了MediaWiki。

PXE/Mirrors

由于我的工作都是基于Linux的,经常要安装不同的发行版本,在公司内部部署一台PXE安装服务是非常必要的。

PXE环境一般由DHCP、TFTP和HTTP这三个服务组合实现的,DHCP由ROS提供。

ShadowSocks

针对特殊国情而配备,租用一个海外VPS,然后部署ShadowSocks,再部署Privoxy,将socks5转换为http代理。