今年年初的时候由于自己买的阿里云服务器性能不够(主要是家境贫寒),导致部署在阿里云服务器上的一些服务虽然勉强能跑起来,但是CPU和内存各种爆表,而且服务常常因为没有内存而变得异常难受,后期虽然升级了服务器的内存,但这也不是个长久之计.所以我就在想有没有比较好的解决方案.

其实一开始我也想着物理服务器虚拟化,但是由于物理服务器噪声比较大,如果长时间运行可能会影响我的生活.并且外网访问要不就是内网穿透,要不就是公网IP,内网穿透效率太低,公网IP北京地区申请好像比较困难. 后来想到老家买的楼房一直空着,而且老家的电费和申请公网IP比较简单,所以就准备在自己买的楼房上部署一台服务器用于日常的开发研究.

搭建服务器过程时间轴线比较长,从三月份到五月份服务器整体服务总算可以正常运转了.
所以这一篇博客算是一个目录吧,主要想把自己的搭建服务器的经过,遇到的问题,服务器运维相关问题做一个目录和总结.


公网IP


第一步,首先要确认你安装的网线是否有公网IP,大部分情况下安装网线是没有公网IP的.怎么判断自己是否有公网IP?主要是通过百度"IP",然后记录搜索到公网IP,然后进入路由器查看"Wan口IP",如果两者一样,则为公网IP,不一致则为内网IP.其实安装网线默认都是没有公共IP的,因为IPv4的资源比较紧张...

如果没有公网IP,我们该如何用正确的姿势获取公网IP呢? 首先是运营商问题,现在安装光纤网线的主要有三大运营商,移动,联通,电信.移动是二级运营商,要公网IP?那是不可能,我见过网上不少大佬去申请公网IP,但是很少有人以移动作为案例去申请.所以建议去联通和电信中选一家吧,整体来说还是电信资源比较多.

申请公网IP,B站视频相关也不少,主要的话术就是家里需要安装监控,需要远程查看监控.切记不能说安装服务器和网站,这些都是运营商禁止的,申请之路其实不太好走,因为有些客服根本没有接触过这一业务,或者说是他认为你是要安装专线,因为专线是有静态IP,而你要申请的是动态公网IP,至于动态公网IP和静态公网IP有什么区别,我们后期会说到.有的客服也可能说没有该项业务.反正有时候会被踢皮球.这都是常态.

你要问我是怎么申请的?我主要是碰到了一个专业的安装师傅,在安装之前我就再三和安装师傅确认公网IP的问题,他确认是可以申请的,在我们那是有资源的,所以在申请IP期间师傅全程帮忙,安装宽带当天晚上公网IP就可以正常使用了.所以找一个靠谱专业的安装师傅还是很有必要的,非常感谢那位安装师傅~~~~.

关于上面的动态公网IP问题,家庭宽带所能申请的公网IP都是动态的,他不能像阿里云等云服务器一样公网IP是固定不变的.它会在一定周期内发生改变.这时候你就会想如果不知道IP我们该怎么访问我们机房设备?这就需要使用到 DDNS(动态域名解析)了.DDNS后面会说到.


机房环境


机房环境的部署,首先要确认服务器部署房屋是否满足机房的基本条件.干燥,通风,无尘等都是机房的基础条件.我部署的机房整体环境就如下图所示了,比较空旷,散热也不错,就是可能会有灰尘.

服务器如果长期处于潮湿环境,电子元器件会受到腐蚀,服务器的寿命会大大降低.很有可能一年的服务器跑半年就干废了.通风也是必要的条件,服务器长期运行会CPU,电源热量会很高.如果机房是一个密闭的空间,散热不好容易造成CPU掉帧,进而很容易造成火灾,烧毁服务器.得不偿失.无尘也挺重要的.灰尘太多也会会影响服务器正常散热.减少服务器寿命.

另外服务器运行起来之后会有最少30分贝的噪音,如果放在靠近卧室,很容易影响人的日常作息.在北京时,我曾经测试服务器时,感觉在我那么出租屋里简直和轰炸机一样,难受的不行.噪音这一点一定要注意.

由于我在北京不能经常会机房进行一些运维服务,所以我就需要一套闭环的运维系统.这里我选择了米家的智能家居.烟雾报警系统,监控摄像头,温湿度传感器,智能插座等.这样既有监控还有控制,形成一个可持续的闭环.

通过温度检测可以控制风扇是否启动来给服务器散热.虽然这套散热系统比较简陋,但是聊胜于无嘛~整体来说只有一台服务器,所以也基本够用的.

除了这些,灭火器也是必不可少的,因为我可能常年不在老家,所以机房中准备了自动灭火器和手动灭火器,这样保证发生火灾可以做第一手的处理.

机房环境基本就是这样的,整体来说,虽然简陋,但是整体够用了.


网关


在公网IP获取完成之后,需要配置网关.首先是已经部分,由于光猫的硬件性能并不是很高,所以在这种长期运行环境下,如果光猫还兼职类似端口转发、DDNS等功能的话,很有可能就宕机了.所以我们要把繁重的功能下放软路由,光猫只负责把光信号转化为电信号.光猫运行的模式为桥接模式.

先看一下我的机房整体的网络拓扑图如下所示.整体来说还是比较简单的,像DDNS,端口转发,PPPoE拨号都是由软路由进行实现,大大减少光猫的压力.


PPPoE拨号

正常来说PPPoE拨号有由路由器来进行的,虽然现在人们上网很少再像十几年一样需要拨号上网了.但是PPPoE拨号的操作还是存在的.一般都是安装师傅帮你账号密码配置到光猫中,然后由光猫自动拨号上网.但是我们现在要做的是就是把PPPoE拨号放到软路由进行实现.接下来我们就来看一下怎么正确设置软路由的PPPoE拨号.

  • 首先需要把光猫设置为桥接模式,这一步如果是初装宽带的话可以让师傅帮你来做.当然了,其实很多时候师傅可能不愿意帮你,因为你一旦搞不好就要让师傅上门维修,所以在网上听说很多师傅不愿意给你改桥接模式.如果是自己改的话,那首先不管是有线还是无线连接到光猫上,一般访问 192.168.1.1 就能访问光猫的管理界面了,输入密码就可以正常进入了.当然了,如果行不通可以直接翻找光猫背面一般都会有管理界面地址和管理界面的账号与默认密码.由于现在我在北京,所以没法访问到路由器,这里就不给大家演示了.这里是百度百科的光猫改成桥接模式教程,大家可以参考一下.

  • 如果初装宽带可以咨询安装师傅你的PPPOE账号和密码,另外你还可以打电话给对应的运营商来咨询你的PPPoE账号.有了账号密码,并且这时候光猫已经设置成桥接模式了,这时候我们就需要设置我们的Openwrt软路由了,或者其他路由器都有PPPoE拨号设置.这里就以Openwrt软路由系统为例.

  • 首先进入Openwrt软路由管理界面,然后 "网络 → 接口 → Wan口",设置如下,模式设为PPPoE,然后账号密码则为宽带拨号的账号和密码.然后点击 保存&应用 即可保存应用,重启软路由,等待几分钟即可正常的接入互联网了.PPPoE拨号设置基本就算完成了.


DDNS

在非专线的条件下申请公网IP的是动态的,它会在一定周期内进行IP地址变更.不管你是用公网IP,不可能你每一次都手动修改已经配置好的公网IP吧,那有没有什么解决方案?这时候就需要 DDNS 了.

DDNS(Dynamic Domain Name Server,动态域名服务)是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析。

整体的网络拓扑图如下所示.

下面,我们就接着网络拓扑图来说一下如何基于Openwrt和阿里云实现 DDNS.

首先,我们需要购买一个域名,域名的购买过程这里这里就不过多叙述了.购买域名成功之后,我们直接打开阿里云控制器域名模块,如下图所示.

找到我们购买的域名,然后找到域名的解析,点击进入.

点击 添加记录 按钮,添加一条新的解析记录.具体填写方式如下所示.输入完成点击添加即可.

添加完成之后,正常显示一条解析记录.如下图所示.

接下来我们就需要在阿里云权限管理中心申请权限账号,用于Openwrt能正常访问阿里云的域名解析模块.首先,先通过控制台的"产品与服务 → 监控与管理 → 访问控制",进入RAM访问控制模块.如下图所示.

然后 点击 "人员管理 → 用户",点击 创建用户 按钮来创建拥有DNS解析的用户.如下图所示.

进入创建用户页面,登录名称和显示名称按照你自己的习惯填写,然后访问方式选择 编程访问 方式.验证完身份之后就可以完成用户账号的创建了.

创建完成之后如下图所示. AccessKey IDAccessKey Secret 是非常重要的信息,下面的Openwrt配置过程会使用到,并且 AccessKey Secret 只会出现一次,要不然到时候在账号详情页面重新生成也是可以的.

接下来就是给当前生成的管理账号设置管理权限.选中当前账号,然后点击账号下面的 添加权限 按钮进入添加用户权限页面.

如图搜索 AliyunDNSFullAccess ,然后点击搜索结果,添加到权限列表,最后点击 确定 ,给当前账号添加DNS管理权限.

到此账号就已经创建完成了.然后我们进入Openwrt管理系统.点击 "服务 → 动态DNS" 进入DDNS解析模块.具体如下图所示.

点击默认生成的 myddns_ipv4 一行最后的 修改 按钮,对其进行配置修改.如下图所示.

具体配置如下所示,配置完成之后,点击保存与应用,完成配置.返回到DDNS列表页面.

在列表页面一定要确定 "启动" 选项已经勾选.这样DDNS就可以进行正常的解析工作了.


静态IP分配

默认情况下,在内网/局域网环境下,设备的内网IP都是由路由器直接分配的,其内网IP都是不是固定,并且内网IP都是有租用期限,过期后会重新获取新的内网IP.这时为了防止设备内网IP随意改变,我们需要把设备MAC地址与IP绑定在一起,这样每一次该设备连接到路由器上都有固定的内网IP.

静态IP分配在Openwrt上实现比较简单,接下来我们就看一下如何实现.首先在菜单栏中找到 "网络 → DHCP/DNS" 并打开.如下图所示.

然后找到 静态地址分配 模块,点击 添加 按钮添加新的分配记录.字段说明如下所示.

主机名MAC 地址IPv4 地址租期IPv6 后缀(十六进制)
主机名可自我定义设备的Mac地址需要绑定的IP地址填写 infinite无需填写

示例可看下图.

操作完成之后点击 保存&应用 保存所有所有操作.


端口转发

在网络中想要一个程序服务,我们访问一般都是 "IP + 端口" 或者 "域名 + 端口", IP和端口关系可以理解为 你要去理发,那么你需要去文华路街道的某个理发店,那么文华路街道就是IP,理发店就是端口.而不是文华路街道的烧烤店,小吃店,这些店你都不能去理发,或者你去别的街道,可能连理发店都没有.所以你要寻找网络上的一个程序服务,你就需要知道 "IP + 端口".由于家中申请的公网IP 默认 80 443 8080 都是用不了的,当然了还有可能是其他端口都是封掉的,所以你是用不了这些端口的,这一点需要注意.这些就是端口的基本常识了.

那么什么是端口转发呢?正常的来说,你在外网环境下是不能直接访问一个内网的服务(例如你在学校是不能直接访问到家里台式机搭建的HTML网页的).这是由于多层NAT的缘故,这个可以百度了解一下.这里就不过叙事了,但是我们如果想实现外网访问内网应该怎么办呢? 这里由于已经有公网IP的情况下,我们可以使用端口转发来实现外网访问内网服务了.端口转发主要作用是把外网的端口转发到内网中某个设备端口,这样就可以实现外网访问内网了.

接下来,我们就看一下如何在Openwrt设置端口转发.

首先我们找到Openwrt中 端口转发 的设置入口. 网络→防火墙→端口转发 ,具体如下图所示.

进入Openwrt的端口转发页面之后,在下面找到新建端口转发的模块,然后我们按照端口转发规则填写即可.

例如我们想要外部81端口转发到Openwrt的80端口上用于访问Openwrt的管理界面.栗子如下图所示.

名称协议外部区域外部端口内部区域内部IP地址内部端口
路由器(可随意定义)TCP+UDPwan81lan192.168.1.180添加

完成点击添加即可端口转发.

为了整个链路的可控性,我建议添加的端口转发规则有以下几条.各位童鞋可自行参考.

  • Openwrt软路由管理界面端口转发
  • 物理服务器Esxi管理界面(服务器已虚拟化)
  • 物理服务器SSL端口访问(服务器已虚拟化)
  • 虚拟机SSL端口访问(服务器已虚拟化)

注意: 在端口转发的规则中,我们应该遵循使用什么端口就转发什么端口,不能任意开启端口转发,否则会更容易受到网络攻击.


这时候,我们完成了 DDNS + 端口转发的配置工作,假设我们DDNS绑定的域名为 www.xxxx.com,端口转发添加如上示例: 外部81端口→192.168.1.1的80端口. 那么我们就可以通过 www.xxxx.com:81 来访问Openwrt路由器的管理界面了.


至此,网关的 PPPoE拨号 、DDNS 、 端口转发已经全部叙述完成了,我们接下来看一下物理服务器相关设置.


物理服务器


我现在机房的物理服务器是联想的RD540 2U服务器,有8个2.5寸硬盘位.接下来我就简单说一下遇到的一些问题.

硬盘Raid阵列

遇到第一个问题就是硬盘空间问题,由于二手服务器的缘故,默认的是安装了一个300G的2.5寸硬盘.虽然平常运行一些服务是完全没有任何问题,但是当我们需要存储文件就不太够用了,这时候就需要加装硬盘了,虽然服务器已经有多个硬盘位,但并不是插上硬盘就可以正常使用,这时候就需要使用做Raid阵列.具体什么叫Raid阵列可以看下面的解释说明.

什么叫Raid阵列?

磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。

磁盘阵列是由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。

磁盘阵列还能利用同位检查(Parity Check)的观念,当数组中任意一个硬盘发生故障时,仍可读出数据。在数据重构时,可将数据经计算后重新置入新硬盘中。

关于Raid磁盘阵列,它不单单是把多个硬盘连接成一个硬盘组这么简单,它有一个非常强大的功能就是数据安全,例如你组装一个Raid5阵列,那么当一个硬盘损坏了,你也可以使用其他硬盘来恢复这个损坏硬盘中的数据,减少不必要的数据丢失风险,说到这里就不得不说Raid阵列的几种形式了,具体如下表格所示.

Raid阵列形式特点
RAID 0没有任何冗余和数据安全措施,简单把硬盘连接在一起组成硬盘组,读写速度最快,例如一个300G的硬盘,另外一个300G的硬盘,组成Raid0阵列的话硬盘容量为600G,但是一旦一块硬盘损坏,所有数据都无法恢复,安全性很差.
RAID 1镜像阵列,提供冗余和数据安全,但是容量是对半砍的,读写也没有Raid0快,比较适用需要较高安全性的数据存储,例如一个300G的硬盘,另外一个300G的硬盘,组成Raid1阵列的话硬盘容量为300G.
RAID 5性价比较高,有一块硬盘存放校验码,Raid5硬盘阵列如果有其中一块硬盘损坏是可以通过其他硬盘共同计算出硬盘内容,但是如果同时坏了多块硬盘,则不能实现数据恢复.
RAID 10Raid 10是一个Raid 1与Raid0的组合体,它继承了Raid0的快速和Raid1的安全.我这边暂未用到,假设有A,B,C,D四块硬盘,那么组成Raid10的情况可能是 A 与 B 组成Raid1镜像阵列, C 与 D 组成Raid1镜像阵列,然后[A B] 与 [C D] 组成Raid0阵列.

我给服务器做的就是Raid5硬盘阵列. 由于服务器具体组装Raid阵列方式是由自己服务器厂商决定,所以这里就不过叙述了,大家可自行百度.

联想(ThinkServer) RD650做硬件 raid5 配置


虚拟化

通常来说物理服务器性能都是比较强悍的,如果只安装一个系统可能会有点大材小用了,为了充分榨干物理服务器的硬件性能,我们通常对物理服务器进行虚拟化.这里我使用的VMware Esxi虚拟机.


虚拟化:制作VMware Esxi的安装U盘

物理服务器的虚拟化首先我们需要制作 VMware Esxi的安装U盘 .

参考文章:制作 ESXI6.7 U盘安装盘并用其安装

我们需要准备如下材料.


首先打开下载安装好的UltraISO.

点击菜单栏中的文件→打开,找到Exsi镜像文件,鼠标选中,点击打开。

接下里就需要对U盘进行格式化,执行步骤为 点击菜单栏中启动→选择需要格式化的U盘→点击操作界面的格式化.

格式化完成之后,如下图所示.

接下来,我们就需要设置便捷启动,这里的步骤为 选择便捷启动→写入新的驱动器引导扇区→Syslinux,如果不设置便捷启动,则不能正常启动引导.

然后我们点击写入即可把镜像写入到U盘中.

等待片刻即可刻录成功.具体如下图所示.

写入完成后,不要急着拔出U盘,打开U盘,找到根目录下的isolinux.cfg文件,修改为syslinux.cfg. (PS:这一步我当时做的时候没有也可以正常引导安装,怕有遗漏就先写上)


虚拟化:安装VMware Esxi

参考: 一台新的DELL服务器安装VMware ESXi 6.7服务器安装配置详细步骤图文

Esxi的启动盘已经刻录完成,接下来我们就给物理服务器安装Vmware Esxi系统.

首先, 我们需要把制作好的U盘查到物理服务器上,然后启动服务器进入Bios页面设置第一启动项为U盘启动,设置完成之后,服务器会自动进入引导选择界面,选择Esxi 6.7, Enter确定即可.

启动完成之后等待进度条的加载.如下图所示.

等待进度条完成之后,看到机器的CPU、内存的基本信息.

进入Vmware Exsi的欢迎界面,按Enter继续.

在该安装许可协议界面,按下F11同意协议进行下一步.

Vmware Exsi系统会自动检查可用存储设备,之后在该界面选择安装的磁盘位置,回车以继续.

选择 US Default (美式)键盘,如图所示.

输入Root的管理者密码,注意密码最少为7位,输入完成之后按回车继续.

配置完所有信息后来到如图界面,按下F11以开始安装Vmware Exsi.

安装过程如下所示.

安装完成后,在该界面回车以重启服务器主机.

重启完成之后,如果已经是连接网线的话,我们就可以通过页面的路由器分配IPV4地址或者IPV6地址进入管理界面(当然了,你的电脑或者手机必须和服务器在统一局域网内);如果没有连接网线的话,就可能出现如下图的情况,我们没法这时候我们就需要进入系统配置页面进行修改.

如果出现上面的情况,我们需要先连接上网络再按 F2 进入界面,当然了这里需要输入Root账号和先前设置,如下图所示.

进入配置主菜单之后,我们选择 Configure Management Network 就可以进入Esxi的网络配置界面了.

选项作用
Configure Password配置root密码
Configure Management Network配置网络
Restart Management Network  重启网络
Test Management Network使用ping测试网络
Network Restore Options  还原配置
Troubleshooting Options 故障排查选项
View System Logs查看系统日志
Reset System Conf iguration ESXi出厂设置

进入网络配置菜单之后,选择 IPV4 Configure ,对IPV4进入配置.

进入 IPV4 Configure 中可以修改IP地址,可以配置静态IP,也可以使用DHCP自动分配的IP地址.

配置设置完成之后,我们就按 Enter 完成配置,然后根据弹窗提醒按 Y 保存配置.

然后如此设置完成之后,我们就可以通过在同一网段下的设备访问 Esxi 显示的 IPV4 地址进入访问了.如下图所示.

至此, Vmware Esxi系统就算安装完成了.


虚拟化:在Vmware Esxi中安装Centos

准备好 Centos系统 的 ISO镜像文件,这里可以去网上寻找,资源较多. 由于我安装的是Centos8,所以我就推荐一下网上比较常见的Centos8镜像下载地址

阿里CentOS8下载

清华CentOS8下载

CentOS8官网下载

下载完成Centos镜像文件之后,进入Vmware Esxi管理界面,我们首先需要把ISO镜像传到服务器的硬盘中. 通过 存储→数据存储浏览器 进入硬盘数据存储浏览器中.如下图所示.

这里最好新建一个目录,用于存储ISO镜像文件,这里我就创建了一个OSS文件夹,然后选中文件夹,点击上载,把ISO镜像文件传输达到服务器的硬盘中,由于我已经传输过了,这里就不演示传输的过程了,效果图如下所示.

Centos的镜像文件上传成功之后,我们就开始安装Centos系统. 通过 虚拟机 → 创建/注册虚拟机 创建Centos虚拟机系统.

在新建虚拟机界面,没有什么可说的, 默认选中创建新虚拟机,直接点击下一页即可.

接下来,我们需要给Centos虚拟机配置基本系统,包括虚拟机名称(可自定义),兼容性,操作系统类型以及系统版本,具体如下图所示.

然后就是选择存储,这里是选择存储的位置,硬盘容量后期都是可以调整的,无需担心.没有问题的话,直接点击下一页即可.

在自定义配置界面,像CPU核心数、内存容量、硬盘容量可以根据自己的实际需求情况来调整.这里最重要的就是CD/DVD驱动器要选择 数据存储ISO文件,然后选择我们上传的Centos镜像文件.这里就不过多叙述了.没有问题的话,直接点击下一页即可.具体如图所示.

一切准备就绪之后,最后选择完成即可.

创建完成之后,在虚拟机列表中选中刚刚创建的虚拟机,然后点击打开电源.如下图所示.

启动电源之后,默认选中 Install Centos Linux 8.0, 按 Enter 开始安装Centos8.0.

过程看机器的来,具体如下所示.

我这里安装的是有界面的Centos8.0,当所有准备完成之后进入语言选择界面,当然是 中文 → 简体中文( 中国🇨🇳 ) 了. 选择完成之后,点击继续进行下一步操作.如图所示.

安装信息摘要 中有多个选项需要配置,包括安装目的地、软件选择、时间与日期、网络与主机、根密码.
具体如下图所示.

安装目的地 我们需要选择系统安装的硬盘空间,一般我们都是默认就OK了.如有需求可以自定义,配置完成之后,我们点击完成即可.如下图所示.

软件选择 如果我们想要Centos有可视化界面,那就选择 带GUI的服务器,否则就选择 服务器 即可,这里要说明一下,带有GUI可视化操作界面的服务器会损耗一部分性能用于GUI显示等处理操作.可以根据自己的服务器性能进行选择,这里我就选择 带GUI的服务器,如下图所示.

时间和日期 时间日期就选择亚洲 上海就OK了,这里没有什么可说的,具体如下图所示.

网络与主机名 选择对应的网络,然后打开即可,这里由于我使用的是网线连接的物理服务器,所以是以太网.主机名的话,大家也可以根据自己的喜好自定义,具体如下图所示.

Root密码 根据自己的情况设置Centos虚拟机对应的Root密码.

最后点击开始安装即可.

等待Centos8.0安装完成即可.过程如下所示.

安装完成之后,点击重启系统即可.

然后就需要同意许可证协议,如果想要除了Root用户添加别的新用户,可以在这里进行添加.配置完成之后,点击 结束配置 完成配置.

然后就是一系列的初始化配置,一路下一步即可.

前面如果没有设置用户的话,这里仍然会让你创建一个新的用户,首先我们先输入用户名和用户全名,如下图所示.

然后就是设置密码.

一切准备就绪就可以进入Centos系统了.

一般都是Centos8.0都是默认开启SSL登录的,默认端口为22.你可以直接使用上面设置的Root账号和密码进行登录.这里就不过多叙述了.

至此,Centos虚拟机就算安装完成了.


结语


到此,机房的软硬件环境就算搭建完成了,从公网IP到Centos虚拟机的安装一条龙全流程,如果有需要的请拿走,如果有任何问题或者疑问,可以随时联系骚栋,谢谢大家的观看.



IT界无底坑洞栋主 欢迎加Q骚扰:676758285