家里的内网开发环境(概述)

标签: 内网 开发 环境 | 发表时间:2020-03-27 16:54 | 作者:明城
出处:https://www.gracecode.com/

家里的开发环境越来越复杂了,所以需要复盘和回顾下目前的情况。这个得先从头开始说起:

Stage 1

Stage 1

应该说很上古的时期,和大部分开始的需求一样,需要离线跑些脚本。那时候我简单选用了台树莓派跑 NPM 的些代码。在很长的一段时期内它能很好的满足需求,因为只需要跑些爬虫和通知性质的脚本。

Stage 2

Stage 2

随着任务的增加,树莓派的性能瓶颈越发的明显,因为 NPM 的项目基本上都是些零散的小文件,tf 卡在 4k 的读取方面性能非常的弱。这时候开始考虑使用台「正儿八经」的 x86 小机子用来跑繁重的任务,技术栈这块也切换到了 Golang 以及 Python,而树莓派则退居二线作为通知和监控使用。

再后来数据量越来越「庞大」,达到了几百个 G 的级别,M93P 的硬盘容量明显不够了(SSD 256G、机械硬盘 1T)。加上对于数据安全性方面的考虑,购买了两块 2T 的硬盘以及 USB 的磁盘阵列盒子。

Stage 3

Stage 3

随着数据量的增加,我很快发现数据这块有了冷热的区别。同时,部署的环境也越来越复杂,虽然使用 Docker 搭配 docker─compose 也能很好的完成集成和部署,但在各个应用之间来回的切换 docker─compose 的目录让人感到非常的头痛和麻烦。

所以这时候在操作系统层面加上了 KVM 虚拟机这层,然后再再虚拟机上面跑 Docker。本来考虑上 K8S,但是其实各个应用之间是相对独立的关系,因此还是以单独虚拟机为单位分类各个应用的类别。

Stage 4

Stage 4

不过数据还是在不断的增加,我考虑到 USB 的磁盘阵列盒虽然能够满足目前的需求,但是横向的扩展性以及应用和数据分离做得还不够彻底, 因此将数据这块单独部署了台 NAS 去处理

组装这台 NAS 其实走了很多弯路,硬件方面一开始用的是台盘位的 PC 机箱,但是很快发现非常不合适放在家里,一来机箱的体积太大了二来功耗也非常的大但是只能最多安装两到三块的硬盘。

和很多「垃圾佬」一样考虑过星际蜗牛的主机,四盘位的机箱加上 J1900 的四核低功耗的处理器,很适合用来做网络存储。但是还是考虑到数据的重要性,还是选择了单独的四盘位的机箱以及性能相对好点的 AMD 集成主板作为平台使用。

存储的选型方面一开始 使用 CentOS + 阵列卡的形式,后面切换到了 FreeBSD + 直通卡配合 ZFS 的方式,各有优劣和千秋这里不展开详细的说明。

Stage 5

Stage 5

于是乎硬件和虚拟机的节点越来越多,怎么去治理和监控就成了纠结的事情了。还有因为国内网络环境的问题,所以我在网络这块考虑使用了 N1 作为旁路由和透明网关作为国际网络加速。 原先的树莓派也替换为 N1 同时部署了 Grafana 以及 Prometheus 作为节点的监控和报警

服务发现这块选用了 Consul 和 DNSmasq 汇聚,这样子每个节点启动自举的时候,就可以在内网环境拿到对应的域名而不用去找 IP 地址,很方便。

Stage 6

Stage 6

基础环境搭建好了以后,逐渐的装了 Syncthing、Gitea、Drone 等用于数据同步以及测试代码的托管和 CI。由于测试数据的量逐渐的收敛了下来,所以很多时候 Runner 在空闲的状态,但随时可以调用很方便了。

硬件方面主要是有些补足的设备,例如我后面又购置了台瘦客户机装了 FreeBSD 用来实时给 macOS 做时间胶囊备份使用。

同时, 买了两台 UPS 以及写了些对应的脚本,用于在断电的时候主动关机。

@TODO

@TODO

前几天从 @yff666 那边得到块星际蜗牛的「遗产」,组了台双盘位的 Raid1 小 NAS 主机,打算用来存冷数据,不过这块的数据需求还是要看目前的业务情况。

监控这块我觉得还有比较短板的地方,例如如果家里网络不通则无法收到通知邮件了,这里想考虑使用台 Android 手机配合 adb 发送短信,后面想好了再继续做吧。

- 待续 -

相关 [内网 开发 环境] 推荐:

家里的内网开发环境(概述)

- - 無標題文檔
家里的开发环境越来越复杂了,所以需要复盘和回顾下目前的情况. 应该说很上古的时期,和大部分开始的需求一样,需要离线跑些脚本. 那时候我简单选用了台树莓派跑 NPM 的些代码. 在很长的一段时期内它能很好的满足需求,因为只需要跑些爬虫和通知性质的脚本. 随着任务的增加,树莓派的性能瓶颈越发的明显,因为 NPM 的项目基本上都是些零散的小文件,tf 卡在 4k 的读取方面性能非常的弱.

嵌入式环境搭建之开发板软件环境

- - CSDN博客推荐文章
转载请注明出处:http://blog.csdn.net/ruoyunliufeng/article/details/44995039. 开发板软件环境:uboot(用官方给的,后续我会考虑分析移植).                             内核(本来想用官方的降低难度,但给的不支持nfs,简单更改下吧,后续考虑移植精简新内核).

苹果Xcode 4开发环境发布

- 阿贡 - ITeye资讯频道
伴随着iOS 4.3的发布,苹果推出了新版开发环境Xcode 4. Xcode 4最早于去年6月的WWDC 2010开发者大会上宣布,经过近一年的测试后才终于问世. Xcode 是为Mac、iPhone、iPad、iPod touch开发软件的必备工具. Xcode 4包含Xcode IDE、Instruments调试工具、iOS模拟器以及最新版Mac OS X/iOS SDK.

安装MSYS+MinGW开发环境

- jipeng.sun - tombkeeper的和谐Blog
安装MSYS+MinGW开发环境.     SourceForge上的MinGW项目里有很多软件包,这些软件包之间互有重叠,相当混. 实际上,要构建一个MinGW 的开发环境,只需要安装下面四个.     下面是这些软件包的说明:.     一个Unix仿真Shell环境,类似Cygwin. 安装后会提示定位MinGW的目录,也可以.

利用Docker构建开发环境

- - UC技术博客
最近接触PAAS相关的知识,在研发过程中开始使用Docker搭建了自己完整的开发环境,感觉生活在PAAS时代的程序员真是幸福,本文会简要介绍下Docker是什么,如何利用Docker来搭建自己的开发环境(本文主要是面向Mac OS X),以及期间所遇到的一些坑和解决方案. (本文会要求你对PAAS、LXC、CGroup、AUFS有一定的了解基础,请自行Google ).

eclipse配置nodejs开发环境

- - CSDN博客云计算推荐文章
首先说明一下本人的开发环境,个人兴趣爱好问题,这边使用的很多环境都是基于Linux系统下做的,这次也不例外. 前提条件:NodeJs已经在系统中正确安装. 1、下载安装eclipse,地址: http://www.eclipse.org/downloads/. Eclipse Standard 版本即可.

mac 开发环境常用技巧

- - 操作系统 - ITeye博客
话说Mac一般来讲不需要什么重装啊,不过世事无绝对啊,有时候人就是喜欢作死. 比如前几天的我~~~算了,具体情况就不说了,反正就是作死,Mac系统出了问题. 本来想着用Time Machine恢复一下就得了,也省事. 不过仔细想了一想,很想自己安装一遍(博主的折腾精神有时候很是让自己“佩服”),然后就开始了Mac系统重装之旅.

使用 Node.js 作为完整的云环境开发堆栈

- jiaosq - IBM developerWorks 中国 : 文档库
本文探讨 Node.js,这是一个用于 UNIX 类平台上 V8 JavaScript 引擎的事件驱动的 I/O 框架,设计这一框架的目的是为了编写可伸缩的网络程序,如 Web 服务器. 本文通过一个完整的例子说明如何在 Node.js 中构建聊天服务器,分析了这个框架以及围绕它的生态系统(包括云计算产品),并对这个框架进行了总结.

Kinect for Windows SDK开发初体验(一)环境配置

- Pei - 博客园-首页原创精华区
万众期待的Kinect for Windows SDK终于在广大开发者的千呼万唤中发布了beta版,作为历史上销售最快的消费电子产品,早就有无数人想将其用于其他领域了. 微软虽然在硬件接口上制造了一点小障碍,但并没有对Kinect的输出做任何加密. 于是,基于Kinect的各种应用层出不穷,也有开源社区提供了针对Kinect的USB驱动程序,比如OpenKinect等.

Ubuntu11.10 64Bit版上的Android 4.0 开发环境搭建

- 华子 - CSDN博客推荐文章
据说Android以后新版本只支持64bit版本开发,所以搭建一个64bit系统的Android开发环境为将来的Android4.0 及更高版本 开发打好基础. PC 一台(支持64bit),内存最好4G,硬盘最好1T,CPU最好4核心,显卡无所谓,光驱一个. 1.2.1 Ubuntu 11.10 64bit desktop版光盘一张.