2019-6-26

查看内核 uname -a
查看Ubuntu版本 cat /etc/issue或者lsb_release -a
查看内核加载的模块 lsmod
查看PCI设备 lspci
查看USB设备 lsusb
查看网卡状态 sudo ethtool eth0
查看CPU信息 cat /proc/cpuinfo
显示当前硬件信息 sudo lshw
查看硬盘的分区 sudo fdisk -l
查看IDE硬盘信息 sudo hdparm -i /dev/had
查看STAT硬盘信息 sudo hdparm -I /dev/sda sudo apt-get install blktool sudo blktool /dev/sda id
查看硬盘剩馀空间 df -h df -H
查看目录占用空间 du -hs 目录名
优盘没法卸载 sync fuser -km /media/usbdisk
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
python-hwinfo、psutil

ls、lsattr、lsblk、lscpu、lshw、lsinitrd、lsipc、lslocks、lslogins、lsmod、lsns、lsof、lspci、lsscsi

dmidecode
multipath
strace
raid
lvm
sg3_utils
iostat
hdparm

cat /proc/scsi/scsi
/sys/class/scsi_device/<h:c:t:l>/device/model
/sys/class/scsi_device/<h:c:t:l>/device/rev
/sys/class/scsi_device/<h:c:t:l>/device/vendor

split("\\s+") 按空格,制表符,等进行拆分

psutil是一个跨平台库,轻松获取系统运行的进程和系统利用率能实现ps、top、lso、nice、netstat、ifconfig、who、df、kill、free、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap 这些命令的功能

lsscsi展示信息解释:
第一列:SCSI设备id:host, channel,id,lun。
第二列:设备类型。
345列:设备厂商,型号,版本信息。
最后一列:设备主节点名。
lsscsi
-s 显示容量大小。
-c 用全称显示默认的信息。
-d 显示设备主,次设备号。
-g 显示对应的sg设备名。
-H 显示主机控制器列表,-Hl,-Hlv。
-l 显示相关属性,-ll,-lll=-L。
-v 显示设备属性所在目录。
-x16进制显示lun号。
-p 输出DIF,DIX 保护类型。
-P 输出有效的保护模式信息。
-i 显示udev相关的属性
-w 显示WWN
-t 显示相应传输信息(ATA,FC,SBP,ISCSI,SPI,SAS,SATA,USB),-Ht,-tl.(包括sas地址)

LUN的全称是Logical Unit Number,也就是逻辑单元号。我们知道SCSI总线上可挂接的设备数量是有限的,一般为8个或者16个,我们可以用Target ID(也有称为SCSI ID的)来描述这些设备,设备只要一加入系统,就有一个代号,我们在区别设备的时候,只要说几号几号就可以了。

linux下命令行json工具: jq

MegaCLI下载:
https://docs.broadcom.com/docs-and-downloads/raid-controllers/raid-controllers-common-files/8-07-06_MegaCLI.zip
命令使用:
#/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL 查raid级别
#/opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo -aALL 查raid卡信息
#/opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL 查看硬盘信息
#/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -aAll 查看电池信息
#/opt/MegaRAID/MegaCli/MegaCli64 -FwTermLog -Dsply -aALL 查看raid卡日志
#/opt/MegaRAID/MegaCli/MegaCli64 -adpCount 【显示适配器个数】
#/opt/MegaRAID/MegaCli/MegaCli64 -AdpGetTime –aALL 【显示适配器时间】
#/opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo -aAll 【显示所有适配器信息】
#/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -LALL -aAll 【显示所有逻辑磁盘组信息】
#/opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll 【显示所有的物理信息】
#/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuStatus -aALL |grep ‘Charger Status’ 【查看充电状态】
#/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuStatus -aALL【显示BBU状态信息】
#/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuCapacityInfo -aALL【显示BBU容量信息】
#/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuDesignInfo -aALL 【显示BBU设计参数】
#/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuProperties -aALL 【显示当前BBU属性】
#/opt/MegaRAID/MegaCli/MegaCli64 -cfgdsply -aALL 【显示Raid卡型号,Raid设置,Disk相关信息】

2019-6-24

1
2
3
glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。由于 glibc 囊括了几乎所有的UNIX通行的标准,可以想见其内容包罗万象。而就像其他的 UNIX 系统一样,其内含的档案群分散于系统的树状目录结构中,像一个支架一般撑起整个操作系统。在 GNU/Linux 系统中,其C函式库发展史点出了GNU/Linux 演进的几个重要里程碑,用 glibc 作为系统的C函式库,是GNU/Linux演进的一个重要里程碑。
AppImageKit
,通过构建一个内核加载文件系统,打包app的,这样的好处就是linux内核通用型好,因为打包文件系统,在嵌入式linux中是一个非常常用手段,弄一个文件系统(通常是只读的),放到磁盘上,然后读取,后加载到内核执行,如果要写入的话,就写入到另一个存储区域,这样就可以保证系统的安全性.

2019-6-21

1
UPX非常好的可执行文件压缩软件,支持的格式包括 atari/tos,djgpp2/coff,dos/com,dos/exe,dos/sys,rtm32/pe,tmt/adam,watcom/le,win32/pe,Linux/i386 等等,压缩比率也非常的高。

2019-6-20

1
2
3
4
5
6
7
问题:lvs+keepalived集群环境配置完成后通过vip无法访问web
1. 网卡上不存在vip
检查keepalived配置文件是否正确,keepalived服务是否正常启动。
2. 网卡上存在vip,但是无法访问
检查防火墙是否开启vip映射到RealServer的所有端口;检查所有RealServer的回环网卡及ARP配置是否正确。
3. 两边网卡都存在vip
两台主机不能正常通信,都把自己当成Master,检查防火墙是否配置vrrp规则

2019-6-19

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
HTTP 属于超文本传输协议,用来在 Internet 上传送超文本,而 HTTPS 为安全超文本传输协议,在 HTTPS 基础上拥有更强的安全性,简单来说 HTTPS 是 HTTP 的安全版,是使用 TLS/SSL 加密的 HTTP 协议。
HTTPS和HTTP的区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

OSI七层模型:
应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet
表示层 数据格式化,代码转换,数据加密 没有协议
会话层 解除或建立与别的接点的联系 没有协议
传输层 提供端对端的接口 TCP,UDP
网络层 为数据包选择路由 IP,ICMP,RIP,OSPF,BGP,IGMP
数据链路层 传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,ARP,RARP,MTU
物理层 以二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2

keepalived原理:
Layer3,4&7工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下:

Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被 非法关机。Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。

Layer4:如果您理解了Layer3的方式,Layer4就容易了。Layer4主要以TCP端口的状态来决定服务器工作正常与否。如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。

Layer7:Layer7就是工作在具体的应用层了,比Layer3,Layer4要复杂一点,在网络上占用的带宽也要大一些。Keepalived将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则Keepalived将把服务器从服务器群中剔除。

2019-6-18

1
2
3
网卡状态查看
nmcli conn show
ethtool ens160

2019-6-14

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
function parseURL(url) {
var a = document.createElement('a');
a.href = url;
return {
source: url,
protocol: a.protocol.replace(':',''),
host: a.hostname,
port: a.port,
query: a.search,
params: (function(){
var ret = {},
seg = a.search.replace(/^\?/,'').split('&'),
len = seg.length, i = 0, s;
for (;i<len;i++) {
if (!seg[i]) { continue; }
s = seg[i].split('=');
ret[s[0]] = s[1];
}
return ret;
})(),
file: (a.pathname.match(/\/([^\/?#]+)$/i) || [,''])[1],
hash: a.hash.replace('#',''),
path: a.pathname.replace(/^([^\/])/,'/$1'),
relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [,''])[1],
segments: a.pathname.replace(/^\//,'').split('/')
};}

2019-6-13

1
2
3
4
5
docker kill $(docker ps -q) ; docker rm $(docker ps -a -q) ; docker rmi $(docker images -q -a)

echo `pwd`
echo $(pwd)
echo $(eval pwd)

2019-6-6

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
32
33
34
35
14台集群环境:
调度器
Director1(LVS1 + Keepalived1)
Director2(LVS2 + Keepalived2)
Web服务器
RealServer1
RealServer2
RealServer3
消息服务器
ActiveMQ1
ActiveMQ2
缓存服务器
Redis1
Redis2
数据库
MySQL1
MySQL2
分布式存储
FastDFS1
FastDFS2
预览服务器
Office1

1. redis在服务器断电时出现pid文件残留,系统重启后服务无法再次启动,需要清除pid文件才能启动成功
2. ActiveMQ依赖MySQL,但两个服务又不在同一个机器,如何确保服务正常启动?
3. LVS+Keepalived两台Director网卡都有VIP存在,关闭防火墙后正常

我来贴上解决方法吧,出现这问题的场景是在阿里VPS云服务器网络环境中,因为路由交换层禁用了ARP的广播限制,造成KEEPALIVE主备协议无法通过广播的方式进行通信,造成主备两台服务器都强占HAVIP地址,出现同时两台服务器都有VIP地址的情况出现,必须通过配置来指定IP的两台服务器间进行通讯(阿里说明文档中解释只能支持两台使用同一个HAVIP地址),基于以下方法可以的情况下,多备方式用同样的方式也应该可行,有需要的兄弟可以测试下多IP备的方式(正常情况需要主备一对主备就够了)。
在网卡配置后面需要加上以下配置:
unicast_src_ip 192.168.1.21 ##(本地IP地址)
unicast_peer {
192.168.1.22 ##(对端IP地址)此地址一定不能忘记
}

之前我们用keepalived做集群时一般使用它构建服务器主从,也就是只有一个vip,并且这个vip只是在主节点上,当主节点宕机时,vip漂移到从节点上,从而实现高可用。但随着业务的发展,单个节点随之成为业务的性能瓶颈,及时我们使用的负载均衡再强大,服务器配置再高,也不可能单节点抗住所有流量。而通过这种方案,在keepalived的主从基础上扩展一下,通过配置多个vip,每个keepalived节点互为主从,正常情况下保证所有服务器都能拥有一个vip,然后通过dns负载均衡技术,将业务流量转发到每个vip。从而在一定程度上避免了单服务器的性能瓶颈。

2019-6-4

1
2
3
4
5
6
7
8
9
10
11
12
13
14
给进入 eth0 的包打包 mark 的标记,当数据包是发给 VIP:80 并且 MAC 不是其它 LVS 服务器的话。才做个 mark,这样才会对指定的 fwmark 进行 loadbalance 放入到 LVS 中处理。只要数据包是从任意其它的 MAC 地址(非 LVS 的转发)会被发往 VIP:port,会不在进行 loadbalanced 而是直接转给后面监听的 demon 程序进行应用的处理。实际就是使用 iptables 来对进入的流量设置 MARK。然后配置 keepalived 只处理有 MARK 过的流量。不在使用以前绑定的 VIP 和端口

# iptables -t mangle -I PREROUTING -d $VIP -p tcp -m tcp --dport $VPORT -m mac ! --mac-source $MAC_Director2 -j MARK --set-mark 0x3
$VIP 为VIP地址
$VPORT 为服务端口
$MAC_Director2 是备机的MAC (keepalived 之间互相监听的那块网卡)

# iptables -t mangle -I PREROUTING -d 192.168.23.253 -p tcp -m tcp --dport 80 -m mac ! --mac-source 08:00:27:46:c7:d4 -j MARK --set-mark 0x3
# iptables -t mangle -I PREROUTING -d 192.168.23.253 -p tcp -m tcp --dport 80 -m mac ! --mac-source 08:00:27:9e:ef:a0 -j MARK --set-mark 0x4

ipvs的防火墙打标,实现基于防火墙的负载均衡集群
# virtual_server fwmark int

http://www.linuxyw.com/linux/fuzaijunheng/20130429/146.html