- 博客(90)
- 资源 (10)
- 收藏
- 关注
翻译 pod亲和性和反亲和性
背景:实际使用中,如果希望2个pod在一个node上,那么可以用到node的亲和性,或者使用pod亲和性。如果希望2个io密集型或者2个CPU密集型的pod不在一个node上,就可以用到pod的反亲和性。一般情况下我们部署的 Pod 是通过集群的自动调度策略来选择节点的,默认情况下调度器考虑的是资源足够,并且负载尽量平均,但是有的时候我们需要能够更加细粒度的去控制 Pod 的调度,比如我们内部的一些服务 gitlab 之类的也是跑在Kubernetes集群上的,我们就不希望对外的一些服务和内部的服务跑在
2021-04-26 15:27:41
2416
原创 Linux文件系统庖丁解牛
相信搞软件开发的同学对文件系统都有一定的了解,即使不是做软件开发工作的同学对文件系统也有感性的认识。其实回忆一下,无论是Linux操作系统也好,还是Windows或者Mac也好,在我们普通用户的视角看到的其实就是一个个文件。比如电影是用视频文件存储,也就是表示某种视频格式的文件;音乐是用音频文件存储的,像mp3、wave和midi等等格式;图像是用图片文件格式存储的,像png、jpg和bmp等等。...
2020-01-18 23:21:05
337
原创 Unikernel:从不入门到入门
Unikernel:从不入门到入门Unikernels: Beyond Containers to the Next Generation of Cloud是Russ Pavlicek的一本动物书(虽然是 O’Reilly 的,但是封面不是动物,是石榴),这本书对 Unikernel 有着比较全面的介绍,而且电子书是免费的,值得一读。啥是 Unikernel?从 2014 ...
2020-01-07 07:32:37
552
原创 go-raft实现
说明goraft是Raft协议的Golang版本的实现,项目地址为:goraft/raft。整个代码质量较高,值得仔细品味。因此,整理了该博文探究下其内部实现。数据结构goraft主要抽象了server、peer和log三个结构,分别代表服务节点、Follower节点和日志。serverRaft作为一种多节点状态一致性维护协议,运行过程中必然涉及到多个物理节点,server就是用来抽象其中的每个节...
2018-04-17 22:12:40
11335
1
原创 Raft协议详解
说明 分布式存储系统通常通过维护多个副本来进行容错,提高系统的可用性。要实现此目标,就必须要解决分布式存储系统的最核心问题:维护多个副本的一致性。 首先需要解释一下什么是一致性(consensus),它是构建具有容错性(fault-tolerant)的分布式系统的基础。 在一个具有一致性的性质的集群里面,同一时刻所有的结点对存储在其中的某个值都有相同的结果,即对其共享的存...
2018-04-17 22:09:59
10163
2
转载 从B 树、B+ 树、B* 树谈到R 树
从B 树、B+ 树、B* 树谈到R 树 作者:July、weedge、Frankie。编程艺术室出品。说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统稿修订完成。出处:http://blog.youkuaiyun.com/v_JULY_v 。 第一节、B树、B+树、B*
2018-01-15 22:19:38
310
原创 go语言实战—详细的golang视频实战教程-熊文武-专题视频课程
go语言实战培训视频教程:本课程将给不熟悉go语言或者想进一步研究go的同学提供一个完整的教学视频,全部以代码教学,拒绝ppt。Go语言的环境设置、工具安装、部署、变量、运算符等入门知识,还涉及Go函数、Go的数据结构,方法接口、Go语言并发、反射等开发实战内容。采用go语言代码教学。...
2017-10-10 08:37:05
1688
1
原创 dubbo深入浅出-熊文武-专题视频课程
Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。
2017-08-22 12:41:40
220
转载 tortoisegit集成git-review
http://loiy.net/post/524.html在上一篇《入门git简明指南》中介绍了git常用的基本操作。本文主要介绍使用TortoiseGit来进行操作,并且结合Gerrit来进行Code Review。本文不涉及Gerrit的安装教程。主要是Git、TortoiseGit、Gerrit的基本使用教程。
2017-08-16 14:05:35
1131
原创 openstack从入门到精通—基于Ocata版本-熊文武-专题视频课程
本课程详细地介绍了openstack的原理,部署过程,全部为现场搭环境一步步实战操作,真正带你走进openstack的世界
2017-06-26 09:08:50
319
原创 notes
1.通过 neutron 配置的网络拓扑信息会保存在 OVN Northbound DB 里面,ovn-northd 会根据这些信息来转成 logical flow,然后写到 Southbound DB 的表 Logical_Flow 里,每个计算节点上的 ovn-controller 会把 logical flow 转换成 Openflow flow 配到本地的 br-int 里面,用来
2017-04-07 16:21:10
394
原创 TCP/IP详解学习笔记(10)-TCP连接的建立与中止
openstack kilo版本部署ceph H版本 环境: controller:10.127.138.40 compute1: 10.127.138.131 compute2: 10.127.138.41 network: 10.127.138.1541.controller节点: apt-get install ceph-deploy mkdir ceph-deploy; cd
2017-03-09 16:58:13
463
原创 Kilo Neutron配置文件
kilo neutron配置文件 1.1 controller节点: 1.1.1:root@controller:~#cat /etc/neutron/neutron.conf [DEFAULT]rpc_backend = rabbitauth_strategy = keystoneservice_plugins = routerallow_
2017-03-08 19:40:35
1099
转载 KVM/Qemu 工作原理系列目录
一 虚拟化框架与CPU虚拟化1. KVM基本架构与流程1.1 Qemu 用户态架构1.2 Qemu 内核态架构 2.CPU虚拟化2.1 Qemu用户态Machine 与 Cpu管理2.2 内核VMX基本数据结构与操作2.3 VMCS2.4 VM-Entry 与 VM-Exit2.5 CPU虚拟化情景分析 3.内存虚拟化3.1 Qemu KVM内存
2017-02-28 09:47:21
3061
原创 GoLang实现一致性哈希算法
直接上代码,windows7,go1.7下直接运行。package mainimport ( "fmt" "sort" "strconv" "hash/crc32" "sync")const DEFAULT_REPLICAS = 160type HashRing []uint32func (c HashRing) Len() int { return
2017-01-21 15:18:17
2824
转载 Linux内核IP Queue机制的分析(一)
将会通过包括本文在内的三篇文章,对IP Queue机制从用户态的应用到内核态的模块程序设计进行分析。三篇文章的题目分别是:Linux内核IP Queue机制的分析(一)——用户态接收数据包Linux内核IP Queue机制的分析(二)——用户态处理并回传数据包Linux内核IP Queue机制的分析(三)——内核态ip_queue代码分析笔者希望通过这三篇文章,能够
2017-01-19 18:14:07
1451
转载 Linux内核IP Queue机制的分析(二)——用户态处理并回传数据包
本文分析用户态接收到IP Queue的数据包后,根据数据包的相关信息决定数据包的下一步处理,并将处理后的数据包和处理的结果传递到内核态。文中如有任何疏漏和差错,欢迎各位朋友指正。 本文欢迎自由转载,但请标明出处,并保证本文的完整性。 作者:Godbach 日期:2009/02/19 一、处理IP Queue数据
2017-01-19 18:03:31
457
转载 ip_queue应用层编程
Linux内核在Netfilter框架的基础上提供了IP Queue机制,从而使得基于用户态的防火墙开发成为可能。从而可以在用户态对报文内容进行分析,同时可以给出对这个报文的处理意见,也可以修改报文。简单介绍一下NF中各个钩子(hook)函数对数据包处理的返回值,即该函数告诉内核对该数据包的处理意见。NF_DROP: 丢弃该报文,释放所有与该报文相关的资源;NF_ACCEP
2017-01-19 11:31:47
596
原创 Golang中结构体转byte数组
func bb(){ buf := new(bytes.Buffer) var data = []interface{}{ uint16(61374), int8(-54), uint8(254), } for _, v := range data { err := binary.Write(buf, b
2017-01-11 19:11:59
12528
原创 利用losetup创建本地loop磁盘
1,创建镜像文件 用如下命令创建镜像文件sdb.img,bs指定block大小,镜像文件大小为bs*count dd if=/dev/zero of=sdb.img bs=512 count=163842,用losetup命令将生成的镜像文件与loop device设备关联 用如下命令将sdb.img镜像文件与/dev/loop0设备关联
2017-01-11 19:07:11
949
翻译 使用qemu-nbd挂载qcow2文件
1. 加载 nbd 驱动某些版本的 Linux 不加 max_part 参数会导致没有没有设备节点 /dev/nbd0p{1,2,3,4…} 等. 用 kpartx 也不行.$ sudo modprobe nbd max_part=8备注信息:查看Linux 模块信息(modinfo),例如查看nbd模块的参数[plain]
2017-01-11 16:34:12
3671
转载 大话ceph crush
引言那么问题来了,把一份数据存到一群Server中分几步?Ceph的答案是:两步。计算PG计算OSD计算PG首先,要明确Ceph的一个规定:在Ceph中,一切皆对象。不论是视频,文本,照片等一切格式的数据,Ceph统一将其看作是对象,因为追其根源,所有的数据都是二进制数据保存于磁盘上,所以每一份二进制数据都看成一个对象,不以它们的格式来区分他们。那么
2017-01-03 21:57:05
2059
翻译 openstack配置项自动生成方法
This information was valid at the time this article was written (juno-2).UPDATE: Fixed Cinder, Heat and Ironic generate_sample.sh commands. Thanks Mike Spreitzer.Each OpenStack project is a bi
2017-01-03 21:15:09
683
转载 自动化生成 Openstack 新项目开发框架
前言OpenStack Developer 应该都知道, 开发一个 Openstack 的新项目并不是一个从 0 到 1 的过程, 而是在一个 Project Template 的框架中, 为其填充 API/DB/Manager 等代码定义和实现. 一般来说, 搭建这个 Template 框架并不困难, 只是太过繁琐. 本篇推荐的开源小项目, 可以非常帮助我们完成这些繁琐的工作, 用法
2017-01-03 18:11:47
504
原创 ceph pg数量调整
1.计算合适的pg数关于pg数值的合理值的计算参考 http://ceph.com/pgcalc/ 。但是请谨记,在你真正还是调整pg前,请确保集群状态是健康的。2.调整前确保状态ok如果 ceph -s 命令显示的集群状态是OK的,此时就可以动态的增大pg的值。注意: 增大pg有几个步骤,同时必须比较平滑的增大,不能一次性调的太猛。对于生产环境格外注意。
2016-12-30 13:57:53
8442
翻译 neutron callback system
In Neutron, core and service components may need to cooperate during the execution of certain operations, or they may need to react upon the occurrence of certain events. For instance, when a Neutron
2016-12-27 15:23:45
725
原创 利用dd迁移机器到openstack上
1.拷贝整个系统盘dd if=/dev/sda of=~/disk1.img,若磁盘过大,可以拷贝系统盘分区,比如dd if=/dev/sda1 of=~/vm.img2.查看上面的复制进度:#kill -USR1 dd进程号3.将镜像文件挂载:losetup -f vm.img root@debian:/opt#losetup -a /dev/loop0: [0801]:417805 (/op
2016-12-01 18:21:50
937
1
转载 TCP/IP详解学习笔记(10)-TCP连接的建立与中止
来自 TCP是一个面向连接的协议,所以在连接双方发送数据之前,都需要首先建立一条连接。这和前面讲到的协议完全不同。前面讲的所有协议都只是发送数据而已,大多数都不关心发送的数据是不是送到,UDP尤其明显,从编程的角度来说,UDP编程也要简单的多—-UDP都不用考虑数据分片。书中用telnet登陆退出来解释TCP协议连接的建立和中止的过程,可以看到,TCP连接的建立可以简单的称为三次握手,而连接的中止
2016-11-25 09:37:48
314
原创 golang使用protobuf例子
安装1.go get github.com/golang/protobuf; 2.进入gopath的protobuf目录,执行make&&make install,在gopath/bin目录下生成proto相关工具;使用1.执行命令vim msg.proto新建一个名为msg.proto的文件,并将其打开,在其中输入如下内容:package demo;//go中导出结构体、方法必须大写mess
2016-11-22 18:16:15
6245
原创 部署etcd
部署环境 为了方便部署过程只在通过IP指定无需修改host文件指定hostname。 只在一台机器搭建集群通过端口地址不同来区别。 192.168.100.128:2381 192.168.100.128:2382 192.168.100.128:2383 github 集群搭建地址:https://github.com/coreos/etcd/blob/m
2016-11-22 10:15:34
465
翻译 leveldb安装和例子
os: ubuntu 14.04 ltsleveldb version=1.19安装cd leveldbmake此时leveldb/下多出out-shared和out-static目录,其中out-shared/下有:db db_bench helpers libleveldb.so libleveldb.so.1 libleveldb.so.1.19 port table util
2016-11-21 19:28:28
2800
翻译 三种增删osd的方法数据量迁移大小
一、前言之前有写过一篇删除OSD的正确方式,里面只是简单的讲了下删除的方式怎样能减少迁移量,本篇属于一个扩展,讲述了 Ceph 运维当中经常出现的坏盘提换盘的步骤的优化基础环境两台主机每台主机8个 OSD,一共 16 个 OSD,副本设置为2,PG 数设置为800,计算下来平均每个 OSD 上的 P G数目为100个,本篇将通过数据来分析不同的处理方法的差别开始测试前先
2016-11-10 20:07:27
3796
1
转载 linux 原始套接字解析
我们平常所用到的网络编程都是在应用层收发数据,每个程序只能收到发给自己的数据,即每个程序只能收到来自该程序绑定的端口的数据。收到的数据往往只包括应用层数据。某些情况下我们需要执行更底层的操作,比如监听所有本机收发的数据、修改报头等。通过原始套接字,我们可以抓取所有发送到本机的IP包(包括IP头和TCP/UDP/ICMP包头),也可以抓取所有本机收到的帧(包括数据链路层协议头)。普通的套接字
2016-11-08 22:04:32
515
多项式除法
2012-04-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人