Home avatar

蜷缩的蜗牛

专注云原生运维

OpenEBS性能测试

依赖说明

准备裸盘

1
2
3
4
5
6
7
root@ubuntu:~# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
nvme2n1     259:2    0   50G  0 disk           ### 50G未格式化磁盘
nvme1n1     259:0    0  600G  0 disk
└─nvme1n1p1 259:3    0  600G  0 part /data
nvme0n1     259:1    0   40G  0 disk
└─nvme0n1p1 259:4    0   40G  0 part /

安装iscsi

1
2
3
sudo apt-get update
sudo apt-get install open-iscsi
sudo systemctl enable --now iscsid

FIO存储性能工具

FIO 介绍

fio 是一个常见的用于测试磁盘 I/O 性能的工具,支持 19 种不同的 I/O 引擎,包括:sync, mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。fio 一直在更新,最新的版本是 v3.19,它的官网是 fio。

常用参数
常用参数参数说明参数取值(eg:)
nameFIO 运行任务的名称 (可选)name=fio-test
descriptionFIO 运行时的描述 (可选)description=“this is a test”
loopsFIO 是否要循环执行该任务 (可选)loops=5
numjobs每个FIO 任务要开启多少数量的线程numjobs=8
runtimeFIO 任务要执行的时间,单位为sruntime=300
time_based设置后,即便FIO写完了整个磁盘,也不会退出任务。当任务的时间满足runtime设置的时间后,才会退出任务time_based
startdelay延迟作业的启动时间。如果指定区间类型的数值,将从区间中选择一个随机值用来启动任务。单位为sstartdelay=10
ramp_timeFIO 在执行任务时预热的时间。可以使性能测试的结果更加精确可靠。单位为sramp_time=60
filename测试文件的名称,通常为硬盘的盘符名称filename=/dev/sdd
pre_read在FIO下发 I/O 前,文件会被加载到内存中。当 pre_read=true 时会清除掉磁盘中的元数据,默认为falsepre_read=false
max_open_zonesFIO 执行随机写入任务时,允许写入/读取的磁盘的区域的最大数量。max_open_zones=1000000
direct是否使用非缓冲I/O。默认为falsedirect=true
readwriteI/O 模式。read、write、randwrite、randread、randrw。混合读写时默认读写比例为50%:50%readwrite=read
percentage_random随机写入时包含多少的随机数据percentage_random=30%
blocksize读取/写入时块的大小bs=1M
zero_buffers初始化所有零的缓冲区。默认用随机数填充缓冲区zero_buffers
rwmixread混合模式中读取所占的百分比rwmixread=30
rwmixwrite混合模式中写入所占的百分比rwmixwrite=70
refill_buffersFIO 在每次提交时重新填充 I/O 缓冲区。使用 zero_buffers 参数后,该参数会失效refill_buffers
buffer_compress_percentage压缩 I/O 缓冲区的百分比,配合 refill_buffers 可以降低硬盘中相邻块中数据的一致性buffer_compress_percentage=70
sizeFIO 执行任务时要读取或写入的数据总和。size为百分比时将按照硬盘容量 * percentagesize=300G or size=50%
ioengineFIO 任务工具时的引擎,sync, libaio, rdma…ioengine=libaio
iodepth任务执行时的 I/O 队列深度的单元数。任务的线程数 = numjobs * iodepthiodepth=16

全网最全的云原生存储 OpenEBS 使用指南

简介

OpenEBS 是什么?

OpenEBS 是一种开源云原生存储解决方案,托管于 CNCF 基金会,目前该项目处于沙箱阶段。

OpenEBS 是一组存储引擎,允许您为有状态工作负载 (StatefulSet) 和 Kubernetes 平台类型选择正确的存储解决方案。在高层次上,OpenEBS 支持两大类卷——本地卷和复制卷。

OpenEBS 是 Kubernetes 本地超融合存储解决方案,它管理节点可用的本地存储,并为有状态工作负载提供本地或高可用的分布式持久卷。作为一个完全的 Kubernetes 原生解决方案的另一个优势是,管理员和开发人员可以使用 kubectl、Helm、 Prometheus、Grafana、Weave Scope 等 Kubernetes 可用的所有优秀工具来交互和管理 OpenEBS。

Golang热加载工具

在用 Go 和 gin 框架开发网站时,gin 缺乏实时重载的功能是令人遗憾的,修改完代码之后经常需要 ctrl + c 结束服务,重新运行 go run,影响开发效率。 Air 是为 Go 应用开发设计的另外一个热重载的命令行工具。只需在你的项目根目录下输入 air,然后把它放在一边,专注于你的代码即可

安装

1
2
3
4
5
6
7
# binary 文件会是在 $(go env GOPATH)/bin/air
curl -sSfL https://raw.githubusercontent.com/cosmtrek/air/master/install.sh | sh -s -- -b $(go env GOPATH)/bin

# 或者把它安装在 ./bin/ 路径下
curl -sSfL https://raw.githubusercontent.com/cosmtrek/air/master/install.sh | sh -s

air -v

深入Istio系列-Pilot Agent

查看监听端口和进程

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
istio-proxy@istio-ingressgateway-799bbc9474-hf7kv:/$ ss -ntlp
State           Recv-Q          Send-Q                     Local Address:Port                      Peer Address:Port          Process                                       
LISTEN          0               128                            127.0.0.1:15000                          0.0.0.0:*              users:(("envoy",pid=16,fd=18))               
LISTEN          0               128                            127.0.0.1:15004                          0.0.0.0:*              users:(("pilot-agent",pid=1,fd=15))          
LISTEN          0               128                              0.0.0.0:15021                          0.0.0.0:*              users:(("envoy",pid=16,fd=24))               
LISTEN          0               128                              0.0.0.0:15021                          0.0.0.0:*              users:(("envoy",pid=16,fd=23))               
LISTEN          0               128                              0.0.0.0:8080                           0.0.0.0:*              users:(("envoy",pid=16,fd=40))               
LISTEN          0               128                              0.0.0.0:8080                           0.0.0.0:*              users:(("envoy",pid=16,fd=39))               
LISTEN          0               128                              0.0.0.0:15090                          0.0.0.0:*              users:(("envoy",pid=16,fd=22))               
LISTEN          0               128                              0.0.0.0:15090                          0.0.0.0:*              users:(("envoy",pid=16,fd=21))               
LISTEN          0               128                                    *:15020                                *:*              users:(("pilot-agent",pid=1,fd=12))          
istio-proxy@istio-ingressgateway-799bbc9474-hf7kv:/$ ps -ef |grep pilot-agent
istio-p+     1     0  0 Sep14 ?        00:01:27 /usr/local/bin/pilot-agent proxy router --domain istio-system.svc.cluster.local --proxyLogLevel=warning --proxyComponentLogLevel=misc:error --log_output_level=default:info
istio-p+    74    30  0 09:37 pts/0    00:00:00 grep --color=auto pilot-agent

深入Ingress - Ingress Controller源码解析

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# ss -ntlp
State          Recv-Q          Send-Q                   Local Address:Port                    Peer Address:Port         Process                                                            
LISTEN         0               4096                         127.0.0.1:10245                        0.0.0.0:*             users:(("nginx-ingress-c",pid=2671,fd=8))                         
LISTEN         0               511                          127.0.0.1:10246                        0.0.0.0:*             users:(("nginx",pid=2783,fd=17),("nginx",pid=2738,fd=17))         
LISTEN         0               511                          127.0.0.1:10247                        0.0.0.0:*             users:(("nginx",pid=2783,fd=18),("nginx",pid=2738,fd=18))         
LISTEN         0               4096                           0.0.0.0:80                           0.0.0.0:*             users:(("nginx",pid=2783,fd=11),("nginx",pid=2738,fd=11))         
LISTEN         0               4096                           0.0.0.0:8181                         0.0.0.0:*             users:(("nginx",pid=2783,fd=15),("nginx",pid=2738,fd=15))         
LISTEN         0               4096                           0.0.0.0:443                          0.0.0.0:*             users:(("nginx",pid=2783,fd=13),("nginx",pid=2738,fd=13))         
LISTEN         0               4096                                 *:10254                              *:*             users:(("nginx-ingress-c",pid=2671,fd=33))                        
LISTEN         0               4096                              [::]:80                              [::]:*             users:(("nginx",pid=2783,fd=12),("nginx",pid=2738,fd=12))         
LISTEN         0               4096                              [::]:8181                            [::]:*             users:(("nginx",pid=2783,fd=16),("nginx",pid=2738,fd=16))         
LISTEN         0               4096                                 *:8443                               *:*             users:(("nginx-ingress-c",pid=2671,fd=34))                        
LISTEN         0               4096                              [::]:443                             [::]:*             users:(("nginx",pid=2783,fd=14),("nginx",pid=2738,fd=14)) 

## nginx-ingress-controller进程
# ps aux |grep -w 2671
_rpc        2671  0.4  0.2 743856 42000 ?        Ssl  Sep15   5:06 /nginx-ingress-controller --publish-service=ingress-nginx/ingress-nginx-controller --election-id=ingress-controller-leader --controller-class=k8s.io/ingress-nginx --ingress-class=nginx --configmap=ingress-nginx/ingress-nginx-controller --validating-webhook=:8443 --validating-webhook-certificate=/usr/local/certificates/cert --validating-webhook-key=/usr/local/certificates/key
root      284760  0.0  0.0   3100   812 pts/1    S+   04:15   0:00 grep -w 2671
# 

## Nginx Master 进程
# ps aux |grep -w 2738
_rpc        2738  0.0  0.2 145128 35448 ?        S    Sep15   0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /etc/nginx/nginx.conf
root      284662  0.0  0.0   3100   844 pts/1    S+   04:15   0:00 grep -w 2738
# 

## Nginx worker 进程
# ps aux |grep -w 2783
_rpc        2783  0.0  0.2 157240 41060 ?        Sl   Sep15   0:31 nginx: worker process
root      285147  0.0  0.0   3100   832 pts/1    S+   04:17   0:00 grep -w 2783
# 

从上面可以看出整个Ingress Nginx Controller Pod 包含两部分 nginx-ingress-controller 和 Nginx

https://raw.githubusercontent.com/kbsonlong/notes_statics/main/diagrams/ingress-nginx-controller.png

0%