进哥哥看负载均衡

进哥哥看负载均衡以及在K8S上的负载均衡思考

最近遇到了负载均衡相关的东西,总结一下,有错轻喷!首先对DNS解析IP地址以及nginx proxy做一个简单介绍,然后从自己的观点来讲将服务部署在K8S集群上时,可以如何解决负载均衡?

DNS、域名

熟悉的可以跳过这部分

Nginx正向代理、反向代理、负载均衡

为什么要讲到Nginx?因为大多数的负载均衡都用到了类似proxy代理的方式来处理,所以这里我们大概讲一下正向代理、反向代理、以及Nginx负载均衡

  • 正向代理

    需要搞清楚三个角色:被代理角色、目标校色

    不多扯概念了,直接上例子!客人到nike专卖店买了一双鞋,这里被代理的角色就是nike厂家,而这个nike专卖店就是代理,目标角色就是客户。

    举一个实际的正向代理,那就是梯子了!!!比如我们无法访问google,需要找到一个可以访问国外网站的代理服务器,而我们本机是可以ping通这台代理服务器的。我们将请求发送给代理服务器,代理服务器去访问国外网站,再将结果返回给我们本机。

    这就是正向代理,正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。

  • 反向代理

    对于淘宝双11,淘宝的流量是巨型的,那么淘宝是如何做到服务器正常运行呢?那就是分布式服务部署,服务部署在多台服务器。具体的流程是怎样的?

    1.庞大的流量将请求数据发送给反向代理服务器,

    2.反向代理服务器接收到请求后,按照一定的分发规则,将请求分发给不同的服务器处理。

    反向代理特点;请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确,nginx扮演的就是一个反向代理角色

    1

    如图,上述例子是正向代理与反向代理同时存在的例子!可以自己琢磨一下

  • 负载均衡

    上面反向代理的数据分发,某种意义上来说可以理解为负载均衡。如何实现?我是这么看的,反向代理服务器内部维护一个消息队列,服务器只需要从消息队列中获取数据。达成了反向代理接受请求以及服务器处理请求的异步执行!

    那么消息队列中的数据应该分发给哪个服务器呢?有常见的以下几种算法:

    1.weight轮询

    2.ip_hash

    3.智能调整调度算法:根据服务器处理请求的时间快慢动态分配

K8S集群上的服务如何做负载均衡

今天就写到这里,kube-dns方式还需要再仔细看看,本人也还没咋弄懂!它们说,名字取得要够骚才行,所以得罪了!!!!!