Category Archives: system

system

centos7 系统 df hang 问题处理说明

By | 2018-06-07

问题描述 近期陆续碰到几台主机 df 卡住的问题, 监控程序由于超时引起相关的警报, 系统环境和 strace df 如下所示: kernel-3.10.0-514.21.2 systemd-219-57 strace 显示卡在了 /proc/sys/fs/binfmt_misc 状态中: # strace df execve(“/usr/bin/df”, [“df”], [/* 29 vars */]) = 0 brk(0) = 0x1731000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa7720a7000 access(“/etc/ld.so.preload”, R_OK) = 0 open(“/etc/ld.so.preload”, O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=24, …}) = 0 …… stat(“/sys/fs/cgroup/memory”, {st_mode=S_IFDIR|0755, st_size=0,… Read More »

How does snoopy log every executed command

By | 2018-01-18

snoopy 介绍 snoopy 是一个轻量级的lib库, 用来记录系统中所有执行过的命令(以及参数). 我们在实际环境的使用过程中, 结合 snoopy 和 rsyslog 可以很方便的搜集所有主机的历史执行命令, 这种方式给安全审计和故障排错带来了很大的便利. 不同于以往的 shell + history 方式, snoopy 是以预加载 (preload) 的方式实现历史命令的记录, 整个会话环境的信息都可以记录下来, 而前者则仅仅记录执行的命令, 且容易绕过记录, 难以满足我们的需求. 安装部署可参考 install, rpm-install. 下文则详细介绍 snoopy 如何实现以及使用事项. snoopy 如何工作 linux 的 ld.so, ld-linux.so(动态链接)机制可以让程序在运行的时候加载或预处理需要的动态库文件(使用 –static 选项编译的程序除外). 其提供以下不同的文件: /lib/ld.so a.out dynamic linker/loader /lib/ld-linux.so.{1,2} ELF dynamic linker/loader /etc/ld.so.cache File containing a compiled list of… Read More »

使用 transfer 共享文件

By | 2017-12-22

简单说明 transfer 工具可以很方便的让大家以命令行的方式共享文件, 其参考了工具 transfer.sh, 不过去掉了很多不太常用的功能, 另外我们给 transfer 工具增加了以下特性: 1. http basic auth to verifid users; 2. transfer read configure file to revify user; 3. add timestamp to the upload file; 4. use http delete method to delete file; transfer 默认使用 http 的 basicauth 方式验证用户, 如果共享的文件比较敏感可以在 transfer 前面加个 https 做反向代理. 当然最好还是只在局域网环境中使用. 适用场景 transfer 默认会随机生成一个子目录来保存用户上传的文件, 在文件数量特别多的情况下,… Read More »

rqlite 使用及注意事项

By | 2017-11-24

介绍 rqlite 是一款轻量级且分布式的关系型数据库, 实际上它是在 SQLite 的基础上实现的关系型数据库, 加上 raft 协议实现了一致性分布式. 另外它还提供了 http 相关的接口. 不同于 etcd 和 consul 这两款键值数据库, rqlite 是真正的关系型数据库, 也支持事务等. 从这方面看, 在对数据有分布式一致性且支持事务功能的需求中, rqlite 非常适合, 而且很轻量, 方便部署, 不像 MySQL, PostgrelSQL 等显得有些笨重. 当然和传统数据库比起来 rqlite 也有自身的缺点. 下面则着重介绍 rqlite 的使用及注意事项. 环境: ip os hostname 10.0.21.5 centos 6.5 cz-test1 10.0.21.7 centos 6.5 cz-test2 10.0.21.17 centos 6.5 cz-test3 启动: cz-test1 主机:… Read More »

动态代理 MySQL slave 端口

By | 2017-10-16

背景介绍 一直以来我们的数据库主从架构都以 vip 作为高可用的基石, 通过 vip + MHA 的方式完成 master 的高可用, 并未对 slave 进行相关的高可用设计. 随着时间的推移, 为了减少一些业务对 master 的繁重的操作, 线上的一小部分业务开始连接 slave 对外提供服务. 这些常见的业务包括以下类型: 1. op 相关的工程, 统计类大查询; 2. 日志分析类的查询操作; 3. 使用 atlas 进行读写的业务; 4. 主从延迟无关, 以读为主的业务; 我们现有的业务中, 并未使用 atlas, proxysql 等中间件, 所以 op 后台类的业务查询都通过 slave 服务. 不过在过往的几次故障案例中, MHA 切换主从后会出现以下情况: +——–+ +——–+ | vip | | vip… Read More »

tcpdump 在 bond 环境下抓到重复报文的问题说明

By | 2017-08-03

tcpdump 在 bond 环境下抓到重复报文的问题说明 近期在排查问题时, 使用 tcpdump 抓包发现一个很奇怪的现象, 所有抓到的包都有重复的一份, 使用 wireshark 查看则表现为 tcp out of order, tcp dup ack 以及 tcp retransmission 这三种提示特别多, 如下图所示: 我们在 centos 6 和 centos 7 系统中验证都有这样的问题, 类似情况见 redhat-1260733 下面开始详细介绍该问题的描述及处理细节: 环境说明 10.0.21.5 – web 主机 – centos6 10.0.21.7 – redis 主机 – centos7 网络结构 bond 网络结构大致如下: 两台机器的 eth2, eth3 网口分别连接两个交换机, 选择模式… Read More »

使用 dbweb 修改数据库表结构

By | 2017-07-14

1. 说明 我们以 dbweb 工程为基础, 增加了一些功能上的限制, 来方便开发人员直接修改线上的数据库表结构, 修改及增加的更新包括: 1. 去掉原有的修改密码功能; 2. 增加 google totp 密码验证, 每登录一次需要获取最新的密码信息; 3. 限制 sql 执行, 包括以下限制: `delete/update` 语句必须带有 where 条件; `select` 语句必须带有 where 或 limit 条件; 禁止执行以下 sql: use <database> create <database/schema> alter … drop drop <database/schema> drop/truncate <table> purge … grant/revoke .. 格式化 sql; 4. 超过 200MB 大小的表禁止 alter… Read More »