linux下查看系统socket读写缓冲区_eyucham的专栏
系统提供的socket缓冲区大小为8K,你可以将之设置为64K,尤其在传输实时视频时。 socket发送数据时候先把数据发送到socket缓冲区中,之后接受函数再从缓冲区中取数据,如果发送端特别快的时候,缓冲区很快就被填满(socket默认的是1024×8=8192字节),这时候我们应该根据情况设置缓冲区的大小,可以通过setsockopt函数实现 #include
系统提供的socket缓冲区大小为8K,你可以将之设置为64K,尤其在传输实时视频时。 socket发送数据时候先把数据发送到socket缓冲区中,之后接受函数再从缓冲区中取数据,如果发送端特别快的时候,缓冲区很快就被填满(socket默认的是1024×8=8192字节),这时候我们应该根据情况设置缓冲区的大小,可以通过setsockopt函数实现 #include
9 月 8 日,字节跳动正式宣布开源 CloudWeGo。这是一套以 Go 语言为核心、专注于微服务通信与治理的中间件集合,具有高性能、可扩展、高可靠的特点。 据介绍,作为项目维护方,字节跳动基础架构团队已推进项目以 CloudWeGo 开源库为主进行迭代,未来团队将坚持内外维护一套代码,统一迭代演进,并逐步分享更多内部微服务最佳实践。 项目地址:https://github.com/cloudwego 项目官网:www.cloudwego.io CloudWeGo 第一批开源了四个项目,以 RPC 框架 Kitex 和网络库 Netpoll 为主。 Kitex Kitex 是一个 Golang 微服务 RPC 框架,具有高性能、强可扩展的特点。 字节跳动使用 Golang 作为主要业务开...阅读全文
性就是序列 ID,它允许基于操作的分片恢复。 以前,如果由于网络问题或节点重启而从集群断开连接的节点,则节点上的每个分区都必须通过将分段文件与主分片进行比较并复制任何不同的分段来重新同步。 这可能是一个漫长而昂贵的过程,甚至使节点的滚动重新启动非常缓慢。 使用序列 ID,每个分片将只能重放该分片中缺少的操作,使恢复过程更加高效。 使用排序索引更快查询 通过索引排序,只要收集到足够的命中,搜索就可以终止。它对通常用作过滤器的低基数字段(例如 age, gender, is_published)进行排序时可以更高效的搜索,因为所有潜在的匹配文档都被分组在一起。 稀疏区域改进 以前,每个列中的每个字段都预留了一个存储空间。如果只有少数文档出现很多字段,则可能会导致磁盘空间的巨大浪费。现在,你付出你...阅读全文
节点的污点 在 pod 的 spec 中设置 tolerations 字段 ``` tolerations: - key: "node-role.kubernetes.io/master" operator: "Equal" value: "" effect: "NoSchedule" ```...阅读全文
serve_order() {} fn take_payment() {} } } 文件src/main.rs和src/lib.rs, 对应的模块是crate, 箱(crate)的模块结构(module structure), 也叫做模块树(module tree):crate └── front_of_house ├── hosting │ ├── add_to_waitlist │ └── seat_at_table └── serving ├── take_order ├── serve_order └── take_payment 注: 模块crate默认存在, 不需要通过关键字mod方式来定义路径Paths与文件系统类似, 文件系统的根节点是/, 箱(crate)的根节点是crate.绝对路径, 从箱...阅读全文
在2018年的 Linux Plumber 大会上,eBPF成了亮点,有24个议题提到了 eBPF,可以预计eBPF会成为一大技术热点。 eBPF(Extended Berkeley Packet Filter) 的核心是驻留在 kernel 的高效虚拟机。最初的目的是高效网络过滤框架,前身是 BPF。 Linux kernel 3.18版本开始包含了eBPF,相对于 BPF 做了一些重要改进,首先是效率,这要归功于 JIB 编译 eBPF 代码;其次是应用范围,从网络报文扩展到一般事件处理;最后不再使用socket,使用map进行高效的数据存储。 根据以上的改进,内核开发人员在不到两年半的事件,做出了包括网络监控、限速和系统监控。目前eBPF可以分解为三个过程: 以字节码的形式创建...阅读全文
Debian 是 Debian 项目的创始人 Ian Murdock 和他的妻子 Debra 的名字缩写。值得一提的是,Debian 是第一个 Linux 发行版,它首次发布于 1993 年 9 月。 根据 Debian 的官方网站建议,它应该这样读:Deb'-ee-en ,“得比恩”,重音在第一音节。“得变” 有点接近,因为是重音,deb 应该发成类似“跌”的发音。 也就是“跌扁”,“蝶变”。 这里提供两种很标准的 Debian 标准发音,供参考。 第一个发音是带西班牙口音的 Debian 发音方式(MP3文件下载): 这一个是较美式的 Debian 读法(MP3文件下载):...阅读全文
(Scheduler)来解决。 Scheduler 作为一个独立的组件运行在集群控制平面上,工作方式与其他 Controller 相同:监听实际并将系统状态调整到期望的状态。具体来说,Scheduler 的作用是将待调度的 Pod 按照特定的算法和调度策略绑定(Binding)到集群中某个合适的 Node 上,并将绑定信息写入 etcd 中(它会过滤其 PodSpec 中 NodeName 字段为空的 Pod),默认的调度算法的工作方式如下: 当 Scheduler 启动时,会注册一个默认的预选策略链,这些预选策略会对备选节点进行评估,判断备选节点是否满足备选 Pod 的需求。例如,如果 PodSpec 字段限制了 CPU 和内存资源,那么当备选节点的资源容量不满足备选 Pod 的需求时,备选 Pod 就不会...阅读全文
riched20 这个过程要下载两个文件W2KSP4_EN.EXE与InstMsiW.exe,很难下载,中断了失败不要紧,可以不断执行winetricks riched20,直到网络能够连上解决的话下载成功就OK。 安装好riched20库后,可以按上面小节“安装应用”的方法,安装微信与QQ。笔者成功用wine安装微信PC版2.9.5与QQ PC版9.3.7。并且用fcitx输入法可以输入文字。 其中找不到wine的QQ如何打开的话,它路径是~/.wine/drive_c/Program Files (x86)/Tencent/QQ/Bin/QQ.exe,右击选择wine打开即可。 补充:同样方法也安装TIM(如果有冲突说另一程序运行,可以重启电脑再安装)成功。路径为~/.wine/drive_c...阅读全文
](https://github.com/lifei6671/interview-go/blob/master/question/q015.md) - [记一道字节跳动的算法面试题](https://github.com/lifei6671/interview-go/blob/master/question/q016.md) - [多协程查询切片问题](https://github.com/lifei6671/interview-go/blob/master/question/q017.md) - [对已经关闭的的chan进行读写,会怎么样?为什么?](https://github.com/lifei6671/interview-go/blob/master/question/q018.md...阅读全文
Python 开发者现在可以观摩下美国情报机构 NSA 是如何培训 Python 程序员的。软件工程师 Chris Swenson 根据信息自由法案递交申请,要求访问 NSA 的 Python 培训材料,结果收到了 400 页经过编辑的 NSA COMP 3321 Python 培训课程打印资料。 Swenson 扫描了打印稿,用 OCR 进行识别,确保数字档案可搜索,将其托管在 Digital Oceans Spaces,之后又被上传到了互联网档案馆。Swenson 称他问 NSA 索要 Python 培训材料纯粹是出于好奇。 Python 开发者 Kushal Das 观摩之后摘录些有趣的细节:NSA 有内部的 Python 包索引,其 GitLab 实例是...阅读全文
Debian 目前正在进行一项桌面壁纸调查投票,为即将到来的 Debian GNU/Linux 10 "Buster" 版本选择默认壁纸。该调查在本周公布,1月6日结束。该调查针对11个背景图片和艺术作品进行投票,最终确定 Debian 下一个版本的默认壁纸。 上面的图片为一部分艺术品的提案。考虑到 Buster 代号跟玩具总动员中的一只狗的名字而来,所以特意选择了一只狗的背景图片。 匿名调查表格可以通过 survey.debian.net 获得,每个艺术品的更多细节可以在 Debian 百科上找到。 Debian 10.0 预计将在明年发布,并通过 Debian 9 "Stretch" 系列进行多次升级。...阅读全文
) 对style的操作(对不同的属性操作,影响不一样) 还有一种是用户的操作,比如改变浏览器大小,改变浏览器的字体大小等(回流+重绘) 4、本地存储 本地存储最原始的方式就是 cookie,cookie 是存放在本地浏览器的一段文本,数据以键值对的形式保存,可以设置过期时间。 但是 cookie 不适合大量数据的存储,因为每请求一次页面,cookie 都会发送给服务器,这使得 cookie 速度很慢而且效率也不高。因此cookie的大小被限制为4k左右(不同浏览器可能不同,分HOST),如下所示: Firefox和Safari允许cookie多达4097个字节,包括名(name)、值(value)和等号。 Opera允许cookie多达4096个字节,包括:名(name)、值(value)和等号...阅读全文
Ubuntu 19.10 生命周期将在今年 7 月结束,之后一段时间内最大的版本则是 Ubuntu 20.04 LTS,其重大更新和改进将在 2030 年前终止。 20.04 是 Ubuntu 的第 8 个 LTS 版本,计划于明年 4 月 23 日发布。Canonical 会为 10 份月发布的版本制定 25 周时间表和 4 月发布的版本制定 27 周时间表来指导 LTS 的发展,Ubuntu 20.04 的开发生命周期遵循的正是 27 周的发布时间表。如 Ubuntu wiki 所示, 从这个表中我们可以看到几个关键节点: 2 月 27 日:特性冻结 Ubuntu 团队停止引入新特性、程序包和 API,他们开始专注于修复开发版本中的 bug。 3 月 19 日:冻结用户界面 此时,用户...阅读全文
使用以1024为基数的 K, M, G, T, P, E 后缀, 分别对应于 1024, 1024², … 字节。 SystemMaxFiles= 与 RuntimeMaxFiles= 限制最多允许同时存在多少个日志文件, 超出此限制后, 最老的日志文件将被删除, 而当前的活动日志文件则不受影响。 默认值为100个。 MaxFileSec= 日志滚动的时间间隔。 通常并不需要使用基于时间的日志滚动策略, 因为由 SystemMaxFileSize= 与 RuntimeMaxFileSize= 控制的基于文件大小的日志滚动策略 已经可以确保日志文件的大小不会超标。 默认值是一个月, 设为零表示禁用基于时间的日志滚动策略。 可以使用 "year", "month", "week", "day...阅读全文
发的全链路影子库路由组件借助了 OpenTracing 随行数据透传机制,且与监控组件是强耦合关系,而基础框架将统筹监控,压测和其他模块,借助Spring Boot Starter 机制,一定程度上做到了功能的开箱即用,无缝集成。而使用字节码增强方式的 Pinpoint, SkyWalking,无法很好地做到与基础框架集成,若并行开发,也会多出基础框架与 Java Agent 两边的管理和维护成本,减缓迭代速度。 在之后将近两年的时间里,应用服务监控覆盖了得物技术部使用的将近 70% 的组件,为得物App在 2021 年实现全年 99.97% 的 SLA 提供了强有力的支持。现在看来,基于 OpenTracing + Prometheus 生态,很好地解决了分布式系统的调用链监控,借助...阅读全文
据信息。 3. HDFS的特性 首先,它是一个文件系统,用于存储文件,通过统一的命名空间目录树来定位文件; 其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。 1. master/slave 架构(主从架构) HDFS 采用 master/slave 架构。一般一个 HDFS 集群是有一个 Namenode 和一定数目的 Datanode 组成。Namenode 是 HDFS 集群主节点,Datanode 是 HDFS 集群从节点,两种角色各司其职,共同协调完成分布式的文件存储服务。 2. 分块存储 HDFS 中的文件在物理上是分块存储(block)的,块的大小可以通过配置参数来规定,默认大小在 hadoop2.x 版本中是 128M。 3. 名字空间...阅读全文
-pc -c topprocs_net container.name=debian.cn查看在 debian.cn 容器里占用 I/O 字节最多的文件:sudo sysdig -pc -c topfiles_bytes container.name=debian.cn查看在 debian.cn 容器里网络连接的排名情况:sudo sysdig -pc -c topconns container.name=debian.cn显示 debian.cn 容器里所有命令执行的情况:sudo sysdig -pc -c spy_users container.name=debian.cn 应用 查看机器所有的HTTP请求:sudo sysdig -s 2000 -A -c echo_fds fd.port...阅读全文
, namespace) / sum(container_spec_memory_limit_bytes{image!=""}) by(pod_name, namespace) * 100 != +inf Pod 文件系统使用量 sum(container_fs_usage_bytes{image!=""}) by(pod_name, namespace) / 1024 / 1024 / 1024 Pod 的网络使用情况 一分钟内发送的字节量: sum(rate(container_network_transmit_bytes_total{image!=""}[1m])) by (pod_name) 一分钟内接受的字节量: sum(rate...阅读全文
级的记录,按照权重选择,记录的权重越高,被选择的可能性越高。 选择的时候,将所有记录的权重值累加,得到一个选择区间[0,sum],每个记录在[0,sum]中占据一段连续的、长度为自身权重值区间。然后生成一个[0,sum]中的随机数,随机数落在的区间所属的记录就是被选择的记录。 注意事项 在使用DNS SRV的时候,要注意DNS Client是否按照预期的方式处理收到的SRV记录。当前DNS SRV只能够负责提供服务地址列表,对这个列表如何解读,完全取决于Client的实现。rfc-1035中规定,通过UDP协议传输DNS响应时,UDP报文的负载不能超过512字节,在添加 SRV 记录的时候,要特别注意。通过TCP传输时没有512字节的限制。当一个服务地址有多个相同优先级的SRV记录的时候...阅读全文
、Workload 等各种标签类型维度分析。 - 资源分配和使用。 - 包含一个集群健康检查的功能,类似集群巡检和健康检查。 ### Overview ![](https://main.qcloudimg.com/raw/5d189e38aab69d433a9a6bda3320e0e2.png) **上述图中数字序号标示处相关说明可参考下文对应说明介绍**: 1. 月度预估可以节省的**金额**以及可以节省成本的**优化建议数量**。 2. **月度账单和成本效率**: - 月度账单:基于过去7天资源消耗的**预测值**。 - 成本效率:基于过去2天的成本效率。 计算方法:(每种资源利用率 × 各自的价格之和)/ 总价格 3. **月度集群账单**。账单维度包括 Total cost、Compute...阅读全文
PHP 7.4 的GA版今天正式发布了。PHP 7.4发布后,PHP 7.3或其它的PHP 7版本都可以升级到PHP 7.4版。 PHP 7.4 的主要特性包括以下几个, 短闭包函数(short closure)预加载提交性能属性类型限定Improved type variance(不会翻译)三元运算简写数组展开运算新增类的魔术方法:serialization数字分隔符运算优先顺序允许在__toString中抛出异常支持反射引用新增字节分割函数移除php短标签弃用左关联运算符不再向后兼容的变更 短闭包函数 短闭包函数可以减少冗余代码: array_map(function (User $user) { return $user->id; }, $users) array_map(fn...阅读全文
Debian 系统安装以后,可能会遇到网卡设备名不是常见的 eth0 的情况。我们有没有办法统一网卡设备名称呢? 在服务器环境中,统一网卡设备名是很有必要的。标准化的配置会节省我们大量的时间,这些时间可能会花在排障、监控的配置、状态收集脚本的调整等。 这里我们介绍如何把 Debian 系统中的网卡从非 eth0,调整为 eth0,这个设备名是各 Linux 系统中比较通用的网卡设备名。下面我们以设备名 ens3 为例,介绍在Debian 系统中,如何修改网卡设备名为 eth0 的具体步骤。 首选,我们需要编辑 grub 的配置文件,修改启动参数。使用编辑器打开 /etc/default/grub, 查找: GRUB_CMDLINE_LINUX="" 找到这行,并修改为...阅读全文
。 关于 Kotlin/Native 说了这么多,Kotlin/Native 到底是什么?Kotlin/Native 能将 Kotlin 编译成机器码,目前还处于技术预览版阶段,离商用估计还需要至少一年的时间。 Kotlin/Native 不是 Jni 的概念,它不仅仅是要与底层代码比如 C、C++ 交互,而且还要绕过 JVM 直接编译成机器码供系统运行。这说明了什么?Kotlin 准备扔掉 Java 这根拐杖了。 第一次看到 Native 这个名字或许会很自然地想到 Jni,Kotlin 跑在 JVM 上面,使用 Jni 与底层代码交互。不过详细深入研究后可以发现,Kotlin 开发团队的野心不可小觑,Java 诞生这么多年,也没有涉足过编译成除 Java 虚拟机字节码以外的字节码的事情...阅读全文
context链可能是这样的:当前cancelCtx的父节点context并不是一个可取消的context,也就没法记录children。timerCtxtimerCtx是一种基于cancelCtx的context类型,从字面上就能看出,这是一种可以定时取消的context。type timerCtx struct { cancelCtx timer *time.Timer // Under cancelCtx.mu. deadline time.Time } func (c *timerCtx) Deadline() (deadline time.Time, ok bool) { return c.deadline, true } func (c *timerCtx) cancel...阅读全文
#14123] 逆序打印(从旧到新)调用跟踪和错误消息。当在终端(TTY)中用较长的调用跟踪信息时,你可以从最底部看到直接触发问题的行。需要注意的是,仅当在直接输出到终端时,才会逆序打印。[功能 #8661] [试验性] 性能提升 通过在字节码中移除了全部 trace 指令提升了大约 5-10% 的性能。trace 指令的引入是为了提供 TracePoint的支持。然而,在大多数情况,TracePoint 不会被用到,trace 指令增加了额外的开销。作为替代,我们实现了一个动态指令技术,详情见 [功能 #14104]。 通过懒惰 Proc 分配使 block 参数传递代码块(例如 def foo(&b); bar(&b); end)的性能相较于 Ruby 2.4 提升了约 3 倍。[功能...阅读全文
,LFS 绝对配得上称为一本好书,或者说一本好教材。市面上,很难再找到一本如此具体又如此精炼的教材了。 首先,它并不是只是讲讲简单概念,它很具体,具体到就是一个例子,一个告诉你怎么亲手构建出属于自己的 Linux 系统的例子。 其次,它很精炼,它的精炼表现在两个方面:系统构建出来不臃肿;文字描述很精炼。 最后还有一点,这一点至关重要。尽管文字的描述非常精炼,甚至是精炼到枯燥,但是作为一本教材,作者无时无刻不再想尽办法,让你学到东西。无论是编译指令下方各个参数的介绍,还是软件包安装小节下方软件包内容的介绍,作者真的是想尽办法的试图把知识传递给读者。 LFS 没有缺点吗? 那自然是有的,可以原封不动的照抄上面的优点。辩证的看待这些优点,你就会发现这些优点是有代价的。 首先,由于这个例子过于生动形象,所...阅读全文
对于云主机与云主机之间,只有轻微差异(小包场景下,pps 会有 3~5% 损耗),而且Pod网络性能各项指标(吞吐量,包量,延迟等)不会随着节点规模增大而削减。而Flannel UDP,VXLan模式和Calico IPIP的模式存在明显的性能消耗。Pod能直通公有云和物理云。对于使用公有云和物理云的用户而言,业务上K8S少了一层障碍,多了一份便利。而Flannel的host gw模式下,容器无法访问公有云和物理云主机。 而CNI的工作流程如下所示。 创建Pod网络过程: 删除Pod网络过程: Pod IP 消失问题的排查与解决 为了测试CNI插件的稳定性,测试同学在UK8S上部署了一个CronJob,每分钟运行一个Job任务,一天要运行1440个任务。该CronJob定义如下...阅读全文
查可能会带来意外问题;此选项用于将其检查的时间间隔长度上增加或减小一定的随机时长; – tune.bufsize
LXD 3.8 发布了,LXD 是下一代容器管理程序,它提供类似于虚拟机的用户体验,但使用的是 Linux 容器。LXD 的核心是一个特权守护程序,它通过本地 unix 套接字以及网络暴露 REST API。随后客户端通过该 REST API 执行所有操作,这意味着无论是与本地主机还是远程服务器通信,都以相同的方式运行。LXD 附带提供命令行客户端。 此版本改进了许多功能,还带来一些新功能,包括: 自动化容器快照 引入了三个配置键来控制自动快照并配置它们的命名方式。 支持项目之间的复制/移动 lxc copy 和 lxc move 都添加了一个新的 –target-project 选项,可以在项目之间复制或移动容器。 cluster.https_address 服务器选项 以往,集群...阅读全文
减少耦合的操作,需要通过提供类型需要的依赖项作为该类型上的字段,而不是使用包变量。 简单性很重要 简单性不是老练的代名词。简单并不意味着粗糙,它意味着可读性和可维护性。如果可以选择,请遵循较简单的解决方案。 编写测试以确认包 API 的行为 软件包的 API 是与使用者的一份合约,不管先后,不管多少,一定要进行测试。测试是确定合约的保证。要确保测试使用者可以观察和依赖的行为。 如果你认为速度缓慢,先通过基准测试进行验证 以性能之名会犯下许多危害可维护性的罪行。优化会破坏抽象、暴露内部和紧密耦合。如果要付出这样的代价,请确保有充分理由这样做。 节制是一种美德 适度使用 goroutine、通道、锁、接口与嵌套。...阅读全文
的支持。可以将docker的/metrics端点暴露给插件: $ docker plugin install --grant-all-permissions cpuguy83/docker-metrics-plugin-test:latest $ curl http://127.0.0.1:19393/metrics 这个插件仅用于示范。它在主机的网络上运行了一个反向代理,能将请求转发给插件中的本地的指标套接字。在真实场景中,可能会将收集的指标数据发送给外部的服务,或者使它可以被一个服务如Prometheus访问并收集。 注意尽管指标插件在非实验性的daemon中可以使用,指标标签(metrics label)仍应该被看作是实验性的,可能在Docker未来的版本中发生改动。 日志驱动插件 添...阅读全文
会自动覆盖最早的文档。当该值为 true 时,必须指定 size 参数。 autoIndexId 布尔 (可选)如为 true,自动在 _id 字段创建索引。默认为 false。 size 数值 (可选)为固定集合指定一个最大值,以千字节计(KB)。如果 capped 为 true,也需要指定该字段。 max 数值 (可选)指定固定集合中包含文档的最大数量。 在插入文档时,MongoDB 首先检查固定集合的 size 字段,然后检查 max 字段 实例 # 在test数据库中创建ruochen 集合 use test db.createCollection('ruochen') # 查看已有集合 show collections db.createCollection('test...阅读全文
-rule 200and404 code 200,404 cache-rule all code all if|unless condition 定义 ACL 条件 详见HAProxy configuration的7. Using ACLs and fetching samples 常见问题 如何调试? 在global添加debug, 或者带-d启动haproxy 缓存相关的调试信息以[CACHE]开头 如何缓存 POST 请求? 添加option http-buffer-request 如果自定义了 key 的话需要使用body关键字 请求 body 可能不完整,详见HAProxy configuration 的 option http-buffer-request小节 另外可以为 post 请求...阅读全文
,controller.quorum.voters 配置中提供的节点ID必须与提供给服务器的节点ID匹配。比如在Controller1上,node.Id必须设置为1,以此类推。注意,控制器id不强制要求你从0或1开始。然而,分配节点ID的最简单和最不容易混淆的方法是给每个服务器一个数字ID,然后从0开始。(二)下载并解压安装包bigdata01下载kafka的安装包,并进行解压:[hadoop@bigdata01 kraft]$ cd /opt/soft/[hadoop@bigdata01 soft]$ wget http://archive.apache.org/dist/kafka/3.1.0/kafka_2.12-3.1.0.tgz[hadoop@bigdata01 soft]$ tar -zxf kafka_2.12-3.1.0...阅读全文
IPv4 和 IPv6 两个地址。注意,如果使用了 CNI 插件和云服务商扩展(Cloud Provider),CNI 插件和云服务商扩展也需要支持 IPv4/IPv6 双栈。CSIVolumeHealth Alpha 和 CSIStorageCapacity Beta从 v1.21 开始,Kubernetes 支持 CSI 存储插件的 Volume 健康检查(Alpha 版),CSI 插件需要实现外部健康监控控制器。当 Volume 或者 Node 出现异常时,该控制器会向 Volume 所属的 PVC 以及使用该 PVC 的 Pod 发送一个异常事件。CSIStorageCapacity 用于跟踪 CSI 存储容量并确保 Pod 调度到足够存储容量的节点上。该特性从 v1.21 开始进入...阅读全文
RabbitMQ 3.8.8 已经发布。RabbitMQ 是一个 Advanced Message Queuing Protocol(AMQP)的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 编写而成,因此它也继承了这些优点。 此版本最大亮点是引入了一种新的节点操作模式,称为维护模式。 当将节点放下进行维护并处于维护模式时,该节点将无法用于服务客户端流量,并且将尝试尽可能实际地转移其职责使其安全。当前,这涉及以下步骤: 挂起所有客户端连接侦听器(不接受新的客户端连接)关闭所有现有的客户端连接:应用程序应重新连接到其它节点并恢复所有经典镜像队列的主副本托管在传输目标节点上所有仲裁队列的主要副本托管在传输目标节点上,并阻止它们参与随后触发的 Raft 选举将节点标记为关闭以进行维...阅读全文
kubernetes,简称K8s,是知名的开源容器编排与调度平台,它的目标是让容器化部署、资源分配简单且高效。K8s是绝对主流且流行的容器管理平台,据说在合肥运维同学不会k8s是找不到工作的。本文我们将列举常用的kubernetes命令,后续会完善内容并提升易读性。 想起十几年前,我曾在Linux伊甸园的论坛,整理过一份rpm常用命令的列表,不知有多少朋友看过? 查看所有namespace的pods运行情况 kubectl get pods --all-namespaces 查看具体pods,记得后边跟namespace名字哦 kubectl get pods kubernetes-dashboard-76479d66bb-nj8wr --namespace=kube-system 查看...阅读全文
如果 RabbitMQ 集群只有一个 broker 节点,那么该节点的失效将导致整个服务临时性的不可用,并且可能会导致 message 的丢失(尤其是在非持久化 message 存储于非持久化 queue 中的时候)。可以将所有 message 都设置为持久化,并且使用持久化的 queue,但是这样仍然无法避免由于缓存导致的问题:因为 message 在发送之后和被写入磁盘并执行 fsync 之间存在一个虽然短暂但是会产生问题的时间窗。通过 publisher 的 confirm 机制能够确保客户端知道哪些 message 已经存入磁盘,尽管如此,一般不希望遇到因单点故障导致服务不可用。 如果 RabbitMQ 集群是由多个 broker 节点构成的,那么从服务的整体可用性上来讲,该集群对...阅读全文
览我之前翻译的Kubernetes 的自动伸缩你用对了吗?;HPA 除了可以基于 CPU 指标伸缩,还可以基于内存,或者自定义指标,可以浏览Kubernetes HPA 基于 Prometheus 自定义指标的可控弹性伸缩。使用资源请求和约束应设置资源请求和约束(可在容器中使用的最小和最大资源量)以避免容器在未分配所需资源的情况下启动,或集群用尽可用资源。在没有限制的情况下,Pod 可以使用比所需更多的资源,从而导致可用资源总量减少,这可能会导致集群上的其他应用程序出现问题。节点可能会崩溃,并且调度程序可能无法正确调度新的 pod。如果没有请求,无法为应用程序分配足够的资源,它可能会在尝试启动或执行异常时失败。资源请求和限制以毫核和兆字节为单位定义可用的 CPU 和内存。请注意,如果进程超出...阅读全文
TKE集群在创建时,会设置节点上允许的Pod数量的上限,一般默认是64个。 这里介绍,如何把单节点的 Pod 数量上限,从 32个 调整到 64个,分两种: 1. 新增的节点,需要在创建节点时指定最大Pod 的上限,增加一个自定义项即可, ![94e3.png](https://img.debian.cn/210826/d5feab6345ffe7746904b417470594e3.png) 2. 存量的节点可以使用这个脚本更新一下配置: ``` #!/bin/bash grep MAX_PODS /etc/kubernetes/kubelet if [ $? -eq 0 ]; then echo 'patched already' sed...阅读全文
KEYS命令,严格禁止在生产环境中使用) Redis的数据结构和相关常用命令 本节中将介绍Redis支持的主要数据结构,以及相关的常用Redis命令。本节只对Redis命令进行扼要的介绍,且只列出了较常用的命令。如果想要了解完整的Redis命令集,或了解某个命令的详细使用方法,请参考官方文档:https://redis.io/commands Key Redis采用Key-Value型的基本数据结构,任何二进制序列都可以作为Redis的Key使用(例如普通的字符串或一张JPEG图片) 关于Key的一些注意事项: 不要使用过长的Key。例如使用一个1024字节的key就不是一个好主意,不仅会消耗更多的内存,还会导致查找的效率降低 Key短到缺失了可读性也是不好的,例如”u1000flw”比起...阅读全文
我们将介绍,如何在三个树莓派上,创建出一套 Kubernetes 集群并正常使用。在这种场景下,主节点的内存和 CPU 资源较有限,执行 Kubernetes 任务时性能会有折扣,想做升级也不容易。 在开始之前,我们先介绍 K3s 这个项目。K3s 被誉为是最轻量级的 Kubernetes 发行版,它针对低配的 x86 和 ARM 处理器优化,可以让 Kubernetes 在树莓派上运行得更好。 基于 Raspbian 的 kubernetes 集群 本文我们将介绍如何使用 K3s 在树莓派上创建 Kubernetes 集群。系统我们用的是树莓派最流行的 Raspbian。 准备工作 在开始创建 Kubernetes 集群之前,我们需要准备, 至少一个树莓派,包括 SD 卡和电源网线,普通...阅读全文
截止目前k8s1.18,k8s已经支持标准容器,sidecar容器,init 容器,ephemeral 容器 4种类型的containers。本文我们详细介绍一下这4种容器的特性已经使用场景。 Ephemeral 容器 临时容器与其他容器的不同之处在于,它们缺少对资源或执行的保证,并且永远不会自动重启,因此不适用于构建应用程序。临时容器使用与常规容器相同的 ContainerSpec 段进行描述,但许多字段是不相容且不允许的。 临时容器没有端口配置,因此像 ports,livenessProbe,readinessProbe 这样的字段是不允许的。 Pod 资源分配是不可变的,因此 resources 配置是不允许的。 有关允许字段的完整列表,请参见临时容器参考文档。 临时容器是使用...阅读全文
详细徐叙述 2、设置数组边界值,一维数组就是设置第一个数字,二维数组就是设置第一行跟第一列的值,特别的滚动一维数组是要设置整个数组的值,然后根据后面不同的数据加进来变幻成不同的值。 3、找出状态转换方程,也就是说找到每个状态跟他上一个状态的关系,根据状态转化方程写出代码。 4、返回需要的值,一般是数组的最后一个或者二维数组的最右下角。 代码基本框架: for(j=1; j<=m; j=j+1) // 第一个阶段 xn[j] = 初始值; for(i=n-1; i>=1; i=i-1)// 其他n-1个阶段 for(j=1; j>=f(i); j=j+1)//f(i)与i有关的表达式 xi[j]=j=max(或min){g(xi-[j1:j2]), ......, g(xi-1[jk:jk+1...阅读全文
在前一篇文章中,我们介绍了 Debian Stretch 环境下,Kubernetes 集群安装的准备工作。本文我们将继续介绍 k8s集群 的安装配置工作。 第4步 - 设置主节点 在本节中,您将设置主节点。 但是,在创建任何Playbooks之前,值得介绍一些概念,例如Pod和Pod网络插件 ,因为您的群集将同时包含这两个概念。 pod是运行一个或多个容器的原子单元。 这些容器共享资源,例如文件卷和网络接口。 Pod是Kubernetes中的基本调度单元:pod中的所有容器都保证在调度pod的同一节点上运行。 每个pod都有自己的IP地址,一个节点上的pod应该能够使用pod的IP访问另一个节点上的pod。 单个节点上的容器可以通过本地接口轻松进行通信。 然而,pod之间的通信更复杂,并...阅读全文
在真正的生产环境中,如何合理的分配服务器资源、提高利用率、让整个集群运行的更加稳定使得 k8s-scheduler 这个角色在集群中的地位愈发重要。 kube-scheduler的预选(过滤)和精选(打分) api-server会将创建pod的请求发送给kube-scheduler,并且将pod信息记录在etcd数据库中。之后kube-scheduler会根据预选(过滤)规则,首先过滤掉一部分node节点中的pod,没有被过滤掉的pod可以看做是可以被调度的pod,之后再通过更加严格的规则给剩下的pod打分,这一步也叫作优选。打分最高的pod可以看做被优先分配到pod任务。 调度流程简介 创建pod的命令被api-server的api接口接收到。api-server将pod信息存储在...阅读全文
vi(vim)是上Linux非常常用的代码编辑器,很多Linux发行版都默认安装了vi(vim)。vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率。vi是“visual interface”的缩写,vim是vi IMproved(增强版的vi)。在一般的系统管理维护中vi就够用,如果想使用代码加亮的话可以使用vim。 基本上vi可以分为三种状态,分别是命令模式(command mode)、输入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下: 1) 命令模式(command mode) 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式、底行模式下。 2) 输入模式(Insert mode) 只有在输入模式下,才可以...阅读全文
vethxxx 这样的名字命名,从而将宿主机上的所有容器都连接到这个内部网络上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。 容器访问外部网络 请求通过 veth pair 到达 docker0 处,docker0 网桥开启了IP forwarding功能,将请求发送至宿主机eth0; 宿主机处理请求时,使用 SNAT 规则,将源地址替换成了宿主机 ip,然后把报文转发出去 外部访问容器 docker run -p 时,docker 实际是在 iptables 做了DNAT规则,实现端口转发功能。 1 2 3 4 5 # iptables -t nat -L Chain DOCKER (2 references) target prot opt source...阅读全文
开源堡垒机 Jumpserver v1.4.7 已发布 , 修改了配置文件的格式,使用yaml方式配置。本版本主要更新的内容如下: 支持 radius 认证统一生成 coco 的 host key,这样部署多个 coco 也不需要再复制 Host key权限列表增加详细过滤更改配置文件类型为 yml 格式修改心跳方式优化任务执行的日志记录方式修复节点右击测试连接资产为节点下所有资产,而不是直接资产sftp 支持修改 home 目录, 支持不显示隐藏文件修复 luna 隐藏侧边栏的 bugluna 支持直接登录到某个资产 更新说明 Jumpserver 是全球首款完全开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 的专业运维审计系统。Jumpserver 使用...阅读全文