自建实体服务器

Foreword

打算自建服务器,完成一些内部的测试和使用,有些东西也需要内部验证,一些管理软件也都需要一个内部平台。

硬件选型

成本考虑,1手最新服务器买不起,所以上个老服务器,能用就行了,水平其实差不多的。

  • 机柜 Dell R7525
  • CPU 7H12*2
  • 内存 64G*12
  • 硬盘 7.68T*1
  • 阵列卡H745卡
  • 电源 双电2400w

价格26760 不含税

安装

有了服务器自然还需要机柜,又增加了一个80x60x100的机柜

image-20231103220519471

服务器一般可以使用拖板拖住服务器,也可以使用滑轨方便抽拉。

  • 滑轨又分静态和动态的,静态只能抽出来10cm左右,动态的可以完全抽出来

image-20231103222357103

有了这些还不够,还需要电源,一般都是使用PDU类型的电源

image-20231103221018877

  • 注意总功率,一般可能单电源就2400w了,双电源就4800w,多台服务器,这个数量就上去了
  • 接头高功率都是单独引线过来的,不能直接用默认的线材

风扇

服务器启动真的是飞机起飞,就跟涵道电机一样,呜呜的

想要服务器声音小一点,可以通过DELL的设置,直接修改风扇速率

风扇可以通过iDRAC的API进行控制,下面是一个通用的控制工具

https://github.com/cw1997/dell_fans_controller

image-20231103223743182

这里有更高级的版本,可以独立控制每个风扇

https://github.com/zzccchen/DellEmcFansController

image-20231109185605728

使用风扇控制需要开始IPMI,具体操作在这里

https://zhuanlan.zhihu.com/p/157796567

顺带看了下,他还写了一个温度和内存监控程序,也挺好的

https://github.com/zzccchen/DellEMCThermalMonitor

iDRAC

Integrated Dell Remote Access Controller (iDRAC) 专为实现安全的本地和远程服务器管理而设计,可帮助 IT 管理员随时随地部署、更新和监视戴尔 PowerEdge 服务器。

iDRAC也要一个独立网线接入,接入以后就可以进入服务器远程访问和操作

  • 远程开关机:在iDRAC Web界面或命令行界面中,管理员可以实现服务器的远程开关机、重启和冷启动等操作。
  • 远程监控:iDRAC可以提供服务器的实时监控信息,包括温度、风扇速度、硬盘健康状态等,帮助管理员及时发现和解决潜在问题。
  • 日志查看:iDRAC记录了服务器的事件和日志信息,管理员可以查看这些日志以进行故障排除和问题分析。
  • 虚拟媒体:通过iDRAC,管理员可以将本地计算机上的光盘或ISO映像文件连接到服务器,实现虚拟媒体的加载和启动。

iDRAC也有API接口,可以用python之类的语言写一些自动化管理的脚本

系统虚拟化

有了硬件基础以后,还需要一个好用的系统方便做虚拟化,想折腾就上PVE,想稳定就用ESXi

PVE

PVE,全称Proxmox Virtual Environment,虚拟机内核是KVM,主要还是Linux系统,扩展能力很强,对应要求操作的人也很高

ESXi

ESXi是VMWare旗下的虚拟化组件之一,界面比较清晰,简单易用,扩展性差一些。

VMWare系列用的比较多的话,实际创建虚拟机之类的操作都非常类似,简单好用。

硬件直通

简单说,就是如果虚拟化会严重损失硬件性能,比如显卡、硬盘、网卡等,为了防止损失,所以可以指派某些硬件和虚拟机构成硬件直通,这样可以最大程度利用硬件性能。

目前普遍看到的是ESXi硬件直通大概率会遇到点问题,需要找到各种解决办法才行,PVE的硬件直通大部分都可以配置好以后直接使用。

显卡直通

显卡直通的配置,这里以RXT A5000为例

image-20240328140328590

首先ESXi中的PCI设备中,找到新加入的显卡,然后将二者从直通禁用模式变成活动模式

image-20240328140420091

对应的虚拟机,要增加一个PCI设备,选择刚才的显卡,显卡模式也改成自定义设置

image-20240328140458345

虚拟机选项中选择高级-配置参数,增加3个参数

pciPassthru.use64bitMMIO=TRUEpciPassthru.64bitMMIOSizeGB=64hypervisor.cpuid.v0= FALSE

到这里外部的配置就已经可以了

启动虚拟机,先看是否检测到了

image-20240328140707489

大概率看到的是这样的一个有问题的设备,这是还没安装驱动的状态

https://www.nvidia.com/Download/index.aspx

驱动下载从官方即可,需要注意不要选择消费者类型,而是Data Center /Tesla 类型,虚拟机这类的驱动和消费者是不一样的,安错了可能会不识别

image-20240328140845376

image-20240328140741025

安装完成以后,RTXA5000已经可以正常识别了

RDP GPU加速

默认的RDP是没有显卡支持的,所以是类似集显的实现方式,如果用渲染或者一些3D软件,可能会很卡,最简单的办法就是直接RDP启用显卡加速

image-20240328143422000

【菜单键+R】打开运行,输入gpedit.msc回车即可打开本地组策略编辑器。

以下配置均在组策略中修改,请定位到【计算机配置】->【管理模板】->【Windows组件】->【远程桌面服务】->【远程桌面会话主机】

1、【连接】中,把【选择RDP传输协议】修改为【已启用】,并且将选项改为【使用UDP或TCP】。

2、【远程会话环境】中,把【将硬件图形适配器应用于所有远程桌面会话服务】改为【已启用】。

3、【远程会话环境】中,把【为远程桌面连接使用WDDM图形显示驱动程序】改为【已启用】。

4、【远程会话环境】中,把【为远程桌面连接设置 H.264/AVC 444 图形模式的优先级】改为【已启用】。

5、【远程会话环境】中,把【为远程桌面连接的 H.264/AVC 444 硬件编码】改为【已启用】。

6、【远程会话环境】中,把【对RemoteApp使用高级RemoteFX图形】改为【已启用】。

7、【远程会话环境】中,把【配置 RemoteApp 数据的压缩】改为【已启用】,并且将选项改为【已优化为使用较少网络带宽】。

8、【远程会话环境】中,把【配置 RemoteApp 自适应图形的图像质量】改为【已启用】,并且将选项改为【低】。

9、【远程会话环境】中,把【配置 RemoteApp 自适应图形】改为【已启用】,并且将选项改为【优化使用最低网络带宽】。

以上完成以后,管理员命令行中输入 gpupdate /force 来更新整个策略组

image-20240328143620952

内网使用可以提高帧率

新增注册表,DWMFRAMEINTERVAL类型是DWORD,数值十进制15,代表的就是60FPS

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations

而如果写的是十六进制的8,代表的就是120+的FPS,拉满,这样GPU的默认消耗会稍微高一点

image-20240328151615181

OpenGL

RDP打开一些软件可能需要OpenGL支持,RDP本身不能调用OpenGL,这个需要Nvidia的专用驱动,下载这个驱动有一堆注册信息

https://github.com/elmagnificogi/MyTools/blob/master/rdp/nvidiaopenglrdp.exe

我直接放到我的仓库里,方便下载

ESXi基础配置

ISO安装包上传

image-20231109011945733

比较简单,可以直接通过数据存储浏览器上传各种镜像

image-20231109012100222

然后就能在虚拟机的设置中选到对应的iso了

NTP

image-20231109004946261

NTP首先把当前系统时间改到接近真实的时间,然后再填入NTP服务器,使用网络协议时间

保存以后发现NTP依然无法启动,下面却提示成功了

image-20231109005109857

这里需要去服务中手动启动ntpd

image-20231109005134297

再回去刷新,发现时间已经同步并且启动了

image-20231109005214467

开启iDRAC和IPMI

iDRAC需要重启服务器的时候按F2进入BIOS,然后开启iDRAC,设置一下对应的网络即可

再通过ip就可以进入iDRAC的管理页面

image-20231109185308478

开启IPMI,然后就可以通过一些管理软件直接操控了

风扇管理

https://blog.vimc.cc/2020/10/18/%E5%9C%A8ESXi%E4%B8%8A%E6%89%8B%E5%8A%A8%E6%8E%A7%E5%88%B6%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%A3%8E%E6%89%87/

ipmitool

ipmitool可以直接安装在ESXi上,但是目前最新版的是不支持ESXi 8.0的,8.0风控提高了,导致实际无法使用了

https://vswitchzero.com/ipmitool-vib/

此方案行不通

IPMICFG

https://www.cnblogs.com/ispace/p/17261196.html

DellEmcFansController

读取风扇、cpu等信息没有问题,但是控制风扇就会发现没有起作用。

image-20231109190804418

手动试了一下命令,发现直接使用命令会提示权限不足

实际上已经是IPMI和iDRAC的管理员身份了,依然提示权限问题

看了一下能用的都是iDRAC 3.0甚至更老的版本,我是7.0版本,所以不能用了。

复制虚拟机

复制虚拟机非常简单,进入数据存储浏览器

image-20240301093939524

先给新虚拟机创建一个目录

image-20240301093946465

然后把要复制的虚拟机vmx和vmdk文件复制过来

image-20240301093955084

然后直接注册这个新的虚拟机

image-20240301094004924

虚拟机里就能看到一个同名的虚拟机出现了,所有的设置是一模一样的

常见问题

分配了一个64核的虚拟机,但是实际进去以后发现只有2核心

分配了一个32插槽,每插槽2线程的虚拟机,实际进去以后只有2核心4线程

造成这种问题都是因为超分配了,前者是由于实际逻辑核心不够分配了,所以直接分配成了2核,而后者是实际2插槽cpu,无法分配成32插槽的,只能分配成2插槽N核的模式

代理

如果是正规机房应该是有多线网络的,甚至专门走国外VPN之类的分流也是有的,而我这里就不太行了,想要给服务器一个透明代理没啥好的办法,只能说外面再套一层OpenWRT,这样把服务器直接连到OpenWRT这里,通过OpenWRT分流管理。

  • RouterOS,自身是没有V2ray或者是SS、Clash等代理工具的,甚至SOCKS代理部署起来都有点麻烦

淘宝看到的软路由私聊都是不能说OpenWRT的,这个受到管控了,要聊只能加V私聊

image-20231121233353556

软路由目前老一些的就是各种3代甚至2代的i3笔记本的板子改出来的软路由或者是N系列、J系列低功耗U做的集成的板子

image-20231121233600307

最后选了一个稍微新一点的J6413的系统,安装到机柜里配合使用

image-20231121233813192

后来发现其实如果知识单纯的需要一个旁路由作为代理网关的话,直接用EXSi开启一个OpenWRT的虚拟机就行了,没必要外置一个软路由。软路由也有一个好处,就是和服务器本身解耦了,不至于服务器挂了,连带着旁路由都直接没了,风险低了

ESXi 安装OpenWRT

安装OpenWRT其实非常简单,只要有个PE的U盘,进去以后IMG写盘工具.exe将OpenWRT的镜像直接写入磁盘即可

透明代理

透明代理则非常简单,直接开启ShadowSocksR Plus+就行了,剩下只要在需要代理的客户端中设置成静态IP,网关修改为OpenWRT的地址即可。

还有一种方式可以让全局都是用透明代理,直接在主路由的DHCP服务中,将网关指向Op地址即可

image-20231201233107798

到这里基本就可以无感翻墙了,还是很不错的

注意关闭软路由上的动态伪装,否则主路由的NAT 端口映射在软路由这边不生效

image-20231202170911710

OpenWrt证书

直接在服务中的uHTTPd中上传证书即可

image-20240123154209829

完成以后需要重启uHTTPd服务即可使用域名访问

证书

image-20231201233954649

登录EXSi的时候总是提示不安全,这里导入通用证书解决这个问题

img

这种方式基本100%会报错

image-20240123151242523

还是要通过SSH进行证书更新

先启动SSH

image-20240123151342987

然后通过ip和22端口连接,登录的账号和密码与网页相同,注意xshell需要用Keyboard Interactive方式输入密码

image-20240123151430992

登录以后进入以下目录替换证书

cd /etc/vmware/ssl

保存原始证书

mv rui.key rui.key.bkpmv rui.crt rui.crt.bkp

然后通过SFTP上传新的证书,依然是rui的名称即可

重启http服务,让证书生效

/etc/init.d/hostd restart/etc/init.d/vpxa restart

注意不要通过IP登录,使用域名可以看到证书已经生效

image-20240123151825994

UPS

发现群晖的NAS和ESXi在偶尔断电的时候,还是会受到影响,最好还是接一个UPS,防止硬盘被干挂了

UPS要长时间支撑,价格要上天,所以一般都是支撑几分钟,监控程序发现断电以后对整体进行关机处理

山特UPS配合Winpower,可以在ESXi等系统上直接使用,监控到断电以后关闭全部虚拟机,然后关机

服务器双电4800W,加上需要支持未来的拓展,山特选了一款C6K,支持5700W,几分钟供电,用来关机什么的还是够的

https://www.santak.com.cn/page/santak-downloads.html

vCenter Server

默认的ESXi用的管理界面是ESXi Host Client,这是比较简单的管理界面,基础功能都有了,但是想要一些复杂的自动化的功能,这里就做不到了。

image-20240124151243148

比如监控看到更长时间的情况,就必须要上vCenter Server

vSphere是VMware的整体解决方案,它里面包含了vSphere Client、ESXi、vCenter Server

vSphere Client是管理员用来管理ESXi的客户端

vCenter Server则是一个数据中心管理服务,可支持多个ESXi主机加入其中,做资源虚拟化,有类似ESXi管理界面的一个全功能的管理端,很多自动化的功能都在这里

安装了vCenter Server来完成一些自动化的工作,不过这个服务器的要求有点点高,tiny版本,14g内存,接近500g硬盘,其他的配置选项更离谱。

image-20240124153243120

image-20240124153217386

vCenter的使用逻辑和ESXi Host就有一些区别了,他是基于数据中心-集群-主机-虚拟机的架构,而之前使用的ESXi Host只是这里的一个主机而已,所以vCenter需要先建立数据中心,然后创建集群,在将之前的主机添加进来,整个vCenter才有资源可以使用

FQDN,Fully qualified domain name,完全限定域名,又称为绝对领域名称(absolute domain name)、 绝对域名,能指定其在域名系统 (DNS) 树状图下的一个确实位置。简单说就是主机名+域名,比如machine1.esxi.localhost,machine1是虚拟机名称,esxi.localhost就是这个虚拟机所在的主机的域名,vSphere都是基于这种域名进行访问和管理的

疑难杂症

无法添加主机

安装完vCenter以后出现了一个奇怪的问题

vCenter无法将ESXi主机加入管控,提示无法连接,vCenter本身就是安装在这个ESXi上的

经过debug发现:

  • vCenter无法ping通ESXi
  • vCenter可以ping通路由以及子网内任何一个设备
  • ESXi可以ping通vCenter以及子网内任何一个设备

这就非常诡异了,DNS查过了也都正确,就是ping不通,也就造成了添加主机无法成功

https://community.spiceworks.com/topic/953549-can-t-ping-esxi-host-from-vcenter-but-from-other-machines

经过查找有类似的情况,也都是vCenter ping不通安装的ESXi,最后都是通过重启ESXi来解决的,真实原因都没有解释

证书失效

有了vCenter以后ESXi的证书都是由vCenter进行管理,同时vCenter不支持通配符证书,必须用单域名证书,这就导致了你得买两个证书的情况,非常傻。

快照

image-20240126192702571

有了vCenter以后就可以创建调度任务,自动执行一些事情,比如这里自动生成快照

VMware Workstation

如果要把原本本地的虚拟机移动到服务器上,不能直接copy vmx和vmdk文件,服务端是无法识别对应的硬盘的。

最简单的方法就是VMW连上服务端,然后使用管理中的上载功能,这样会自动转换文件格式,服务端就能正常启动了

image-20240304152638379

image-20240304152704196

还有一种方式是导出OVF文件,这样在服务端再导入也可以

vGPU

一般来说在虚拟机这里使用显卡直通比较多,用虚拟显卡的反而比较少,目前虚拟显卡性能损失大概在5%左右,还是能接受的。

虚拟显卡比较适合给云游戏、云桌面一类使用,我这里虽然不用这几个,但是还是有一些对于显卡的需求,还是想能做到虚拟给任何一个机器使用。

vGPU是有显卡限制的,一般来说分为2代,第一代Grid 1.0是K1和K2,他们不需要授权服务,直接可以虚拟化,但是毕竟年代久远,性能已经相对很弱了。第二代Grid 2.0开始部分专业卡加入了,这种卡一般都是通用类型的,既能适合神经网络计算、也适合图像渲染

https://www.nvidia.cn/data-center/graphics-cards-for-virtualization/

vGPU价格和限制

https://www.nvidia.com/content/dam/en-zz/Solutions/design-visualization/solutions/resources/documents1/Virtual-GPU-Packaging-and-Licensing-Guide.pdf

一般来说分为vAPPs,vPC,vWS,vCS,每个适用的场景不同,他们支持的显卡或者显存大小也不同

image-20240314094552767

根据每种场景,收费方式也不同,这里的CCU是每个虚拟机,所以如果是云游戏或者云桌面,这个CCU就非常高了,而且还是订阅制的

image-20240314094434780

vGPU试用

https://www.nvidia.cn/data-center/free-trial-virtual-gpu/

通过这里申请vGPU试用资格,需要填写一些信息和邮箱,等待了接近2周还没收到资格…只好转向淘宝

显卡安装

image-20240325182142736

R7525的显卡是安装在Riser上的,默认应该是有4个Riser,看起来就是个PCIE转接卡,后续的计算卡都是需要独立供电的,对应的接口如图所示是12pin的,所以需要一个转接线,这个要单独买

image-20240325182323154

然后插好就可以开机了

授权服务器

驱动安装

测试

Summary

iDRAC的工具还是比较少的,IPMI tools也停止维护了,想要更多的还是得自己写

Quote

https://blog.csdn.net/weixin_42930696/article/details/128642633

https://post.smzdm.com/p/aqm7d5pk/

https://it.sohu.com/a/706181660_121748409

https://www.python100.com/html/NX4HDQ8854F9.html

https://jingyan.baidu.com/article/5d6edee2004690d8eadeec8a.html

https://zhuanlan.zhihu.com/p/157796567

https://blog.csdn.net/yjun89/article/details/131344940

https://blog.csdn.net/qq_38844263/article/details/128699337

https://post.smzdm.com/p/az6p6ern/

https://www.cnblogs.com/guangdelw/p/17340637.html

https://www.bilibili.com/video/BV1sm4y1u787/?vd_source=fe2e37e9c6518671631012d39f18a581

https://community.spiceworks.com/topic/2306716-wildcard-ssl-certificate-installation-vcenter-7

https://blog.csdn.net/shida219/article/details/131363989

https://blog.csdn.net/skyew/article/details/136534913

https://learn.microsoft.com/zh-cn/troubleshoot/windows-server/remote/frame-rate-limited-to-30-fps

THE END