编程 || 网络规划
这是系列文章第二篇。
上一篇重点说了解决问题和完整理解。其中解决问题是一个需要在日常工作中时时联系的能力。我亲眼见到一些资深级别的同事,不论是业务或是技术,在遇到问题是都会首先产生对抗的情绪,觉得问题是个麻烦。
实际上,问题是价值,我们遇到问题,如果你能冲在最前面解决问题,那你就是有价值的人。长此以往,能力会越来越强,薪资也会越来越高。
我的文章和其他的技术教程不太一样,一是因原本每个人知识体系就不一样,二是希望以一种更通俗的方式让你理解。
但是有一点可放心,我带领团队,实实在在地为一个估值过亿的科技公司搭建了所有的系统,并且目前为止运转良好。
今天,我们要解决的问题是网络规划。
回顾
我们先来回顾一下之前的清单。
技术名 | 场景 | 使用频率 |
---|---|---|
域名 | 网站名 | 低 |
IP | 主机标识 | 低 |
DNS | 域名和IP的映射 | 低 |
负载均衡 | 将请求分流 | 低 |
路由器 | 外网与内网的中转站 | 低 |
交换机 | 内网与内网的中转站 | 低 |
服务器 | 一台电脑 | 低 |
数据库 | 专门放数据的工具 | 高 |
业务应用程序 | 专门计算的工具 | 中 |
缓存服务器 | 专门放热点数据的工具 | 中 |
消息队列 | 先把数据丢进去,排队等着处理的工具 | 中 |
文件存储 | 存文件的工具 | 中 |
搜索引擎 | 类似数据库,但是能支持模糊搜索的工具 | 中 |
配置中心 | 专门放配置信息的工具 | 中 |
邮件服务 | 发邮件的工具 | 中 |
短信服务 | 发短信的工具 | 中 |
Jenkins | 帮你串命令自动化发布的工具 | 中 |
Java | 你的编程语言 | 高 |
我们可以看到,最上面的部分都是与网络相关的。并且使用频率也相对不高。确实这部分内容通常只需要专人首次去处理,在之后的工作中相对就不会有变化。但为什么第一个讲,因为是从完整搭建一个项目的角度来说,这些就是第一步动作。
目标
网络规划是个多目标问题。它的目标包含又不限于以下这些:
- 首先,我们的应用要被外部访问。
- 区分不同的环境,比如测试、预发、生产等。
- 内网和外网的隔离,只保证一个入口与外网交互。
- 固定IP,可供上下游定黑白名单。
- 安全性,比如自己定义黑白名单,比如SSL证书。
如何让外部访问
为了让外部访问,我们要理解几个概念,URL,IP,域名,DNS。
URL
我们的网址就是URL。实际上,它的全程是统一资源定位符,网络上的任何资源,都可以通过URL去标识。那么,你的网址可以用URL标识,你在这个网站里面的每一个图片、每一个按钮,背后都会对应一个URL。
对于URL,目前做到理解即可。
相关的概念还包括URI和URN,感兴趣可以扩展。
IP
我们可以看到192.168.1.1,这几个数字。这些数字就像你家的门牌号,它会指向你的主机。一个通常会用到的概念是“外网IP”和“内网IP”,这也非常好理解。外网IP还是你家的门牌号,内网IP则是进你家后,你自己房间的门牌号。比如你住在次卧,那么“次卧”就是你的内网IP。
现在,打开你的终端,输入一个命令:ping www.baidu.com。于是你会看到百度的IP地址,你复制它到浏览器地址栏,就可以通过它访问到百度。
对于IP,目前做到理解即可。
域名
域名其实更容易理解,www.baidu.com就是域名。它是我们通常理解的标识网站的名称,相比IP它的特点就是有意义,从而更通俗好记。计算机的一个特点是,它连接了人和机器,域名是给人看的,IP是给机器看的。同理,文档是给人看的,高级编程语言是给程序员看的,汇编语言机器语言是给机器看的。
对于域名,我们不仅要理解,还要会申请。事实上域名的申请真不太容易,我司曾为了一个好的域名花了1w元的费用,而一个全新的域名,其实只有几十元/年即可。有人专门就通过抢注域名赚钱。无论是阿里云、腾讯云,都有代理购买域名的服务。
DNS
有了域名,IP,URL,那么它们是什么关系呢?
URL起到定位作用,它可以借助域名来表示,也可以借助IP来表示。这里说是借助,因为域名或IP,是URL的组成部分,一个完整的URL,除了能定位到网站,同样需要定位到这个网站的某个页面,某个按钮,比如www.baidu.com/help?param=a。这是我虚构的一个URL,可以看到域名是它的组成,此外还有更丰富的信息表达其他内容,这个我们后续再看。
域名和IP的关系,就相当于小明和小兰说过一次自家的门牌号(IP),之后再沟通时,小明说“在我家(域名)那儿”,小兰就知道是哪儿了。所以我们看到,域名,核心是“名”,IP,核心是“号”。那么DNS做了什么?DNS记录下所有“名”和“号”的关系,它是个映射表。
DNS还是个云服务,它是全互联网共享的一个服务,我们自己搭建网站的话,只需要找一个DNS厂商,在它加的网站上去配置域名和IP即可。阿里云、腾讯云都云服务,都可以做到。
对于DNS,我们首先要理解,其次要找到地方配置,即可。
备案
在国内搭建网站,都需要对域名进行备案,相关服务参考备案教程即可,这里不存在技术问题。
如何区分不同环境
一个正式的运营系统,必然会区分测试和生产,甚至更多的环境。环境和环境之前,要有网络隔离。
VPC
VPC全称是Virtual Private Cloud,可以认为它就是一个局域网。VPC下有多台交换机,连通不同的主机。通过路由器和其他的VPC以及公网进行交互。
VPC-路由器-交换机的关系,可参考下图。
路由器
路由器,它会将两个网络进行连通。比如,对外对接公网,对内对接交换机。和交换机是1对n的关系。
交换机
交换机下,会关联具体的主机,包括服务器、数据库等。当然数据库也是部署在某个服务器之上。
这里有个tips,我们看到交换器可以在不同的可用区,可用区是云服务对于同城不同机房的概念,A可用区可能A地,B可用区可能在B地。但是AB两区同属一个VPC的话,是可以算作内网的。这是云服务的一个特点。那么,我们就可以利用这个特点,针对自己的集群,做一个容灾的部署。
三者关系
当然,路由器也可以起到交换器的作用。不过,为了减少我们的心智负担,我们统一使用下图作为我们的最佳实践。vpc下是路由器,路由器下是交换机,交换机下是主机。vpc是个大屋子,路由器是外交官,交换机是内勤官。
image.png
环境隔离
如何做测试、生产的隔离,有了上图就非常容易,就是通过创建两个VPC即可。
另外,每个VPC会对应一个IP网段,每个交换机会对应VPC网段下的一个IP子网段,每个主机会对应一个具体IP。即VPC-交换机-主机,层层细化。
这里留一个问题给你们。为什么路由器出现在这个结构里,但是不对应IP?
网段
刚才提到了网段,又是一个新的名词。其实这也非常好理解。IP地址的理论最小值是0.0.0.0,理论最大值是255.255.255.255。其实IP地址就是4个2的8次方组成的,最高能表达2的32次方个地址,当然,现实可用的公网IP表达不了那么多,所以有了IPV6的概念,这个我们本次不细说。网段就是110归A,1120归B,不管用二进制还是十进制,都是数字,都是号。门牌号110的商铺归王家,门牌号1120的商铺归苏家,这就是网段。有一些黑话,比如某IP和另一个IP不是同一个网段的,其实就暗含着它们是部署于同一个VPC,网络做了隔离的。当然,这不是很严谨。
综上,我们就可以做好一个网络隔离。当然,还有非常多实践的内容。其实原理是一回事,原理浩如烟海,但是实践过程中,我们务必“先完成,再完美”,而完美的过程,则是由问题去指引。这样才能高效地做成事情。
其他概念
以上是搭建一个网络的最小知识,当然,为了做到更完整的功能,还需要不止这些。
NAT网关
它可以让你的VPC以一个固定IP,访问外网。当然,同样也存在不同的实践。这是一种方式。
负载均衡
如果我们搭建的是集群环境,那么我们就需要负载均衡。外部的访问,先到负载均衡,再到VPC内的具体主机。起到一个分流的效果。
ssl证书
这是你安全的保证。加密、加签。加密是让信息的传输是密文的形式,他人无法拦截,加签,是保证调用者是调用者本人。关于这些内容,我们将来会细讲。
黑白名单
黑名单就是你确定这些人不能访问你。白名单就是你确定可以访问。这是互为镜像的策略。对于网络安全严格的环境,自然是全黑开白,反之则全白开黑。有不同的方式可以做到,比如负载均衡、比如防火墙、比如安全组等。
安全监控
你要时时监控网络流量,就需要打好相应的日志。如果你购买的是云服务,就会有相应的服务提供。这也是云服务的好处。
总结
以上,简单介绍了网络规划需要的基本知识。其实每一处都可以细细展开。但从实践可用的角度,你不可能了解了所有的理论,再去动手。理论实践是交错前行,你的理论只要足够支撑你的实践,即可。毕竟,你还有非常多其他的事情要做。