ip探针生成链接的应用场景有哪些

爱站 前天 4 0条评论
摘要: 许多网站或应用程序会根据用户的地理位置,推荐当地的新闻、商品、优惠活动等内容,从而提升用户体验。ip探针生成链接可以帮助网站或应用快速获取用户的位置信息,实现个性化的内容推荐。广告...

许多网站或应用程序会根据用户的地理位置,推荐当地的新闻、商品、优惠活动等内容,从而提升用户体验。ip探针生成链接可以帮助网站或应用快速获取用户的位置信息,实现个性化的内容推荐。

广告主通常希望将广告精准地投放给目标受众,ip探针生成链接可以帮助广告系统识别用户的地理位置,从而投放针对性更强的广告,提高广告的转化率。

一些网站或应用程序会根据用户的地理位置信息,对某些敏感操作进行限制,比如限制特定地区的用户访问某些功能或页面,以防止潜在的风险。ip探针生成链接可以帮助网站或应用程序识别用户的地理位置,实现这种地域性风险控制。

许多网站或应用程序会根据用户的地理位置信息,提供本地化的服务,如本地天气信息、本地优惠活动、本地交通信息等,从而为用户提供更加贴心的体验。ip探针生成链接在这种场景中发挥着重要作用。


k8s 如何让你的应用活的更久

众所周知,k8s 可以托管你的服务 / 应用,当出现各种原因导致你的应用挂掉之后,k8s 会自动重启你的服务,那么 k8s 是如何做到的呢?它又是通过什么功能实现这个效果的呢?这就是本文将要介绍的内容: 副本控制器及 存活探针 。

注:因为本文讨论的是如何让应用活的更久,所以文中提到的 pod 类型均为持久型,不包含其他如 Job 之类的应用。

首先解释一下副本控制器是什么,副本控制器是 k8s 中用于控制 pod 数量的一个工具,只要 告诉它你期望中的 pod 有多少,他就会努力去把 pod 控制在这个数量 。 这个副本控制器具体有两种,分别是: ReplicationController (简称 rc )和 ReplicaSet (简称 rs )。 在具体了解他们的区别之前,我们先来看一下副本控制器为了达到目标(把 pod 数量维持在你给它的期望值)都做了那些事:

很简单不是么,只做了两步,这和把大象塞进冰箱没什么实质性的区别。 好,先来看第一步:如何找到目标 pod。

副本控制器是通过 pod 的标签来进行查找的 ,在创建副本控制器时,需要给他指定标签选择器。 在生成之后,它就会通过自己携带的选择器来查找 pod 并将其纳入自己的管辖之下。 比如,你可以通过下述文件创建一个 ReplicationController ,我们给其命名为 kubia-controller :

然后使用 kubectl create -f 就可以创建出一个可用的副本控制器了。这时候再使用 kubectl get pod ,就会发现副本控制器 kubia-controller 自己创建了三个 pod:

kubia-controller 在创建之后发现自己要管理的 pod 一个都没有( 在 里我们指定了要检查标签 app 的值为 kubia 的 pod ),于是 kubia-controller 根据 里我们告诉它的 pod 模板创建了三个新的 pod。

这时候如果我们使用 kubectl delete pod kubia-2bb8c 杀死其中的一个 pod。再次查看之后就会发现 kubia-controller 又创建出了一个全新的 pod:

这里需要强调的是, 副本控制器是通过 pod 的标签来进行控制的 。 如果修改了某个 pod 的标签,那么就可以使其脱离指定 rc 的控制。

例如,我们刚才生成的 kubia-controller 控制器是控制标签 app 的值为 kubia 的 pod。 如下,我们修改一个已存在 pod 的标签。 然后就会发现 kubia-controller 又新建了一个 pod,这说明标签被我们修改的 pod 脱离了该副本控制器的管理:

这时再把这个 pod 的标签改回来,就可以看到 kubia-controller 因为副本数量大于 4,不符合期望数量而删除了一个 pod。

了解完了 ReplicationController 之后再来看一下 ReplicaSet (简称 rs )。 其实这两个的区别就是, rs 支持更加完善的标签选择器,例如, rc 的标签选择器允许包含某个标签的 pod。 而 rs 支持如下条件:

好了,下面来看一下如何生成一个 rs ,首先生成如下 yaml 文件:

然后使用 kubectl create -f 来创建出一个 rs 资源,如果你认真观察了,你就会发现这个配置与 rc 的配置几乎完全一样。 事实上,k8s 在实际的使用中几乎已经用 rs 完全代替了 rc 。

了解完了副本控制器后,我们再来看一下存活探针,这个存活探针是用在什么地方的呢?我们知道副本控制器可以把 pod 的数量保持在期望的数量。 再详细一点就是: 副本控制器可以把运行状态在 Running 的 pod 数量维持在期望的数量 。

那么问题来了,如果 pod 里运行的 docker 容器已经假死了,但是 k8s 不知道他已经挂掉了怎么办?例如:一个 java 程序因为内存溢出异常停止服务了,但是 JVM 依旧在运行。 这时 k8s 依旧会把该 pod 的状态标记为 Running 。

这时候,如果有一个小工具,把他插在 pod 上,不停的进行测试,然后对外输出 pod 里运行的服务是否状态良好就好了。 是的,这个小工具就是存活探针。

存活探针都有什么手段来进行测试?

存活探针的监测方式包括以下三种:

接下来因为篇幅作者能力的原因,只简单讲述一下最常用的 http get 存活探针。首先来介绍一下如何创建一个 http 存活探针:

然后使用 kubectl create -f 即可创建一个拥有 http 探针的 pod。 可以看到,想要创建探针只需要给 containers 数组的元素指定 livenessProbe 字段即可,然后使用 httpGet 创建一个 http 探针。 httpGet 需要如下两个属性:请求的访问路径 path 以及访问端口 port 。

可以看到不需要指定其 ip 地址,因为 pod 的 ip 并不是固定的。 探针会动态的获取其 ip 地址进行测试。 这里使用的 luksa/kubia-unhealthy 是一个存在”异常“的 web 应用。 向端口 8080 请求超过 5 次后服务会停止正常服务。

启动之后获取 pod 看一下:

没问题呀,看起来一切正常,我们执行 kubectl logs -f kubia-liveness 打开它的日志看一下:

你会看到服务正在缓慢的被请求,这个请求就是我们定义的 http 探针发出的。当我们耐心的等待到 8 次之后,日志突然被关闭了,怎么回事?这时我们再 kubectl get pod 看一下,可以看到他的 RESTARTS 值从 0 变成了 1 ,原来是因为容器重启了呀:

我们还可以通过 kubectl describe pod kubia-liveness 来查看他的详细重启信息,以下是 pod 的事件信息,你可以在输出的末尾找到它:

可以看到第四条事件被标记为了 Warning ,而原因是因为探针检查到了 pod 的响应状态为500 服务器错误。 然后从第 5 ~ 7 条事件可以看到 pod 被杀死并重新启动。

如果你足够无聊,在 pod 重启数十次之后你可能会发现他的状态变成了CrashLoopBackOff ,这是容器多次异常退出导致的。 不过不用担心,k8s 依旧会尽力重启它,经过几十秒时候你就可以看到容器的状态重新变成 Running 了。

存活探针的附加属性

现在我们更近一步,了解存活探针的具体配置。 执行 kubectl get pod kubia-liveness -o yaml 命令来打开该容器的完整 yaml 配置。 然后我们定位到 livenessProbe 字段,如下,可以看到完整的配置里多出了几个属性,需要我们关注的就是下面添加了注释的四条属性:

首先回想一下, luksa/kubia-unhealthy 容器会响应五次请求,然后返回 500 服务器异常,那为什么我们看到日志里刷新出了 8 次请求后容器才重启呢?这个就是 failureThreshold 属性的功劳。

存活探针在发现了请求失败时首先会将 pod 标记为异常状态。 然后继续发送请求, 如果依旧失败的请求次数超过了 failureThreshold 的次数,那么容器将会被删除重建,而在被标记为异常状态之后如果请求成功了,并且成功的总次数超过了 successThreshold 的次数。 那么异常状态将会被清除。 至于 timeoutSeconds 属性则代表了请求的超时时间,而 periodSeconds 则是间隔多久进行下一次测试,它们两个的单位都是秒。

上述四个属性是属于 livenessProbe 对象的,而非 httpGet 对象,在创建时不要搞错缩进了。

探针导致的问题

探针并不是尽善尽美的,如果使用不当的话很容易引起无限重启的问题。最容易发生的是以下三种:

k8s 通过副本控制器和存活探针来保证服务健康可靠。 副本控制器分为 ReplicationController 和 ReplicaSet 两种,但是在实际使用中 rs 已经全面取代了 rc 。 副本控制器通过规定好的标签来将容器纳入自己的管理,并根据用户指定的期望数量来维持实际存在的容器数量。 但是副本控制器只能保证 Running 的副本数量不会减改变,而不能得知处于 Running 状态的容器是否健康。 为了实现这个目标,我们使用存活探针来获取容器内部的服务是否健康。 通过自定义的探针,k8s 就可以持续的获取容器的内部状态,进而完成更加可靠的健康管理。

UART串口WiFi模块的工作原理及应用

随着物联网智能家居应用的日渐丰富,越来越多的WiFi工程师开始更多的关注UART串口WiFi模块,为让新手工程师更快的将UART串口WiFi模块应用于各类智能家居应用中,本篇SKYLAB君简单为大家介绍UART串口WiFi模块的工作原理及应用。 UART串口WiFi模块是基于UART接口的符合WiFi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈,能够实现用户串口或TTL电平数据到无线网络之间的转换。 串口WiFi模块工作方式分别是透传模式和命令模式,透传模式下,不管发送什么数据给模块,模块都不会进行处理(退出透传模式的相关指令除外),而是直接将数据进行封装并发送。 通过UART接口WiFi模块,传统的串口设备也能轻松接入无线网络,适合于各类智能家居或智能硬件中,比如现在很多带WiFi功能的电视、空调、冰箱等。 比如说,智能轮椅内部应该有MCU作为整个设备主控芯片,实现智能轮椅转动、前进、后退、转向的等等相关控制逻辑功能。 WiFi模块通常采用串口引脚与主控MCU串口对接,工作在透传的模式下,主控MCU将轮椅相关的控制指令、设备状态,通过串口数据包发送到WiFi模块中。 WiFi模块配置上之后,将数据传输到智能家居系统的云端平台中。 APP端是基于云端平台上的设备状态数据,实现控制交互。 能实现如上应用的SKYLAB UART WiFi模块有WU106和WG219。 SKYLAB UART WiFi模块WU106/WG219主要用于需要串口透传的物联网应用:智能电网、智能交通、智能家居、手持设备、工业控制等领域如智能排插、智能灯控、网状网络(WiFi Mesh)、工业无线控制、传感器网络、家庭自动化、安全ID标签、WiFi探针、WiFi热点广告等应用场景。 更多关于UART WiFi模块WU106/WG219的性能参数和规格书可直接访问SKYLAB官网。 以上模块现已支持DEMO送样,索样热线。 更多无线模块及解决方案正在设计研发中,敬请期待。

IP网络主动测评系统——X-Vision

网络运维面临的挑战日益增加,包括网络拓扑不断调整变更、业务不断丰富、终端类型多样化以及故障高效有效的隔离。 常见运维工具难以满足用户需求,因此需要引入IP网络主动测评系统来解决上述问题。 主动监测与被动监测的区别在于,主动监测通过生成流量对网络或应用进行主动测试,可以提前发现网络瓶颈并提供解决时间,而被动监测则通过分析导入的网络流量数据包评估网络或应用质量。 X-Vision智能探针系统采用分布式设计和功能架构分层设计,具备展示层、逻辑事务层以及数据处理层,能够通过服务器扩展满足大规模监测需求。 系统具备可视、可知、可诊的功能,能够实现网络端到端质量、业务系统服务健康度、网络节点响应健康度的可视化,快速知晓网络及服务异常状况,并提供丰富的网络诊断手段,提高诊断效率。 系统分布部署、集中控制,便于运维管理。 基于WEB的控制平台可本地或云部署,配合主动监测探针分布式部署。 主动监测探针形态分为硬件探针和软件探针,主动监测模式灵活可控,支持双臂模式,包括网络转发性能测试、吞吐量测试、语音和视频承载质量测试,以及支持丰富的协议类型。 软硬件平台兼容性好,保障用户投资安全,支持兼容的CPU架构和操作系统。 X-Vision应用场景丰富,包括IP网络性能验证、无线质量监测、SD-WAN端到端测量和数据中心\云测试。 系统能够实现端点测试、长期流量测量、性能趋势分析、故障隔离、多租户管理、阈值配置与告警等功能。 在中山大学校园网、政务网、大型企业网以及河北广电机顶盒主动监测等成功案例中,X-Vision系统实现了端到端质量可视化、业务和外网资源访问情况可视化、及时知晓网络异常和降低IT支持工程师现场次数等功能,显著提高了网络运维效率和用户体验。

文章版权及转载声明:

作者:爱站本文地址:https://www.awz.cc/post/12467.html发布于 前天
文章转载或复制请以超链接形式并注明出处爱网站

赞(0