如果我们将“云计算”概念简化为最基本的形式,我们可以说:
云计算无非就是能够通过互联网(使用网络浏览器或开发的应用程序作为“前端”,虽然不切实际,但有可能)从一个地方的计算机(服务器)运行应用程序并访问另一个地方的数据。
我的问题是,我需要做什么才能在世界任何地方运行程序和访问我家里的服务器机器上的数据? (只有一个用户,所以我认为不需要虚拟化)
我不想通过 StackExchange 上的问题成为云计算专家,只是想充分了解云计算背后的原理并可能在家里配置自己的云。
请不要推荐 AWS、Azure、Dropbox、Google Drive 等产品。我不会尝试使用第三方的云文件存储或云服务。我只是想了解云计算的工作原理,而不是寻求第三方解决方案的建议。
我对前端和后端开发有一些了解,因此我可以编写自己的非常基础和精简版本的 Dropbox 和/或访问文件和运行应用程序所需的任何东西,我只是不知道还需要什么才能在家中创建一个尽可能完整地满足“云计算”定义的云。对于这个练习,我想要运行的应用程序是我家庭服务器上的 C 和 C++ 应用程序。
答案1
不可比
云的定义似乎正在演变成一种主观观点。似乎我们想要的是,我可以从世界任何地方访问一台存储着我的文件的远程机器。
从我的角度来看,您无法在家中创建云,但您可以设置一个工作站,您可以从任何有文件的地点访问该工作站。
云背后真正的理念是虚拟化。由计算、存储和网络组成的硬件底层宣传该硬件以宣传创建自定义虚拟解决方案的平台。这种硬件的配置和宣传方式使得类似的家庭解决方案超出了经济承受范围。供应商提供的云内置了相当多的容错能力。容错能力本质上是平台底层硬件发生故障(故障)后平台继续正常运行的能力。这实际上意味着有多个交换机、路由器、服务器和存储设备宣传该平台,因此它可以经历多个硬件故障并继续运行。
本质上,你想要的是一台可以上网的电脑,里面有你的数据,你可以通过任何互联网连接访问它。这是一个很大的区别。
为了实现该访问:
在您的 PC/服务器上启用远程访问
- RDP(远程桌面协议,内置于 Windows 操作系统
- RDP 使用端口 3389
登录你的家庭路由器
- 为家用机器创建 TCP 规则
- 将您的公共 IP 地址映射到您的私有 IP 地址,记下您的公共 IP 地址
- 你的私有 IP 地址是你家用机器上的 IP
- 保存配置
- 测试配置。
- 从家里的其他互联网连接,打开远程桌面客户端,将公共 IP 地址放在可用字段中,然后尝试连接到家用机器。
还有其他问题需要考虑,例如家用机器的安全性和可用性。我可以说我不会这样做,原因有很多。我更喜欢经过审查的云解决方案的商业工具和功能,以确保安全性。
答案2
有宽带连接
设置动态 DNS,这样你就可以通过 DNS 访问你的家庭服务器,而不是通过不断变化的住宅 ISP
让一台服务器(始终在计算机上)运行应用程序,连接到面向 ISP 的路由器
传统的 LAMP 堆栈拥有众多可用于云的开源应用程序
您的应用程序可能会通过 HTTPS 交付。现在是 2019 年了,不要使用 HTTP。配置并安装 Lets Encrypt 证书。
非 HTTP 应用程序应使用加密和证书进行保护。
适当配置和强化服务器,以应对安全和驱动器故障问题
将适当的端口从面向 ISP 的路由器转发到您的服务器
强化路由器配置,防止攻击者干扰您的应用程序或家庭互联网