自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

7B_Geek的博客

搬砖极客

  • 博客(41)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 VirtIO

Linux 作为 Guest OS 已经被多个虚拟化系统支持,比如Xen、KVM、VMWare、Lguest等。为了提升虚拟化的性能,CPU和内存的虚拟化已经从全虚拟化发展到使用VT-x、EPT等硬件辅助虚拟化技术,但是IO外设的虚拟化进展并不快,目前业界使用Guest有感的半虚拟化技术。但是每一个虚拟化平台都想要有自己的半虚拟化网络、块设备、console 驱动程序,这些驱动程序大都功能重复且很多没有很好的优化,这带来了较大的维护代价。

2023-05-10 20:14:16 105

原创 kubernetes容器网络

Kubernetes最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统。Kubernetes 具备完善的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建负载均衡器、故障发现和自我修复能力、服务滚动升级和在线扩容、可扩展的资源自动调度机制、多粒度的资源配额管理能力。Kubernetes 还提供完善的管理工具,涵盖开发、部署测试、运维监控等各个环节。

2023-04-24 17:00:09 646

原创 Kubernetes Operator开发实践

打开源文件,需要我们根据我们的需求去自定义结构体 AppServiceSpec,我们最上面预定义的资源清单中就有 replicas、image、ports 这些属性,所有我们需要用到的属性都需要在这个结构体中进行定义:代码中会涉及到一些包名的导入,由于包名较多,所以我们会使用一些别名进行区分,主要的包含下面几个:import (这里的 resources、envs、ports 的定义都是直接引用的。

2024-03-07 11:14:13 653

原创 Operator开发

如上,展示的是 kube-builder 的内部原理,包含了 kube-builder 以及 infomer 机制的部分代码,可以明显的看到,这里存在一个事件队列,一旦存在事件队列就意味着缓存已经产生,我们每次处理的都是当前能看到的资源状态,并非真实的状态,因为有可能还有其他的事件在后面排队等待处理。但是经常我们又需要多个控制器协同作业,那么,暴露的越少越好。同样,还是k8s的资源变更机制导致,可能会导致重复的推送某一个资源的变更到reconciler,如果处理逻辑或者接口不幂等,那么处理一定是有问题的。

2024-03-06 15:07:01 913

原创 k8s搭建EFK日志系统

前面大家介绍了 Kubernetes 集群中的几种日志收集方案,Kubernetes 中比较流行的日志收集解决方案是 Elasticsearch、Fluentd 和 Kibana(EFK)技术栈,也是官方现在比较推荐的一种方案。是一个实时的、分布式的可扩展的搜索引擎,允许进行全文、结构化搜索,它通常用于索引和搜索大量日志数据,也可用于搜索许多不同类型的文档。Elasticsearch 通常与Kibana。

2023-09-30 21:41:41 1958

原创 基于Zookeeper搭建Kafka高可用集群(实践可用)

这里解释一下 kafka 安装包的命名规则:以 kafka_2.12-2.2.0.tgz 为例,前面的 2.12 代表 Scala 的版本号(Kafka 采用 Scala 语言进行开发),后面的 2.2.0 则代表 Kafka 的版本号。这里需要说明的是 log.dirs 指的是数据日志的存储位置,确切的说,就是分区数据的存储位置,而不是程序运行日志的位置。拷贝三份 zookeeper 安装包。为保证集群高可用,Zookeeper 集群的节点数最好是奇数,最少有三个节点,所以这里搭建一个三个节点的集群。

2023-09-06 14:47:10 646

原创 Kafka详解

Apache Kafka 是一个分布式发布 - 订阅消息系统和一个强大的队列,可以处理大量的数据,并使你能够将消息从一个端点传递到另一个端点。Kafka 适合离线和在线消息消费。Kafka 消息保留在磁盘上,并在群集内复制以防止数据丢失。Kafka 构建在 ZooKeeper 同步服务之上。它与 Apache Storm 和 Spark 非常好地集成,用于实时流式数据分析。Kafka 是一个分布式消息队列,具有高性能、持久化、多副本备份、横向扩展能力。

2023-09-06 14:45:08 1065

原创 ETCD集群搭建(实践可用)

概述etcd 是兼具一致性和高可用性的键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库。- 官方网址:准备cfssl证书生成工具cfssl是一个开源的证书管理工具,使用json文件生成证书.在任意一台服务器上操作,这里选择k8s01创建etcd相关目录创建证书。

2023-09-06 14:40:35 520

原创 ETCD详解

首先,Raft是一种“算法”;其次,Raft 是一种为了管理“复制日志”算法;最后,Raft 是一种为了管理复制日志“一致性”算法。那么问题来了,什么是一致性?一致性是分布式系统容错的基本问题。一组机器像一个整体一样工作,即使其中小半部分机器(不大于N/2)出现故障也能够继续工作下去, 一旦他们就状态做出决定,该决定就是最终决定。例如,即使2台服务器发生故障,5台服务器的集群也可以继续运行。如果更多服务器失败,它们将停止进展(但永远不会返回错误的结果)

2023-09-06 14:40:07 1253

原创 ELK集群搭建流程(实践可用)

ELK 是一个由三个开源软件工具组成的数据处理和可视化平台,包括 Elasticsearch、Logstash 和 Kibana。这些工具都是由 Elastic 公司创建和维护的。Elasticsearch 是一个分布式的搜索和分析引擎,可以将大量数据存储在一个或多个节点上,支持实时搜索、分析和聚合,提供高性能的全文搜索、复杂查询和分析能力。Logstash 是一个数据采集和处理工具,可以将来自各种数据源的日志数据收集、转换、过滤和存储到 Elasticsearch 中,从而实现对数据的集中管理和分析。

2023-09-06 14:38:29 934

原创 ElasticSearch详解

在 flush 过程中,内存中的缓冲将被清除,内容被写入一个新的 Segment,Segment 的 fsync 将创建一个新的提交点( Commit Point),并将内容刷新到磁盘,旧的translog将被删除并开始一个新的translog,flush 触发的时机是定时触发(默认30分钟)或者 translog 变得太大(默认512M)时。取决于你的文档的大小,分片的数量和你使用的硬件,给 10,000 到 50,000 的结果文档深分页( 1,000 到 5,000 页)是完全可行的。

2023-09-06 14:36:50 714

转载 Kubernetes 集群部署

现在我们使用 kubeadm 从头搭建一个使用 containerd 作为容器运行时的 Kubernetes 集群,这里我们安装最新的v1.22.2版本。

2023-07-12 16:01:28 92

原创 Raft协议

当前业界有很多分布式一致性复制协议,比如Paxos,Zab,Viewstamped Replication等,其中Lamport提出的Paxos被认为是分布式一致性复制协议的根本,其他的一致性复制协议都是其变种。但是Paxos论文中只给出了单个提案的过程,并没有给出复制状态机中需要的MultiPaxos的相关细节描述。Zab协议被应用在Zookeeper中,业界使用广泛,但是没有抽象成通用library。Viewstamped Replication虽然出来的比较早,但是一直没有流行起来,也没有几个实现。

2023-05-17 12:38:11 48

原创 Ceph技术

Ceph是在2006年由Sage Weil作为博士论文中的项目开发的,随着近些年OpenStack将其作为默认的块存储后端,逐渐流行起来并称为开源社区中的明星项目。Ceph是一个统一的存储系统,既支持传统的块存储和文件存储协议,也支持新兴的对象存储协议,这使得Ceph能够满足当下绝大部分的存储场景需求。

2023-05-15 16:04:31 145

原创 Linux内核参数调优

每个系列,不同版本的内核可调节的参数可能略有不同,主流的3.10的内核可调节的内核参数多达2500个。其中kernel的调节参数占大头73%(~1800),接着就是网络21%(~550),vm和file各有50左右。下面的参数总结我们针对不同的参数类型,用不同的颜色进行标注。配置项目颜色标注描述蓝色百度内部内核暴露出的独有参数粉色需要重点关注的参数设置由于可调节的内核参数过多,大部分可能我们现阶段可能用不到,所以,我们只总结当前可能用到的参数。

2023-05-10 20:56:23 87

原创 如何快速定位程序core

当我们打开core文件时,首先关注的就是程序崩溃时的函数调用栈状态,为了方便理解后续定位core的一些技巧,首先简单介绍一下函数栈。目前生产环境都为64位机,这里只介绍64位机的寄存器,如下:对于x86-64架构,共有16个64位寄存器,每个寄存器的用途并不单一,如%rax通常保存函数返回结果,但也应用于imul和idiv指令。这里我们重点关注%rsp(栈顶指针寄存器)、%rbp(栈底指针寄存器)、%rdi、%rsi、%rdx、%rcx、%r8、%r9(分别对应第1~6函数参数)。

2023-05-10 20:47:25 75

原创 CPU虚拟化技术

基本概念:物理CPU数量:实际服务器插槽上的CPU个数; 核:一块CPU上面能处理数据的芯片组的数量; 超线程:在一个实体芯片组中提供两个逻辑线程; 逻辑CPU数量:物理CPU数量*核*超线程(若支持超线程,该值为2); vCPU:虚机分配的CPU,一个服务器或集群可分配的vCPU数量为为 (逻辑CPU数量 - (控制台需要的逻辑cpu数量))× 虚拟化比例因子(考虑过载,预估为1.2~1.5)1. 为什么需要 CPU 虚拟化X86 操作系统是设计在直接运行在裸硬件设备上的,因此它们自动

2020-11-06 16:16:50 3429

原创 Python多线程抓取网页图片地址

import requestsfrom lxml import etreeimport randomimport threadingfrom time import sleepfrom queue import Queueclass ImageSpider(): def __init__(self): self.urls = 'http://www.xxxx/{}' self.detail = 'http://www.xxx.com/xxx/{...

2020-11-03 10:14:40 1027 2

原创 Jenkins与Docker的自动化CI/CD

高效的CI/CD环境是什么样的?及时发现问题:提早得到集成反馈和修复 大幅度减少故障率:业务流程化,减少人工出错风险 加快迭代速度:可以在几分钟内运行几十次、甚至上百次持续集成 减少时间成本:多项目管理及繁琐的部署工作没有了,不必再花费一定时间去准备 研发端到端流水线,一键部署,应用弹性伸缩,灰度发布要想做到一个高效的CI/CD流程,需要有能力整合DevOps工具链及多环境适配,并且...

2019-08-02 17:30:32 377 1

原创 ansible-playbook批量部署Nginx

通过ansible-playbook,以源码编译方式部署nginx。将所有部署nginx主机分为webserver组:# vim /etc/ansible/hosts[webserver]192.168.30.128192.168.30.129192.168.30.130创建管理目录:# mkdir -p nginx/roles/nginx_install/{fi...

2019-07-31 14:54:37 441

原创 docker容器和镜像区别

docker容器和镜像区别这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(container)和镜像(image)之间的区别,并深入探讨容器和运行中的容器之间的区别。当我对Docker技术还是一知半解的时候,我发现理解Docker的命令非常困难。于是,我花了几周的时间来学习Docker的工作原理,更确 切地说,是关于Docker统一文件系统(the union f...

2019-07-17 10:20:46 255

原创 Docker跨主机网络访问配置之weave

使用weave实现跨主机容器连接 Weave是由weaveworks公司开发的解决Docker跨主机网络的解决方案,它能够创建一个虚拟网络,用于连接多台主机上的Docker容器,这样容器就像被接入了同一个网络交换机,那些使用网络的应用程序不必去配置端口映射和链接等信息。 外部设备能够访问Weave网络上的应用程序容器所提供的服务,同时已有的内部系统也能够暴露到应用程序容器上。...

2019-07-10 10:21:02 836 1

原创 Docker跨主机网络配置方案之overlay

一、跨主机网络概述前面已经学习了 Docker 的几种网络方案:none、host、bridge 和 joined 容器,它们解决了单个 Docker Host 内容器通信的问题。本章的重点则是讨论跨主机容器间通信的方案。docker 原生的 overlay 和 macvlan。第三方方案:常用的包括 flannel、weave 和 calico。二、准备 overla...

2019-06-25 16:32:06 994 1

原创 Docker网络模式及配置(高级网络功能)

目录一.Docker网络模式与参数配置Docker网络模式1.Bridge桥接模式2.Host 网络模式:3.Container 网络模式:4.None 网络模式:Docker网络相关的命令参数二.配置容器DNS和主机名1.相关配置文件2.容器内修改配置文件3.通过参数指定三.容器与外界通信访问控制1.容器访问外部实现2.外部访问容器实...

2019-06-11 09:24:36 871 1

原创 Docker容器内部 DNS 解析失败的问题

上段时间遇到了 docker 容器内部 dns 解析失败的问题,发现在 docker run启动容器之后,容器内部访问外部的接口总是提示无法解析 dns,然而容器外部是可以解析的,dns的配置也没有任何问题。用docker exec -it contaner_name bash进去,ping 任何域名都是不通。最终的解决办法在在于,停止 docker daemon,删掉 ifconf...

2019-06-11 09:16:17 14287 13

原创 4种方法进入正在运行的Docker容器

在使用Docker创建了容器之后,如何进入该容器呢?进入Docker容器比较常见的几种做法如下:使用docker attach 使用SSH 使用nsenter 使用exec一、使用docker attach进入Docker容器Docker提供了attach命令来进入Docker容器。接下来我们创建一个守护态的Docker容器,然后使用docker attach命令进入该容器。...

2019-05-29 16:54:18 7150

转载 VMware、配置VMware vSphere 6.0 vMotion、DRS、HA和FT

一、虚拟机迁移概述1、vMotion基础知识简介 您可使用热迁移或冷迁移将虚拟机从一个主机或存储位置移至另一位置。例如,您可使用 vSphere vMotion 将已打开电源的虚拟机从主机上移开,以便执行维护、平衡负载、并置相互通信的虚拟机、将多个虚拟机分离以最大限度地减少故障域、迁移到新服务器硬件等等。您可使用冷迁移或热迁移将虚拟机移至其他主机或数据存储。冷迁移: ...

2019-03-27 11:03:55 6835

转载 Mycat之——高可用负载均衡集群的实现(HAProxy + Keepalived + Mycat)

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/76397064本文是在博文《Mycat之——Mycat集群部署(基于HAProxy + Mycat)》的基础上,实现高可用负载均衡,若还没有阅读博文《Mycat之——Mycat集群部署(基于HAProxy + Mycat)》,请先阅读博文《Mycat之——Mycat集群部署(基于...

2018-12-29 10:48:44 847 1

原创 Python实现守护进程Daemon

Daemon 守护进程概述系统为了某些功能必须要提供一些服务,但服务的提供总是需要进程的运行,实现这个服务的程序我们就称之为daemon。守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务。很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭。另一些只在需要的时候才启动,完成任务后就自动结束。用户使守护进程独立于所有终端。因为在守护进程从一个终端启动的...

2018-12-04 16:00:12 1472 1

原创 Python操作MongoDB聚合方法多条件排序

现对某网站用户的比赛数据排名使用 MongoDB 处理,现在有一系列的用户数据,通过python脚本,输入任意用户的 ID,返回排名。如果用户没有比赛记录,则排名返回 0。排名规则首先按分数排名,如果分数相同则花费的总时间越少则排名越高。对于多条件排序,使用MongoDB的aggregate方法是最快的。或者也可以使用python的sorted方法,但是这个方法可能会更耗内存。#...

2018-11-30 13:53:03 2897

原创 keepalived工作原理

keepalived 简介     keepalived 负载均衡的框架是依赖于 Linux Virtual Server(LVS 的 ipvs)内核模块提供的 Layer 4上的负载均衡。    keepalived 实现了一套通过对服务器池(也就是Real Server 池,Server pool)健康状态来动态地、自动维护的管理被负载均衡的服务器池的 checker。    ...

2018-10-18 09:50:51 879

转载 Devops时代,腾讯阿里的运维实践(附Devops58个开源工具)

2017年,Devops火了,一时间互联网大厂都在谈自动化运维,都在谈Devops实践,从国外的微软谷歌到国内的阿里腾讯,都在做Dveops落地。那么Devops为什么会火呢?如同这张漫画,软件研发的功能越来越全面,导致代码更加庞大而复杂,在增加一些新特性的时候,需要投入大量的人力物力来更新及维护代码。即使有优秀的架构师、数据库和运维人员,以及规模庞大的开发和产品经理团队,也很难掌控全局。...

2018-09-28 09:25:22 2395

转载 Oracle 数据库服务器 IO分析方案

 在部署了ORACLE数据库的服务器上,我们大家或多或少的遇到过下列情况:1. 业务系统运行缓慢,作为系统管理员需要检查包括IO在内的系统资源,这时系统管理员、存储管理员可能得到DBA(数据库管理员)的反馈说,IO的响应时间很慢,达到了30毫秒以上,要求解决。但存储管理员检查又不存在热点盘的情况,系统的IO量就是很大,除了使用更多的RAID组来重新分布数据、更换为更高端的存储外,似乎没有太好...

2018-09-28 09:09:42 454

原创 JavaScript响应键盘事件

JavaScript 键盘事件:1. keydown():    按键按下时,触发该事件;2. keyup();    按键按下松开时,触发该事件; <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=...

2018-08-09 17:56:38 844

原创 JQuery动画效果

jQuery animate() 方法用于创建自定义动画。语法:$(selector).animate({params},speed,callback);selector,选择器选择元素;params 参数定义形成动画的 CSS 属性;可选的 speed 参数规定效果的时长,取值:"slow"、"fast" 或毫秒;可选的 callback 参数是动画完成后所执行的函数名...

2018-08-08 16:21:06 1328

原创 Javascript实现打地鼠小游戏

在学习前端的时候,尝试着写了打地鼠小游戏,包括计时器,老鼠地雷图片的隐藏显示,计算成功率和得分,判断是否点中老鼠(点中地雷扣分),功能和界面都较为简单。以下是代码:HTML代码,index.html:<!DOCTYPE html><html> <head> <title>打地鼠</title> ...

2018-08-02 15:53:56 3101

原创 MySQL备份恢复

    备份的目的是为了灾难恢复,主要用于测试应用,回滚数据修改,查询历史数据,审计等。如果是拥有大规模数据库集群的公司,你可能需要专门规划执行数据库备份的机器和海量分布式文件系统,以存储备份。1.备份策略    备份需要考虑很多因素,比如数据的重要程度,是否需要时间点恢复,数据量的大小,需要多久恢复,用户可以接受多久恢复等等。     尽量在从库上备份。对于负荷比较小的业务,也可以选择...

2018-07-30 14:32:37 3052

原创 MySQL日志文件总结

MySQL有几个日志文件,帮助管理员了解mysqld(MySQL Server的主程序)内部发生的事情。 表1 MySQL的日志文件及功能 日志文件 记入文件中的信息类型 错误日志 记录启动,运行或停止mysqld时出现的问题 通用日志 记录建立的客户端连接和执行的语句 二进制日志 记录更改数据的所有语句,用于复制,备份恢复 慢查询日志 记录...

2018-07-26 15:25:51 2294

原创 MySQL导入导出数据mysqldump,mysql,select into file,load data

研发人员往往需要从数据库中导出数据,或者将数据导入到数据库中。一些客户端工具提供了简单方便的功能,可以让他们不用使用命令进行操作。但是客户端工具可能会受到环境的限制而不能使用,所以,研发人员有必要掌握一些常用的命令来进行操作数据。MySQL提供了好几种导出导入数据的方法LOAD DATA,mysqlimport,SELECT...INTO OUTFILE,mysqldump,mysql。 ...

2018-07-25 15:34:27 4665

原创 MySQL权限管理

1.概述    MySQL权限系统的主要功能是证实连接到一台给定主机的用户,并且赋予该用户在数据库上的各种权限,一般生产环境账号只需要SELECT,INSERT,UPDATE和DELETE权限即可。    MySQL将验证用户的3箱信息:用户名,密码,主机来源。    权限可以分两类:系统权限和对象权限。    系统权限允许进行一些特定的功能,如关闭数据库,终止进程,显示数据库列表...

2018-07-25 09:45:39 3500

一个团购APP

看懂了作者苦涩的代码之后,我们对功能进行了添加和修改。是一个大学生报考驾照和四六级等功能的APP。PHP部分的代码不是我写的。

2015-12-14

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除