traefik在kubernetes中的应用

目的: 通过本篇文章,能够简单了解和掌握Traefik在Kubernetes中的应用 如果不了解ingress和ingress-controller概念,请先看前一篇文章。http://km.oa.dragonest.com/x/RoFf traefik介绍: 开源的微服务网关服务,支持Mesos、Docker、Rancher、Kubernetes等等,也支持直接部署在物理服务器。能够实现负载均衡、HTTPS、自动更新Ingerss配置等等 traefik部署: traefik-deployment部署 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: traefik-ingress-controller namespace: traefik labels: k8s-app: traefik-ingress-lb spec: replicas: 1 selector: matchLabels: k8s-app: traefik-ingress-lb template: metadata: labels: k8s-app: traefik-ingress-lb name: traefik-ingress-lb spec: nodeSelector: traefik-controller-qa: "yes" serviceAccountName: traefik-ingress-controller terminationGracePeriodSeconds: 60 volumes: - name: ssl secret: secretName: traefik-cert - name: config configMap: name: traefik-conf containers: - image: traefik name: traefik-ingress-lb volumeMounts: - mountPath: "/ssl" name: "ssl" - mountPath: "/config" name: "config" ports: - name: http containerPort: 80 - name: admin containerPort: 8080 - name: https containerPort: 443 args: - --configFile=/config/traefik.……

阅读全文

tcp交互数据和块数据处理

前言 目前建立在TCP协议上的网络协议特别多,有telnet,ssh,有ftp,有http等等。这些协议又可以根据数据吞吐量来大致分成两大类: + (1)交互数据类型 例如telnet,ssh,这种类型的协议在大多数情况下只是做小流量的数据交换,比如说按一下键盘,回显一些文字等等。 + (2)数据成块类型 例如ftp,这种类型的协议要求TCP能尽量的运载数据,把数据的吞吐量做到最大,并尽可能的提高效率。针对这两种情况,TCP给出了两种不同的策略来进行数据传输。 TCP的交互数据流 对于交互性要求比较高的应用,TCP给出两个策略来提高发送效率和减低网络负担: - (1)捎带ACK - (2)Nagle算法(一次尽量多的发数据) 捎带ACK的发送方式     当主机收到远程主机的TCP数据报之后,通常不马上发送ACK数据报,而是等上一个短暂的时间,如果这段时间里面主机还有发送到远程主机的TCP数据报,那么就把这个ACK数据报“捎带”着发送出去,把本来两个TCP数据报整合成一个发送。一般的,这个时间是200ms。可以明显地看到这个策略可以把TCP数据报的利用率提高很多。 Nagle算法     Nagle算法是说,当主机A给主机B发送了一个TCP数据报并进入等待主机B的ACK数据报的状态时,TCP的输出缓冲区里面只能有一个TCP数据报,并且,这个数据报不断地收集后来的数据,整合成一个大的数据报,等到B主机的ACK包一到,就把这些数据“一股脑”的发送出去。这样可以较少交互,减轻压力。 TCP的成块数据流     对于FTP这样对于数据吞吐量有较高要求的要求,将总是希望每次尽量多的发送数据到对方主机,就算是有点延迟也无所谓。TCP也提供了一整套的策略来支持这样的需求。TCP协议中有16个bit表示“窗口”的大小,这是策略的核心。 传输数据时ACK的问题     在解释滑动窗口前,需要看看ACK的应答策略,一般来说,发送端发送一个TCP数据报,那么接收端就应该发送一个ACK数据报。但是事实上却不是这样,发送端将会连续发送数据尽量填满接受方的缓冲区,而接受方对这些数据只要发送一个ACK报文来回应就可以了,这就是ACK的累积特性,这个特性大大减少了发送端和接收端的负担。……

阅读全文

tcp连接的建立与终止

TCP三次握手 TCP三次握手;简单来说就是通信的双方建立可靠的连接之前必须要做的事情,就是在通信之前要做的事情。而我们常见的双方就是指的 客户端 ---- 服务器。 建立连接过程 首先client端发送连接请求报文,server段接受连接后回复ack报文,并为这次连接分配资源。client端接收到ack报文后也向server段发生ack报文,并分配资源,这样tcp连接就建立了。 建立连接过后干嘛呢?那就是该干嘛干嘛呀,就可以传输数据了。 TCP四次挥手 TCP四次挥手:由于TCP协议的可靠性,所以它再结束通信之前也会有一个流程来确认数据已经传输完成,在网络线路当中没有残留的数据包。 断开连接过程 中断连接端可以是Client端,也可以是Server端。假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说”我Client端没有数据要发给你了”(此时的Client是处于FIN_WAIT状态),但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,”告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息”。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,”告诉Client端,好了,我这边数据发完了,准备好关闭连接了”。Client端收到FIN报文后,”就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,”就知道可以断开连接了”。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了! 什么是MSL MSL是一个时间概念,指的是数据包在链路中的最大生存时间,如果超过这个时间,数据包就会被丢掉。主动发起断开连接的一方会在TIME_WAIT时等待2MSL,因为包要一个来回。所以有时候也称TIME_WAIT状态为2MSL状态。 什么时候哪一方会出现TIME_WAIT TCP四次挥手的时候主动发起FIN报文的一方会处于TIME_WAIT状态。 TIME_WAIT的好和坏 TIME_WAIT这个东西有没有好处呢?那有没有坏处呢? 答案是都有的。好处就是它保证了在断开连接之前数据传输的完整性;那坏处是什么呢?想象一下,如果是服务器主动发起的FIN报文,那它就会处于TIME_WAIT状态,那肯定就会占用一定系统资源。想象一下,如果并发量超级大的时候,那服务器岂不是会崩溃了。 技术交流可加QQ群:774332965……

阅读全文

使用COW让浏览器正确上网

概述 防火长城(英文名称Great Firewall of China,简写为Great Firewall,缩写GFW),也称中国防火墙或中国国家防火墙,指中华人民共和国政府在其管辖因特网内部建立的多套网络审查系统的总称,包括相关行政审查系统。 当使用浏览器访问google、facebook、youtube这些网站时都被GFW拦于门外,但是有些站点又是可以访问的,比如github.com;这就造成一个问题,我怎么知道那些网站是可以访问,哪些不能访问的站点又该怎么办呢? COW 介绍 COW 是一个简化穿墙的 HTTP 代理服务器。COW 的设计目标是自动化,理想情况下用户无需关心哪些网站无法访问,可直连网站也不会因为使用二级代理而降低访问速度。 简单来说就是国内能访问的就直接访问,不能访问的就走代理访问。 COW优点 自动检测网站是否被墙,仅对被墙网站使用二级代理 自动生成包含直连网站的PAC文件,访问这些网站时可不使用COW COW缺点 仅支持浏览器使用 架构图 客户端和一台内网服务器建立连接 内网服务器和一台香港服务器建立连接 当客户端访问国内网站时,就直接走内网服务器代理;当客户端访问国外网站时,就先走内网服务器,然后再通过内网服务器和香港服务器之间的SOCK链接访问。 服务部署步骤 香港服务器(6.……

阅读全文

OSI七层协议详细讲解

今天我们从高到低依次来讲解。 可能有些人不是很详细的了解OSI各层所对应的协议,之前我也不是很了解,所以就把每层对应的协议也一起写在了每层的最后 应用层 主要功能:就是处理网络应用。比如文件传输、电子邮件、文件服务、虚拟终端 详细说明:直接为服务端服务,提供各类应用过程的接口和用户接口。例如HTTP、TELNET、FTP、SMTP、DNS、NFS等 对应TCP/IP协议族协议:TFTP、HTTP、SNMP、FTP、SMTP、DNS、TELNET 表示层 主要功能:数据的表示。比如数据格式化、代码转换、数据加密 详细说明:使应用层可以根据其服务解释数据的含义。通常包括数据的编码的约定、本地语法的转换。例如JPEG、ASCII、GIF、MPEG 对应TCP/IP协议族协议:注意,注意。没有协议 会话层 主要功能:互联主机的通信。解除或建立与别的节点的联系 详细说明:负者管理远程用户或进程间的通信,通常包括通信控制、检查点设置、重建终端的传输链路、名字查找和安全验证服务。例如RPC和SQL等 对应TCP/IP协议族协议:注意,注意。没有协议 传输层 主要功能:端到端连接。提供端到端的接口来发送和接收数据 详细说明:实现发送端和接收端的端到端的数据分组传送,负者保证实现数据包的无差错、无丢失、无冗余和按顺序地传输。其服务的访问点为端口。 对应TCP/IP协议族协议:TCP、UDP 网络层 主要功能:分组传输和路由选择。为数据包选择路由 详细说明:通过网络连接交换传输层实体发出的数据,解决路由选择、网络拥塞的问题。服务访问的点为网络地址(IP地址) 对应TCP/IP协议族协议:IP、ICMP、IGMP、OSPF……

阅读全文

OSI/ISO七层——TCP/IP四层

OSI:一个国际组织 ISO:OSI提出的网络的7层架构 TCP:传输控制协议IP:数据报协议 TCP/IP:TCP/IP为很大的一个协议族,里面包含了非常多的协议。如:TCP、IP、UDP、ARP、ICMP、RARP、IGMP…… 他们的对应关系如下图所示: 技术交流可加QQ群:774332965 微信订阅号同步:时下IT……

阅读全文

IP协议

前言 TCP/IP协议是一个很大协议族,里面包含了IP协议、TCP协议、UDP协议、ICMP协议、IGMP……等等的协议;而IP、TCP就是其中很重要两个的协议。今天我们就来一起简单的分析一下IP协议。 IP协议简介 IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制;而它的上层协议TCP就具有这个功能。 什么是上层协议?就是距离用户更近的协议,比如http、ftp、TCP等等,而这些协议都是基于IP协议的,所以说是IP协议的上层协议。 IP协议报格式 今天先不挨个解释,我们先来看一看其中有趣的两项。 *8位生存时间TTL*:TTL是一个控制IP数据报在传输过程中的有效时间的类型,详细的可以参考LaoXianYu的TTL,接下来我们来详细的说它后面的那8位。 *8位协议*:开头说了,IP协议是一个不可靠的协议,它还有可靠的上层协议;那上层协议用的是什么协议呢?究竟是TCP还是UDP,答案就在这 8位协议 上。这儿的8位就指出了IP协议的上层用的什么协议。 Linux系统的朋友可以查看 /etc/protocols 这个文件。 (注意:这个图没有截完,下面还有很多,一直到了142了吧) 该文件是网络协议定义文件,里面记录了TCP/IP协议族的所有协议类型。文件中的每一行对应一个协议类型,它有3个字段,中间用TAB或空格分隔,分别表示“协议名称”、“协议号”和“协议别名”。 也就是说,如果这儿8位协议的值为 1,那上层就是用的ICMP;如果为 2,那上层用的就是IGMP;如果为 6,那上层用的就是TCP。……

阅读全文

ICMP

什么是ICMP? ICMP是(Internet Control Message Protocol)Internet控制报文协议。 ICMP协议有什么用? 它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用、端口是否可达等网络本身的消息。 这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。也就是说每次在传输IP数据包之前,都会利用ICMP去检测一番,然后再决定是否传输IP数据包。 ICMP协议类型 其中有 0:回显应答 8:回显请求 Ping命令就是利用这两种类型的ICMP数据包。 一台主机向一个节点发送一个Type=8的ICMP报文,如果途中没有异常(例如被路由器丢弃、目标不回应ICMP或传输失败),则目标返回Type=0的ICMP报文,说明这台主机存在,更详细的traceroute通过计算ICMP报文通过的节点来确定主机与目标之间的网络距离。 (在上一篇中说道Tracroute利用了TTL,同时traceroute也利用了ICMP) 技术交流可加QQ群:774332965……

阅读全文