个人服务器架构简介

首先需要说一下服务器配置,只要你的服务器配置高于1核2G,均可使用该基础设施来管理你的个人服务器,你可以在服务中部署几个应用,并且把该服务器作为你的测试服务器来使用。但是你的应用过多,或者QPS稍大,可以相应地加强服务器配置。

现在来简述下一个低配置的个人服务器的基础设施架构图

docker compose architecture

<!--more-->

Traefik

架构图的最核心位置是 traefik,一个 Edge Router,它也是该基础设施的重点。

服务器内的所有应用服务,如 postgresredis 以及自己所写的应用服务,都与 traefik 置于一个网络下,它们共同组成了一个集群

以下是我使用它的理由

  • 热更新配置,无需重启
  • 自动服务发现与负载均衡
  • TLS/SSL 证书的自动生成
  • docker 的完美集成,基于 container label 的配置
  • 漂亮的 dashboard 界面

关于 traefik 可以参考文章 Traefik 简易配置及入门

请求路由

从图左侧可以看出,请求路由分为两大类。当然他们的路由规则都是通过 traefik 来控制

  • shanyue.tech 通过公有的域名提供公有的、可供互联网访问的服务。如博客,微信公众号开发,个人网站及后端服务等等
  • shanyue.local 通过私有的域名提供私有的、只供内部进群访问的服务,保证安全性。如数据库,redis等等

应用与服务

在图右侧,都是个人服务器里的应用,它们均是通过 docker-compose 部署。你可以在 shfshanyue/op-note:compose 中找到所有的配置文件

只需要 docker-compose up -d 即可启动

  • whoami: 一个用以测试的服务,测试负载均衡及路由匹配等
  • dns: 集群内 DNS 服务,给自己的私有域名 shanyue.local 做解析
  • openvpn:与个人笔记本搭建局域网,方便访问个人服务器上服务以及调试页面
  • postgres
  • redis

本章将会讲述如何部署它们以及它们的配置文件。不过在此之前,你需要对 docker 以及 docker-compose 了解一些,参考以前文章

  1. docker 简易入门
  2. docker compose 简易入门

私有服务

shanyue.local 路由所提供的服务都是私有服务,通过 dnsmasqopenvpn 在个人笔记本上进行访问。

监控

个人服务器自然也需要监控,如负载,CPU,内存,网络,磁盘等。如果你服务器配置较高,且中有重要应用在跑时可以使用 prometheusgrafana 搭建一套监控系统,但是作为一个轻量的个人服务器,这样就显得小题大做,而且消耗极其资源。

关于该云服务器的 metric 可以直接在阿里云的监控面板上进行查看。但对于轻量的个人服务器,可以使用 htopctop 两个简单的命令行工具来搞定

  • htop 监控进程指标
  • ctop 监控容器指标

htop
ctop

我是山月,可以加我微信 shanyue94 与我交流,备注交流。另外可以关注我的公众号【全栈成长之路】

如果你对全栈面试,前端工程化,graphql,devops,个人服务器运维以及微服务感兴趣的话,可以关注我

Image placeholder
Yaojj
未设置
  25人点赞

没有讨论,发表一下自己的看法吧

推荐文章
一文看懂web服务器、应用服务器、web容器、反向代理服务器区别与联系

课程推荐《web全栈开发就业班--拿到offer再缴学费--融职教育》 1.1.Web服务器概念与基本原理 1.1.1.Web服务器的历史1989年,互联网之父Berners-Lee向其雇主CERN提

SOA架构和微服务架构的区别是什么?

来源:rrd.me/fqdANSOA架构和微服务架构的区别首先SOA和微服务架构一个层面的东西,而对于ESB和微服务网关是一个层面的东西,一个谈到是架构风格和方法,一个谈的是实现工具或组件。1.SOA

访问 laradock 服务器内部 http 服务器

在laradock中创建了一个http服务器之后,在workspace容器中,通curl127.0.0.1:9588,可以返回helloworld。但是在本地,通过浏览器访问127.0.0.1:958

万字详解Oracle架构、原理、进程,学会世间再无复杂架构

学习是一个循序渐进的过程,从面到点、从宏观到微观,逐步渗透,各个击破,对于Oracle, 怎么样从宏观上来理解呢?先来看一个图,这个图取自于教材,这个图对于从整体上理解ORACLE 的体系结构组件,非

架构转型先行——金融业务场景下的新一代架构实践

  赵勇中国农业银行研发中心架构管理办公室主任工程师中国农业银行研发中心架构管理办公室主任工程师,十年以上金融行业信息化架构设计与管控经验。历经互联网金融、两地三中心、分布式核心银行等大型银行系统工程

数字转型 架构演进 2019中国系统架构师大会盛大召开

2019年10月31日~11月2日,由IT168旗下ChinaUnix社区主办的第十一届中国系统架构师大会(SACC2019)在北京隆重召开。自2009年举办以来,大会云集了国内CTO、研发总监、高级

阿里支付宝架构师:谈谈我眼中的高并发架构【好文】

来源:my.oschina.net/u/3772106/blog/1793561前言高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒杀活动,定时领取红包等。为了让业务可以流畅的运行并且

架构师眼中的高并发架构

前言高并发经常发生在有大活跃用户量和用户高聚集的业务场景中,如:秒杀活动、定时领取红包等。为了让业务可以流畅的运行并且给用户一个好的交互体验,我们需要根据业务场景预估达到的并发量等因素,来设计适合自己

微服务架构之「 服务注册 」

微服务架构是一个庞大复杂的工程,为什么说它庞大复杂呢?因为想要做好微服务,就必须先要建设好微服务所需的一系列基础设施和组件。我在前面的文章《架构设计之「微服务入门」》中已经初步介绍过了这些组件,包括:

微服务架构中如何构建一个数据报告服务?

场景描述在微服务架构中,每个微服务负责自己的数据库,微服务A是不允许直接连接微服务B的数据库进行操作的。现在有2个微服务,一个是订单服务,一个是用户服务。有一个数据报告的需求:生成一份包含用户信息的订

Python入门教程_3. Python 简介

在下面的例子中,输入和输出分别由大于号和句号提示符(>>>和...)标注:如果想重现这些例子,就要在解释器的提示符后,输入(提示符后面的)那些不包含提示符的代码行。需要注意的是在练习中遇到的从属提示符

Go编程语言教程_1.0. Go编程语言(简介)

介绍 Go是一种过程编程语言。它由Google的RobertGriesemer,RobPike和KenThompson于2007年开发,但于2009年作为一种开放源代码编程语言发布。程序通过使用软件包

Git教程_3.1 Git 分支 - 分支简介

几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。在很多版本控制系统中,这是一个略微低效的过程——常常需要完全创建一个源代码目录的副本。

Go语言高级编程_5.1 Web 开发简介

5.1Web开发简介 因为Go的net/http包提供了基础的路由函数组合与丰富的功能函数。所以在社区里流行一种用Go编写API不需要框架的观点,在我们看来,如果你的项目的路由在个位数、URI固定且不

基于Tcp协议与基于Http协议的RPC简介笔记

前言:之前对于RPC方面的学习多限于对RMI原理的学习,直到今天在看陈康贤前辈的《大型分布式网站架构-设计与实践》这本书的时候,才发现原来RPC可以基于TCP协议也可以基于HTTP协议(这里所说的TC

JavaScript基础之 DOM简介

JavascriptDOM(文档对象模型)是一个允许开发人员操纵页面内容、结构和风格的接口。在本文中,我们将理解什么是DOM以及如何用Javascript去操作它。本文还可以作为基本DOM操作的参考。

Vue生命周期挂钩简介

在本文中,我们来学习可用于VueJS工作流程的所有hooks。VueVueJS是一个非常先进的JavaScript框架,由尤雨溪和Vue核心团队创建,超过230个开源社区爱好者贡献了代码。Vue的用户

容器管理工具 ctop 简介

如果你经常在linux下工作,那你肯定对top以及它的增强版htop非常熟悉。如果说top是管理进程的,而ctop则是管理容器的。安装在centos下安装ctop$wgethttps://github

简介PWA与Service Worker

1.关于PWAPWA,全称Progressivewebapps,即渐进式Web应用。PWA技术主要作用为构建跨平台的Web应用程序,并使其具有与原生应用程序相同的用户体验。早在2014年,W3C就已经

【数据结构】 10_C++异常简介

C++内置了异常处理的语法元素try...catch... try语句处理正常代码逻辑 catch语句处理异常代码逻辑 try语句中的异常由对应的catch语句处理 try { doubler=

XSS漏洞简介

课程推荐《前端工程师--赠送8个商业项目--学习猿地精品推荐》XSS漏洞简介跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正

JavaScript 简介

JavaScript简介 让我们来看看JavaScript有什么特别之处,我们可以用它实现什么,以及哪些其他技术可以与其搭配产生奇妙的效果。 什么是JavaScript? JavaScript最初被创

微服务架构:拆分单体应用的难点

拆分单体应用为服务的难点从表面上看,通过定义与业务能力或子域相对应的服务来创建微服务架构的策略看起来很简单。但是,你可能会遇到几个障碍:网络延迟。同步进程间通信导致可用性降低。 在服务之间维持数据一致

微服务架构的四大金刚利器

Photo@ChristopherCampbell 文 | 孔凡勇概述互联网应用发展到今天,从单体应用架构到SOA以及今天的微服务,随着微服务化的不断升级进化,服务和服务之间的稳定性变得越来越重要,分