计算机结构
从大的结构来说,计算机方面的东西主要分为两个大的部分,一个为硬件的部分,也就是组成计算机的一些硬件的
一个是软件的部分,就是我们基于硬件之上的做的一些东西,通常来说,硬件的东西比较固定,而软件的东西就比较多了
计算机硬件部分
CPU
硬盘
内存
主板
网络
计算机的软件部分
操作系统
内核
系统相关的软件
网络相关
linux基础操作
文件系统
分布式文件系统
san相关
高可用和负载均衡相关
上面应该还有很多很多的内容,这个目录结构会随着时间的变化,慢慢填充起来
软件开发
这个章节是记录一些软件开发过程中的一些知识
测试软件
这个是一些测试相关的软件
基于以上的内容会慢慢的进行扩展,博客里面的内容会关于上面的这些方面
更新历史
why
when
创建
2019年12月9日
更新
2019年12月9日
前言很久没有处理很大的集群,在接触一个新集群的时候,如果集群足够大,需要比较长的时间才能去理解这个集群的结构,而直接去看ceph osd tree的结果,当然是可以的,这里是把osd tree的结构进行了一个结构化输出,也可以理解为画出一个简单的结构图,比较适合给其它人讲解你对crush做了哪些改变,这个如果指着文字来讲估计很多人会听的云里雾里,如果有比较方便的方式出图就比较好了
为此写了一个小工具自己用,正好也可以看看我们对结构做简单调整后的效果
创建一个模拟集群环境就一台机器,不需要用到磁盘,这里是模拟结构创建一个大集群40台机器
12seq 1 40 |xargs -i ceph osd crush add-bucket lab{} hostseq 1 40|xargs -i ceph osd crush move lab{} root=default
创建一个960个的集群
1seq 1 960 |xargs -i ceph osd create
放到指定的主机
123456#! /bin/shfor osd in `seq 0 95 ...
关于arm之前wdlab对外发布过一次约500个节点的arm的ceph集群,那个采用的是微集群的结构,使用的是双核的cortex-a9 ARM处理器,运行速度为1.3 GHz,内存为1 GB,直接焊接到驱动器的PCB上,选项包括2 GB内存和ECC保护
这个在国内也有类似的实现,深圳瑞驰商用Arm存储NxCells
这个采用的是微集群的架构,能够比较好的应对一些冷存场景,但是今天要说的不是这种架构,而是一个比较新的平台,采用的是高性能的arm的架构,也就是类似X86的大主板结构
很多人了解的arm的特点是小,功耗低,主频低,这个是以前的arm想发力的场景,类似于intel做的一款atom,在很早期的时候,我在的公司也尝试过基于atom主板做过1U的ceph存储,但是后来各种原因没有继续下去
实际上arm也在发力高性能的场景,但是这个比较新,并不是每个人都能接触的到,在这里,我把我们的硬件设备的测试数据发一部分出来,也许能改变你对arm的印象,在未来硬件选型的时候,也许就多了一层选择
高性能arm设备说明12345678910111213141516171819202122232425 ...
前言自启动相关的文章很多,有分析的很详细的文章,这里就不做赘述,本篇讲述的是什么情况下用,怎么用的问题
使用场景一台机器的系统盘坏了,需要重装系统,相关的一些信息没有了,但是上面的数据盘还是在的,所以需要保留
某个磁盘需要换台机器进行启动,但是那台机器上没有相关的信息
处理过程自启动的相关处理先扫描下lvm
123vgscanpvscanlvscan
本篇的场景是lvm没有损坏的情况,如果lvm本身损坏了,那么就是去恢复lvm的问题,本篇的基础是有一个完整的osd的数据盘,也就是磁盘本身是没问题的
查询osd相关的磁盘信息123456lvdisplay |grep "LV Path"|grep ceph LV Path /dev/ceph-b748833c-b646-4b1c-a2ef-f50576b0a165/osd-block-38657557-5ce3-43a1-861a-e690c880ddf6 LV Path /dev/ceph-aa2304f1-a098-4990-8f3a-46f1 ...
问题通过对我们的启动流程看了下,目前是穿到一个脚本里面的,然后这个脚本是用无限循环的方式去执行一些事情,这个地方不符合松耦合的设计,一个模块做一个事情,两个并不相关的功能不要嵌入另一个脚本,否则出现问题的时候,不好更改不好优化
解决方式首先分析ceph自身的启动方式
ceph的启动方式是通过去enable的一个service的方式这个enable会传入参数,osd的id和osd的fsid,这两个都是集群的定值,也就是每个osd的这块都是各自独立的,所以就是一个总控脚本去通过调用参数的方式进行服务的启动和挂载
那么最佳的处理方式应该也是近似处理,我们做结合启动的时候,先禁用相关的服务,这个后面脚本里面内部会处理,我们先写出来怎么禁用ceph的挂载和启动
1234systemctl stop ceph-osd@$osd_idsystemctl disable ceph-osd@$osd_idsystemctl disable ceph-volume@lvm-$osd_id-$osd_devumount /var/lib/ceph/osd/ceph-0/
上面一个是osd id 一个是fs ...
场景A机器能够联通内网机器,B机器能够联通A机器,但是访问不到内网机器,场景是希望通过A机器能够转发直接联通局域网内的其它机器
机器IP内网为172.0.0.x/24
A机器为172.0.0.10/24
A机器为192.168.1.10/24
B机器IP为192.168.1.20/24
进行设置在A机器上进行设置
1234567891011121314151617181920212223[root@jenkins ~]# cat ip.sh #!/bin/sh # IPT="/sbin/iptables"/bin/echo "1" > /proc/sys/net/ipv4/ip_forward/sbin/modprobe ip_tables/sbin/modprobe iptable_filter/sbin/modprobe iptable_nat/sbin/modprobe ip_conntrack/sbin/modprobe ip_conntrack_ftp/sbin/modprobe ip_na ...
引言ceph自从到了L版本以后,L版本的启用,对性能本身有了极大的提高,一直对这个比较不放心的就是内存的占用,刚开始的时候记得大量dd就可以把内存搞崩掉,这个应该是内部的设计逻辑需要更多的内存的占用
最近在做ARM版本的服务器的测试,机器为36盘位的机器,内存需要自然多,但是36盘位的机器,按之前想法是4G预留,那得需要144G内存了,这个还没有算迁移的时候的内存消耗,而很多时候,我们并不需要速度,只需要稳定就好
测试环境说明测试环境比较简单,一台36盘位的arm机器,一台X86机器,通过万兆相连,设置集群为副本1,然后再X86上面通
限制前后对比我们先按默认的来一组测试
用读取命令进行测试
123456789101112131415161718192021222324rados -p rbd -t 64 bench 300 seq --run-name 4Mt16···2019-09-03 15:19:20.478841 min lat: 0.188154 max lat: 0.658198 avg lat: 0.227437 sec Cur ops started ...
前言在做一个管理平台的时候,面向客户的最开始的第一步就是管理平台的登陆系统,而由于面向的是企业用户,内网用户,因此,往往有很多我们预想不到的情况出现,而这些都会去影响着管理平台的体验,或者会完全中断掉你的操作
这里在分析一些做的比较好的平台后,以及结合我们自身可能遇到的情况,对登陆系统进行一个新的设计,这个是通用的设计并不针对某款产品
范例zabbix的登陆系统是做的比较好的,我们先来看看,然后再去给出我的设计
首页欢迎页面
通过欢迎页面可以看到,整个初始化大概有几个步骤,这个只要有明显的告知即可
检查先决条件
这个步骤是去检查环境是不是有问题,依赖的选项是不是正确的,这里可以把一些比较重要的调整参数或者默认的参数放到这里做检查,一个是给出的推荐值和一个当前的值,方便去检查
配置数据库连接
这一步是比较重要的一步,跟管理平台的可用性比较大,下面我们会介绍,这里给出了多种数据库的选择,这是因为平台支持,一般情况下就写死就行,数据库的主机名称,端口,数据库的名称,用户名,密码
这些都没问题
总览配置
刚刚做的配置,在这里做一次查看,确认下相关的信息,这样也方便做整体的二次审查
最终 ...
暂未分类
未读前言邮箱系统在提供了用户名和密码以后可以发送邮件,而在发送之前我们有个需求是需要验证下这个密码是不是正确的,本篇的内容就是用python默认的库来检测邮箱是不是可以登录的
验证这个采用的是python默认带的库smtplib,是一个发送邮件的库,脚本文件如下
123456789101112131415161718192021222324252627282930313233343536373839#! usr/bin/python# -*- coding: UTF-8 -*-import sysimport osusername=sys.argv[1]password=sys.argv[2]chinesname=sys.argv[3]import smtplibfrom email.mime.text import MIMETextmail_host = 'smtp.qq.com'mail_user = '%s@qq.com' % usernamemail_pass = '%s' % password#print mail_ ...
前言服务器的服务做HA有很多种方式,其中有一种就是是用CTDB,之前这个是独立的软件来做HA的,现在已经跟着SAMBA主线里面了,也就是跟着samba发行包一起发行
之前CTDB的模式是需要有一个共享文件系统,并且在这个共享文件系统里面所有的节点都去访问同一个文件,会有一个Master会获得这个文件的锁
在cephfs的使用场景中可以用cephfs的目录作为这个锁文件的路径,这个有个问题就是一旦有一个节点down掉的时候,可能客户端也会卡住目录,这个目录访问会被卡住,文件锁在其他机器无法获取到,需要等到这个锁超时以后,其它节点才能获得到锁,这个切换的周期就会长一点了
CTDB在最近的版本当中加入了cluster mutex helper using Ceph RADOS的支持,本篇将介绍这个方式锁文件配置方式
实践过程安装CTDB1[root@customos ~]# yum install samba ctdb
检查默认包里面是否有rados的支持
1234567891011121314[root@customos ~]# rpm -qpl samba-4.8.3-4.el7.x86 ...