内网服务器集群架构

内网服务器集群架构

之前的内容备份可以搜文章名字:
内网服务器集群架构-旧版备份

一、重要知识抢先知道

看下图,我们是要构建一套内网的服务器集群,然后接入到数据中心
上线服务器的过程:
1、你们公司刚刚开发出一套应用软件,想要发布上线
2、你和公司的运营等业务相关人员一起预估了上线后短期内可能吸引的用户量,预估出一系列性能指标
3、根据这些性能指标,你开始设计规划出需要哪些硬件设备:交换机、服务器、网线、网卡、磁盘等,可能还有防火墙(你不信任数据中心的防火,自己的要进一步做一些防护,这个也很合理,还可能有VPN设备当然也可以自己部署软件vpn一切都看自己的需求),然后咨询各个销售商讨价还价,最后出一个大概的采购清单,提交上级审批
4、审批通过后,网上下单,设备邮寄到数据中心楼下
5、跟数据中心借一个带轱辘的小拖车,装上设备,运到二楼,跟你的小伙子两个一起把服务器搬进机房,上架到机柜上
6、拿出提前打好标签的网线,按找之前的规划接好网络
7、装好操作系统,配置好IDRAC接口,就可以回公司远程操作了,通过IDRAC可以远程连接上服务器实现开关机
8、在公司通过ssh远程到一台一台的服务器,完成你的集群架构配置
具体怎么配置呢,这就是我们接下来要研究的主题了

file

二、集群架构介绍

2.1 什么是内网服务器集群

内网:内网就是我们自己的服务器自己内部通信的网络,因为数据中心已经帮我们把网络层的东西都架构好了,我们只需要组织好我们服务器间的网络环境就行,

集群:就是多台集群协调工作,是一个集体,有人负责做这件事,有人负责做那件事,最终分工合作来共同完成一整件事情,而不是每台服务器各自为战。

所以,对于集群来说,就像是有一群人组团去战斗,有两个关键点是你需要考虑的

  • 1、时间一致
  • 2、网络通信要畅通
    这两个关键点都是跟群体协作息息相关,除了这两个之外,其他的就是每台服务器自身的一些问题处理了

2.2 为何要构建服务器集群

来储备几个知识,一点一点逼近问题的答案
一、软件大致分类

  • 1、单机应用软件:给用户使用,为满足用户的某种需求而开发的软件,例如本地播放音乐、画图需求、做ppt需求等
  • 2、网络应用软件:把单机应用软件的交互方式由直接与本机交互,改成了通过网络交互,例如网络听歌、网络看电影、网络游戏等
  • 3、系统软件:主要实现计算机硬件的管理,给上层提供操作硬件的简单接口
  • 4、嵌入式软件:运行在特定的嵌入式系统中,用于控制和管理特定的硬件设备,不像应用软件那样提供很多功能,嵌入式往往实现的功能都比较专一,应用领域比如汽车电子系统、医疗设备、家用电器洗衣机微波炉、电饭煲等

二、所有网络应用软件都包含两大部分功能

  • 1、业务逻辑:业务就是办事的流程,是应用软件的核心
    以银行为例,在没有计算机之前银行也能给你办很多业务,过去都是靠人去执行业务流程,
    例如:你去银行人家会问你想办个啥业务,有存款业务、取款业务、办卡业务等等,每套业务背后都有一套办事的流程
    ===
    现在有了计算机之后,很多都是靠计算机(替代了过去的人)来执行这些业务流程,例如你熟悉的存款
    取款业务,很多都交给了提款机去做,提款机就是一台计算机啊,上面安装有程序员开发的软件
  • 2、网络通信:是软件与用户交互的一种便捷高效的方式
    用户使用软件的过程就是与其交互的过程,交互就是你给它输入什么,它给你反馈什么
    交互的方式由两种
    1、本地交互-》单机版应用,你必须站在按照软件的那台计算机面前你才能用它
    2、网络交互-》互联网应用,你可以站在任何可以上网的地方,用你的设备远程与目标服务器通信/交互就行
    通过网络交互,打破了地域限制,可以最大限度地笼络覆盖各个用户群体,人们常说的互联网效应指的就是这个
    为什么互联网岗位工资往往高于其他,就是因为它的边际成本特别的低,很好的打破了地域限制

三、网络应用软件的两大部分功能都是如何开发出来的?—–>拿来主义

  • 1、业务逻辑部分:程序员用某一种或者多种编程语言实现(例如java、python、go、php),部分重复的轮子直接下载别人写好的功能(例如mysql、redis、kafka、nginx等)。这部分实现之后称之为应用
  • 2、网络通信部分:都是用别人写好的功能,一般都不会自己开发。这部分称之为服务
    例如:
    用php开发网络应用软件
    1、业务逻辑部分:用php语言写
    2、网络通信部分:直接用别人开发好的php-fpm
    ===
    用python开发网络应用软件
    1、业务逻辑部分:用python语言写
    2、网络通信部分:直接用别人开发好的uwsgi
    ===
    用java开发网络应用软件
    1、业务逻辑部分:用java语言写
    2、网络通信部分:直接用别人开发好的tomcat
    ===
    用go开发网络应用软件
    1、业务逻辑部分:用go语言写
    2、网络通信部分:go程序编译后的二进制文件直接就带http服务,不需要额外安装

四、总结与强调

  • 1、网络应用的构成=负责业务逻辑的应用程序+负责网络通信的服务程序
  • 2、web网络应用肯定也属于网络应用的一种,所以
    web网络应用=web应用+web服务(这个概念非常重要,直接影响你对后续概念的理解)

五、一款网络应用软件的开发流程与集群化部署

你们公司的老板嗅到了某个商机:很多人都有网上听音乐的需求
于是老板花钱成立了一家公司:
=================================   
1、业务侧:
    (1)老板发财梦的开始
    老板花钱买了很多版权音乐,并且与一些明星签订了网上付费听歌的分成协议
    然后老板就可以把这些音乐文件都从明星、唱片公司那里通过u盘啊、磁带啊等各种形式
    把这些音乐文件给拷贝过来

    (2)老板对公司业务的规划:啥叫业务,就是设计一条服务流程满足永远的某种需求,从而把钱从用户
    口袋里掏出来
    所以
    接下来要做的事情就是设计一下业务流程,核心包含这么几个流程(我们常说的业务流程就是下面这些东西)
    a:把我们本地的音乐文件能通过网络分享给用户听,用户侧看到的就是一个点击即可听音乐的页面
    b:页面里要对歌曲进行分类,一些是免费专栏,一些是付费专栏,一些只能听5s后面就得费钱
    c:把音乐做一些处理,一些处理成音质差一些,另一些音质好一些,用户想听音质好的就得
    买vip、vvip、vvvip、vvvvip
=================================   
2、研发侧:
    老板花钱招聘了一群程序员,让这些程序员把自己设计的业务流程实现一下
    所以听明白没有,赚钱的根本不是技术,而是老板的业务,业务才是钱的核心。当然了,老板之所以
    愿意给你开出高工资,那是因为他的业务需要你的技术来实现与承载,你的技术当然重要、需要持续精进,
    但要时刻记得贴近业务,所有的技术演进都要以业务提升作为出发点,否则你一定会被公司抛弃掉
    千万不可像一些没有任何思考力的低端人群一样觉得自己天下无敌,周围人都是sb,此乃愚蠢至极

    一个软件的开发
    1、业务侧(称之为应用程序):开发只写核心代码,一些其他代码直接用现成的例如
        1、数据库------》mysql
        2、缓存--------》redis

    2、网络通信侧(称之为服务程序):网络通信封装/解析http协议,也不会自己写,都是拿现成的
        php的用:php-fpm
        python的用uwsgi
        java的用tomcat
=================================   
3、运维侧:
    开发的软件写完了,需要你部署上线,
    你面临的问题有:
    (1)一款软件里包含了10个组件,每个组件都是一个小软件,是需要你部署的
    (2)多个小组件是全都部署在一台服务器上,还是需要分散部署在多台服务器上
    这就是单机部署与集群化部署的区别
    (1)单机部署:集中一台机器部署、性能低、有单点故障抗风险能力极差,只有个人站点才会这么做
    (2)集群部署:分散到多台机器集群化部署,性能高、有高可用抗风险能力强,公司级站点必然是集群化啊
    集群化部署如何设计?需要你
    (1)预估出:业务规模并发量、数据量、拓展性、安全性、冗余性等很多问题,
    (2)这决定了如何架构、买什么性能的服务器,买几台。
    所以集群有几台机器是怎么来的,答案是你通过一些指标计算而来的,比如是个人站点,总共没几个人看
    那还上什么集群,就一台机器部所有服务就够用了。
    那影响集群规模的指标都有哪一些呢?

三、集群性能指标与容量预估

集群的规模多少是需要经过计算的,一些常规的性能指标qps、tps、rt、load、pv、uv、带宽、并发连接数、数据库空间日增长量如下
https://egonlin.com/?p=8705

四、集群的五层架构

4.1、什么是分层

一个集群中有多台服务器,分层就是将他们划分成不同的角色,每种角色只负责自己的份内之事,即一种角色的服务器上只部署特定的网络应用程序,一般不会混着来,除非你真的很穷。

4.2 为何要对集群中的服务器进行分层

了解了集群指标与容量预估之后,我们知道了一台集群内应该具备多少台服务器才能抗住预期的压力
但仅知道这一点根本没啥用,
1、作为架构师你就相当于一个将军

联系管理员微信tutu19192010,注册账号

上一篇
下一篇
Copyright © 2022 Egon的技术星球 egonlin.com 版权所有 帮助IT小伙伴学到真正的技术