戳下方名片,关注并星标!
回复“1024”获取2TB学习资源!
前面介绍了服务发现与配置管理平台 Nacos、分布式的对象存储系统 MinIO 、容器管理工具 Rancher 、kubernetes 包管理工具 Helm 、服务网格 Istio 、链路追踪工具 SkyWalking、influxDB、cAdvisor、Grafana、云服务器 ECS 入门等相关的知识点,今天我将详细的为大家介绍 云服务器 ECS 进阶 相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发分享朋友圈支持一波!!!
负载均衡就是将访问流量根据转发策略分发到后端的多台服务器中。负载均衡建立在现有网络结构之上,提供一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。简单理解就是将负载(工作任务)进行平衡并分摊到多个操作单元上进行执行。
原因一:实现承载高并发、提高处理性能
在实际的企业业务中,随着业务量、用户及服务量的不断累加,仅靠单台 ECS云服务器是无法满足其业务需要的,而对这些海量 高并发
的处理就需要使用到负载均衡,将这些海量的流量分发至后台的多台服务器进行处理。
高并发(High Concurrency):系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,诸如大量的用户访问等。
原因二:高可靠性,实现后端服务冗灾
所谓高可靠性,就是当只有一台服务器时,如果该服务器出现了任何故障,那么就会直接影响整个网站的无法服务。负载均衡技术的好处在于可以设置固定的健康检查模式,对后端服务进行定期检查,同时使用多台服务器对外提供访问服务,某一台服务器出现故障时则可以通过负载均衡 LSB 动态的将这台故障服务器移除,以至于不会影响整个网站的运行。更多关于构建企业自动化运维平台系列的学习文章,请参阅:企业级自动化运维平台,本系列持续更新中。
首先进入阿里云服务器 ECS 控制台,选择“实例” --> “管理”,进入实例详情页;在实例详情的最下面有“关联的负载均衡”模块,我们点击进入负载均衡控制台;在控制台中,选择传统型负载均衡下的“实例管理”,可进行传统型负载均衡 CLB 的创建;针对可用区的选择:可用区指的是一套独立的基础设施,不同的可用区之间基础设施(网络,电力和空调等)相互独立,即一个可用区出现基础设施故障不影响另外一个可用区。
选择 多可用区
模式负载均衡服务可以更加可靠,当主可用区的机房故障或不可用时,负载均衡仍然有能力在非常短的时间内(约 30s)切换到另外一个备可用区的机房并恢复服务的能力;当主可用区恢复时,负载均衡同样会自动切换到主可用区的机房提供服务。
我们在选择可用区时需要先看自己需要设置负载均衡的实例是在哪个可用区,如下我的实例是位于华北 2,北京可用区 H;所以我在负载均衡的可用区中选择与实例相对应的,而备可用区默认即可;针对阿里云负载均衡服务的收费模式的选择:有 按规格计费
和 按使用量计费
两种。按规格计费模式每小时的规格费将按用户购买时所选规格固定收取,适用于满足部分用户对固定使用量有强诉求的业务场景;对于业务峰值变化较大的用户而言,按使用量计费可以更好的兼顾成本与业务可用性。如下是两种计费方式对比:针对实例类型的选择:公网
是对外部用户提供服务的,私网
则只对阿里云内部服务提供访问,我们根据自己需要进行选择。选择相关参数之后,点击“立即购买”;开通成功之后回到负载均衡控制台,可以看到已有传统型负载均衡实例,至此负载均衡 CLB 服务创建成功。更多关于构建企业自动化运维平台系列的学习文章,请参阅:企业级自动化运维平台,本系列持续更新中。
在上面的文章中,介绍了负载均衡的概述及优势,并详细演示了阿里云服务器负载均衡服务的选型与购买配置。本期文章我们将对负载均衡的实现原理进行详细介绍,并对实例演示具体的配置操作,包括基础配置、健康检查配置、后端服务配置。
对于负载均衡的策略来说,用户是先访问我们的域名,进而访问到域名所解析到的负载均衡公网 IP,随后负载均衡再进行一层转发,转发至后端服务器。转发过程中的协议可由我们自己根据情况来定义。比如使用 Http 协议类型,用户想要在前端访问到负载均衡,我们就需要配置 Http 协议与 80 端口,负载均衡也是使用 Http 协议转发至后台服务器,那么后端启用的服务或者监听也需要使用 Http 协议来进行匹配。也就是说前端与后端的协议类型都是相对应的。
前端与后端服务之间通过 轮询策略
来连接。它决定着负载均衡通过什么样的策略对后端服务器进行流量分发,分为轮询、加权轮询、加权最小连接数三种模式。轮询
模式指前端通过海量流量来访问负载均衡,随后负载均衡将流量均匀的进行分发至服务器。比如将一堆苹果分给若干个孩子,从第一个孩子一人一个的往下发,发到最后一个孩子手里之后再返回来从第一个孩子开始一人一个的发。加权轮询
模式在轮询的基础上加入了“权重”,为每一个服务器赋予权重值,根据权重来进行流量的分配,权重值越高,流量也越多。加权最小连接数
模式在加权的基础之上又增添了最小连接数,在设置权重值的同时可根据该服务器的承受压力动态调整分配效果,如果某一服务器的流量较少,负载均衡则会考虑是否将一些流量分配过来。
在负载均衡的高级配置中,还有一个属性叫做 会话保持
。负载均衡按照轮询策略进行流量分发时,如果设置了会话保持,负载均衡将在固定的一段时间内将某一特定 IP 分发给某一个特定服务器。如下 IP1 分发给 服务器 1,IP2 分发给服务器 2,IP3 分发给服务器 3。针对会话保持功能,TCP 协议会话保持基于 IP,只按照客户端的 IP 来进行负载均衡策略,用户从特定的 IP 访问也将访问到固定的服务。Http 协议会话保持基于 Cookie,每一个用户都有一个自己的 Cookie 信息,不同的用户进行访问时将根据他的 Cookie 信息来决定访问到哪一个服务,即使它们是通过同一个 IP 访问进来的。
回到负载均衡控制台,已经购买成功的负载均衡服务如下,在控制台中以实例的方式展示;点击“点我开始配置”选项,即可进入配置向导,在这里我们基于 Http 协议进行配置。可以看到共有四部分配置:
1.协议&监听
2.后端服务器
3.健康检查
4.配置审核更多关于构建企业自动化运维平台系列的学习文章,请参阅:企业级自动化运维平台,本系列持续更新中。
如下,后端协议使用 Http 协议的 80 端口;在高级配置中,可选择调度算法、会话保持等功能,在这里如何没有特殊需要默认选项即可;这就是协议&监听模块,然后点击“下一步”。
添加后端服务器可用于处理负载均衡接收到的访问请求,一台 ECS 再加上它部署的应用服务以及代码,就构成了一个完整的后端服务器。通常后台服务不止一个,如果我们一个一个的手动去部署的话,效率会很低,这时候就可以将线上已经运行好的 ECS 打包成镜像,通过镜像来生成多个后台服务。
首先在同一个区域新建 ECS 实例,来到负载均衡业务配置向导的第二步,有 虚拟服务器组
、默认服务器组
、主备服务器组
三种后端服务器供我们选择;
主备服务器即主服务器和备用服务器,主服务器来接收请求;备用服务器仅用来做备份,不对外提供服务,只有当主服务器故障无法提供服务时,备用服务器才会启用。当主服务器恢复后,备用服务器也再次回到备用状态。
虚拟服务器类似 nginx、apache 等服务,每个负载均衡实例可以创建多个虚拟服务器组,虚拟服务器组可关联到监听或转发规则,实现将不同业务转发到不同的后端服务器的功能。我们这里使用默认服务器组,默认服务器是最常用的一种服务器类型,我们已经部署好的服务都可以添加到默认服务器中来。如下“小马服务器”是之前创建的 ECS 默认实例,我们可将其添加至默认后台服务器;添加成功如下,我们可以为其设置端口和权重;
第三步是健康检查配置,健康检查机制用于检查后台服务是否健康,当后端某台 ECS 健康检查出现异常时,负载均衡会自动将新的请求分发到其它健康检查正常的 ECS 上;而当该 ECS 恢复正常运行时,负载均衡会将其自动恢复到负载均衡服务中。
阿里云的健康检查机制分为两种,第一种是使用 TCP 协议检查,基于网络连接来进行检查服务是否正常;第二种是使用 HTTP 协议检查,面向应用层,会确定我们的请求是否可达或者能正常发起响应。
对于检查原理我们此处无需对其进行深入了解,阿里云健康检查是基于 LVS 和 Tengine 的,我们仅需选择“是否开启健康检查”即可。至此,负载均衡业务的配置就完成了;最后点击“提交”,配置成功。更多关于构建企业自动化运维平台系列的学习文章,请参阅:企业级自动化运维平台,本系列持续更新中。
如下就是配置完成后的负载均衡实例;回到云服务器 ECS 控制台,可以看到云服务器已关联负载均衡服务;我们在浏览器访问负载均衡实例公网 IP,与我们部署的服务器公网 IP 效果一致。
Tips负载均衡使用注意事项:
公网类型的负载均衡并不需要后台 ECS 配置公网;
如果 ECS 有配置了公网 IP,需先修改路由,不能直接关闭;
弹性伸缩(Auto Scaling)就是自动为我们调整弹性计算资源大小,以满足业务需求的变化,是一种根据业务需求和策略自动调整计算能力的服务。简单可以理解为它会根据服务器使用情况,自动的增减服务器的实例数量。
在阿里云服务器 ECS 中弹性伸缩是这样实现的。比如在一个负载均衡中挂载了三台 ECS 服务,当因为用户访问量大等状况导致云服务资源不够用的时候,云监控会自动感知(可通过 CPU 的使用率等指标判断),并触发事件来通知弹性伸缩服务根据配置规则来自动添加资源,反之也是如此。通过这样的原理以实现资源的自动化扩容与收缩。自动化的资源调配
就是弹性伸缩的最大优势。此外,弹性伸缩还可以实现资源的自动故障替换。当云监控发现其中一台 ECS服务器发生故障或者不可用时,就会从资源池中拿一台 ECS 过来进行替换。
在应用弹性伸缩服务的时候,我们应避免以下几点错误认知:
弹性扩容一定能解决我们整体的性能瓶颈;需找到问题根本所在进而针对性解决才行。
弹性伸缩免费;弹性伸缩服务是免费的,但通过弹性伸缩自动创建或者手工加入的 ECS 实例需按照相关实例类型进行付费。
弹性伸缩服务的实现模式有以下几种:
GRE(Generic Routing Encapsulation,通用路由封装)协议,是指把两个不同的 VPC 网络通过建立一条虚拟隧道的方式连接到一起。
假设在两个不同的地域各有一个 VPC 网络,每个 VPC 中均包含三个 ECS 实例(主机),其中一个实例具有公网 IP。当我们想要让这两个 VPC 网络中的某 ECS 实例可以互相访问,就需要设置 GRE 通道,将具有公网 IP 的主机作为跳板建立隧道来实现连接。可以看到,想要通过 GRE 来实现互联的 VPC 网络中必须有一台主机是具备公网 IP 的。更多关于构建企业自动化运维平台系列的学习文章,请参阅:企业级自动化运维平台,本系列持续更新中。
回到阿里云服务器控制台,点击左侧菜单栏的“弹性伸缩”进入弹性伸缩控制台;弹性伸缩的快速配置分为三部,“创建伸缩组” --> “创建伸缩规则” --> “完成并启用”;伸缩组的创建不必多说,当我们选择实例来源是已有实例时,该实例本身不会自动加入到伸缩组内,伸缩组仅提取该实例使用的基础镜像,不会包含该实例的数据信息;在高级配置中,可为该伸缩组添加扩缩容策略、关联负载均衡和数据库等;伸缩规则即在该伸缩组中定义哪些操作被允许。在“执行的操作”选项中,有 调整至
、增加
、减少
三个选择。增加就是扩容 ECS 后台服务;减少就是移除;调整至即指定调整到多少台;冷却时间指的是该规则被使用之后多长时间内不能再次被使用;
选择相关属性后点击“完成”,伸缩组就创建成功了。我们上一步选择的是“稍后手动执行”,所以它处于停用状态,需手动开启;新创建的伸缩组由于还未进行任何配置,所以各项指标均为 0;接下来进行弹性伸缩的相关配置。
选择“实例配置来源”下的“创建伸缩配置”,进入弹性伸缩管理控制台;在基础配置模块中主要是选择付费模式与实例的规格,镜像选择等,大家根据个人需要自行选择;伸缩配置完成之后就可以选择该规格来自动完成扩缩容操作了,前提需要我们自己来创建伸缩规则。
点击已有的伸缩组名称;选择“伸缩规则与伸缩活动”,此时是没有伸缩规则的,点击“创建伸缩规则”;如下:更多关于构建企业自动化运维平台系列的学习文章,请参阅:企业级自动化运维平台,本系列持续更新中。
参考来源:https://majinjian.blog.csdn.net/article
/details/128413722 https://majinjian.blog.csdn.net
/article/details/128355888
— 特色专栏 —
MySQL|PostgreSQL|Redis|MongoDB|Tools
ElasticSearch|Kubernetes|Docker|Hadoop
Kafka|RabbitMQ|Zookeeper|OpenStack
公众号读者专属技术群
构建高质量的技术交流社群,欢迎从事后端开发、运维技术进群(备注岗位,已在技术交流群的请勿重复添加)。主要以技术交流、内推、行业探讨为主,请文明发言。广告人士勿入,切勿轻信私聊,防止被骗。
扫码加我好友,拉你进群
PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我们吧!
文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib
文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang
文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些
文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器
文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距
文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器
文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn
文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios
文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql
文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...
文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120
文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数