买阿里云的SLB还是自己在服务器搭建Nginx呢?
开个玩笑,B站就是Nginx挂了[奸笑]
slb对应的是自建LVS
都行 nginx的话 需要自己购买大额的宽带 非常昂贵 就看你的业务 如果只是偶尔高访问量 不是持续的话 就slb吧
肯定是阿里云slb,slb提供了标准的api接口可以通过api方便快速得完善相关服务配置,很多觉得自己用nginx可以做负载均衡,但实际结果呢?不仅增加了运维成本,在稳定性和安全性上根本没有保证,可以说出力不讨好。当然很多企业是基于自身成本考虑,阿里云slb相对自建nginx来说,成本确实高出很多,而且限制也很多,比如在某一端口下限制代理数量等等。总之公司有钱不差钱百分百上slb,稳定安全,减少运维成本。基于成本考虑自建nginx,需要自己做好各种监控运维策论,付出更多的运维成本,稳定性相对来说没有slb稳定
slb费钱,没有固定的。nginx负载均衡费用可以固定下来。
很多觉得自己用nginx可以做负载均衡,有没必要购买阿里云负载均衡SLB呢?购买阿里云负载均衡SLB和自己用nginx做负载均衡有何区别与优势呢? 其实自己用nginx做负载均衡就是吃力不讨好,运维成本高,而且很不稳定,相对于直接购买阿里云负载均衡SLB稳定搞、容灾高、多种协议支持、并且运维成本低。
其实nginx现实中大部分都是用来做反向代理了。负载均衡的话有条件还是slb吧,网络层的快一些
负载平衡(Load balancing)是一种电子计算机技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。
使用带有负载平衡的多个服务器组件,取代单一的组件,可以通过冗余提高可靠性。负载平衡服务通常是由专用软件和硬件来完成。
主要作用是将大量作业合理地分摊到多个操作单元上进行执行,用于解决互联网架构中的高并发和高可用的问题。
负载均衡最重要的一个应用是利用多台服务器提供单一服务,这种方案有时也被称为服务器农场。
通常,负载平衡主要应用于Web网站,大型的Internet Relay Chat网络,高流量的文件下载网站,NNTP(Network News Transfer Protocol)服务和DNS服务。现在负载平衡器也开始支持数据库服务,称之为数据库负载平衡器。
对于互联网服务,负载平衡器通常是一个软件程序,这个程序侦听一个外部端口,互联网用户可以通过这个端口来访问服务,而作为负载平衡器的软件会将用户的请求转发给后台内网服务器;
内网服务器将请求的响应返回给负载平衡器,负载平衡器再将响应发送到用户,这样就向互联网用户隐藏了内网结构,阻止了用户直接访问后台(内网)服务器,使得服务器更加安全,可以阻止对核心网络栈和运行在其它端口服务的攻击。
当所有后台服务器出现故障时,有些负载平衡器会提供一些特殊的功能来处理这种情况。例如转发请求到一个备用的负载平衡器、显示一条关于服务中断的消息等。负载平衡器使得IT团队可以显著提高容错能力。它可以自动提供大量的容量以处理任何应用程序流量的增加或减少。
应用
负载均衡对通讯链路的冗余是非常有用的。例如,一家公司可能有多条互联网接入线路以保证某一条故障时仍可以正常接入互联网。
故障转移的架构意味着一条连接正常使用,另外一条连接作为备用,当第一条出现故障时才会被启用。
使用负载均衡器,两条(多条)连接可以都投入使用。有一个设备或者程序实时监控着所有连接的连通性,并且对正在发送的包进行选路。同时使用多条连接可以增加带宽。
许多电信公司在其内部网络或连接到外部网络(其它电信网络)都有多条线路可以使用。为避免某条链路出现网络堵塞,最小化连接其它网络的费用或者提高网络的可靠性,它们使用负载均衡将流量从一条链路转移到另一条链路。
云服务器ecs支持镜像、控制台、API、CLI、远程桌面、系统监控、自动化部署、负载均衡等运维工具。
云服务器 (Cloud Server) 是一种基于互联网技术的服务,允许用户在线使用虚拟机来运行自己的应用程序和存储数据。它是通过远程访问云提供商的数据中心内的硬件资源来实现的,包括 CPU、内存、存储和网络带宽等。
阿里云ECS (Elastic Compute Service) 云服务器支持多种运维工具,具体如下:
1、镜像:支持常用操作系统的预构建镜像,以及用户自定义镜像。
2、控制台:通过web控制台进行创建、配置、管理和监控云服务器。
3、API:通过RESTful API实现对云服务器的自动化管理。
4、CLI:通过命令行接口实现对云服务器的管理。
5、远程桌面:支持通过RDP和VNC连接远程桌面进行操作。
6、系统监控:支持实时监控云服务器的状态,包括CPU、内存、磁盘和网络使用情况等。
7、自动化部署:支持使用脚本自动化部署应用程序。
8、负载均衡:支持使用阿里云SLB实现负载均衡。
云服务器性能三大要素:
云服务器这种产品通常有两个关键维度:CPU和内存。基本上来说,云服务器小型规格为1vCPU和2GB RAM;云服务器中型规格为2vCPU和4GB RAM;云服务器大型规格为4vCPU和8GB RAM。
虽然每一个云服务器都有网络连接性,区别在于云服务提供商如何为其不同规格的云服务器网络带宽打广告。通常你最有可能看到的就是GB以太网连接。
在选择云服务器时,务必确定有多少虚拟服务器可以运行在物理服务器上,以及这个物理服务器该有多少实际的CPU和内存,云服务器实际的网络吞吐量如何,这些决定直接影响你的应用性能。
如果在本地搭建,我们可以使用haproxy+keepalived方式轻松实现k8s中的负载均衡,但是阿里的ecs不能使用keepalived,所以我们被迫只能使用阿里的 slb了。
既然keepalived的方式不能使用,那我们就使用阿里的slb进行负载均衡呗,由于该负载均衡不需要被外部访问,只提供对k8s集群节点之间的访问,所以我们就使用私网的slb。
[上传失败(image-b02d7-1604545387128)]
我们保证该slb和k8s集群节点的node属于同一个局域网内,具体配置如下
第一步就是监听该slb的6443端口,该端口后端的服务器组分别是3台ecs的6443端口(apiserver服务)。接着我们可以 在master1节点 上执行如下命令
由于后端服务器组的 apiserver 都尚未运行,预期会出现一个连接拒绝错误。然而超时意味着负载均衡器不能和控制平面节点通信。 如果发生超时,请重新配置负载均衡器与控制平面节点进行通信。
我们在master1节点上创建kubeadm-configyaml文件,用于初始化控制平面节点,如下。
接着我们在master1节点上执行如下命令初始化
最后结果如下
看上面的日志好像是kubelet的问题。我们先确认kubelet是否运行,发现处于running状态。
接着查看kubelet的日志
发现一个奇怪的问题,https://192168411:6443提示timeout。
接着我们在master1节点上首先测试本地的6443端口是否已经启用
看到master1节点的6443端口已经被占用,接着我们在 master1 节点测试slb的6443端口服务,按理说master1节点的6443服务已经启用,那么slb的6443服务也应该是可用可连通的。
遗憾的是slb的6443端口并没有连通,我们在master2,master3节点上分别连接slb的6443端口,发现都timeout。 我们又找了同一局域网内的另一台ecs,该ecs不属于slb的后端服务器,在该ecs上却能连接slb的6443端口 ,现在问题找到了:
带着这个疑问我们提了阿里工单,客服最后给出结论。
私网的slb是不可以使用了,我们换成公网slb之后重新按照上述流传执行一遍,最后初始化控制平面节点成功。
初始化之前slb的6443端口负载的后端服务器组的6443服务肯定都没有启动。
初始化开始后先在本地拉取相关镜像,随后apiserver等服务启动起来,也就是本地的6443服务已经启动。
接着验证slb的6443的连通性,由于master1节点的6443服务已经启动,那么slb的后端组在健康检查中就会发现有master1节点6443端口一起启动,所以slb的6443端口服务也就正常启动了。
通过上面的描述,在 控制平面节点 上大致需要满足以下俩点才能初始化成功
优点:可以将kubeconfig文件复制到你笔记本电脑上,进而可以在你本地访问集群,也正是由于这种方式可能造成安全泄漏的问题。
缺点:apiserver暴露的ip是公网ip,一是各个节点之间沟通的效率变低,二是具有安全性问题。
如果公司非得使用私网的话,我们可以采取这种方式,大概拓扑图如下
最上层是一个私网的slb,该slb的后端服务器组为俩个haproxy,使用俩台haproxy可以避免haproxy的单点故障,haproxy的后端服务器为3台k8s的master节点。
估计看到这里有人会有疑问,上面介绍的私网slb方式会导致四层监听的后端服务器无法访问私网SLB问题,那么该种方式就不会有这个问题吗?我们带着疑问进行测试。
我们准备6台ecs,配置如下
slb监听6443端口,该端口的后端服务器组为俩台haproxy并监听8888端口。
haproxy监听8888端口,该端口的后端服务器组为3台控制平面节点并监听6443端口,haproxycfg文件如下。
我们使用haproxy:17镜像,在俩台haproxy所在节点分别执行如下操作:
kubeadm-config文件中controlPlaneEndpoint参数应为私网slb+6443端口,配置文件如下
执行初始化,发现可以初始化成功
以下所有测试在 master1 节点上测试
我们首先测试master1节点的apserver服务,6443端口是否已经被占用
master1节点的6443端口显示已经被占用,接着我们测试haproxy节点的8888端口是否连通
显示haproxy的8888端口已经连通,接着测试slb的6443端口是否被占用,发现可以连通
到此说明我们的3层架构都已经连通,说明此方案是可以执行的。
之前提的那个疑问我们现在得到了答案。 但有一点是需要特别注意的
优点:由于中间多了一层haproxy,所以巧妙的解决了私网slb四层监听的后端服务器无法访问私网SLB问题。
缺点:很显而易见了,中间多了一层haproxy的转发代理,而且也增加了成本。
现在大概有俩中方式可以实现k8s的高可用,一种是使用公网slb的方式,另一种是使用私网+haproxy+node的方式,这俩中方式各有优缺点,结合自己的实际情况选择适合的方案。
内网目前阿里云的服务器内网间是千兆共享的带宽,没有特殊限制。由于是共享网络,因此无法保证带宽速度是不变的。如果您需要两台同地域的 ECS 实例传输数据,一般建议使用内网连接。同时,RDS、SLB、以及 OSS 相关的内网速度也都是千兆共享的环境。这些产品间也都可以使用内网相互连接使用。目前只要是相同地域下,SLB 、RDS 、OSS 同 ECS 之间 都是可以直接内网互通连接使用的。对于内网中的 ECS 实例:只有同一账号、同一地域的实例,默认才会内网互通。同一账号、同一区域、不同可用区之间内网也互通,即使内网IP地址不是同一网段,也可以正常内网连接。如果是不同账号间、相同地域下,可以通过安全组实现内网互通,详情请参见 安全组应用案例。实例的内网 IP 地址不能进行修改、更换。实例的内网、外网不支持VIP(虚拟IP)配置。内网 DNS 地址经常遇到客户修改了服务器DNS配置,再想改回默认却忘记了地址。下面是阿里云线上个地域内网DNS地址,供参数设置使用:华北 1:10202721161020272118华东 1:10143221161014322118华东 2:10010021361001002138香港:10143221161014322118美西:10143221161014322118华北 2:10202721161020272118华南 1:10010021381001002136亚太10010021361001002138
不正常,首先,你一个请求只有一个连接,怎么可能到达2个服务器,如果是2个连接,在某些规则配置不当的情况下,到达不同服务器是很正常的
额外说一句,负载均衡下的系统,理想设计应该是无状态的,集中把状态信息共享或者交给第三方集中维护
不是。
SLB,服务器负载均衡(Server Load Balancing),可以看作HSRP(热备份路由器协议)的扩展,实现多个服务器之间的负载均衡。
Nginx (engine x) 为一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx由伊戈尔·赛索耶夫为俄罗斯访问量第二的Ramblerru站点(俄文:Рамблер)开发的,第一个公开版本010发布于2004年10月4日。
扩展资料
负载均衡算法有两种:
Weighted round robin(WRR)和Weighted least connections(WLC),WRR使用加权轮询算法分配连接,WLC通过一定的权值,将下一个连接分配给活动连接数少的服务器。
配置分为两部分,第一部分使用slb serverfarm serverfarm_name命令定义SLB选项,包括指定真实服务器地址;第二部分使用ip slb vserver virtual_server-name来指定虚拟服务器地址。
Nginx可以在大多数UnixLinux OS上编译运行,并有Windows移植版。Nginx的140稳定版于2013年4月24日发布,一般情况下,对于新建站点,使用最新稳定版作为生产版本,已有站点的升级急迫性不高。
Nginx的源代码使用 2-clause BSD-like license。Nginx为一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性:
在连接高并发的情况下,Nginx为Apache的替代品:Nginx在美国为做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达50000个并发连接数的响应。
-nginx
-SLB
二、ECS
ECS将于2014年2月27日发布新版本控制台,新控制台变更点:
1、 服务器改名为实例。
2、 页面样式变更。
3、 实例列表、磁盘列表、快照列表、镜像列表增加搜索功能。
4、 实例列表页面显示实例配置和到期时间。
5、 重置磁盘可以选择系统盘、数据盘和全部磁盘。
6、 提交工单入口统一到右上角导航栏。
7、 按量付费实例取消自动释放时间功能和设置释放时间合并。
三、SLB
SLB将于2014年2月28日发布新控制台,并正式开启售卖,请关注您的slb流量与帐户余额,以避免被停服。功能变更:
新增了实例监听(协议 端口)级别的带宽峰值设定功能。用户可以针对监听设定不同的带宽峰值来限定后端ECS上的不同应用所能对外提供的服务能力。
带宽峰值的设定规则:
1、一个SLB实例最多对应10个监听,每个监听可独立设定限定规则;
2、单个监听可限定5-1000Mbps范围的带宽峰值;
3、当单个监听上限无法满足用户业务需求时,可以选择不限带宽峰值。
0条评论