线上服务器动态开启FTP命令端口

作者:linux120 发布时间:January 12, 2016 分类:服务器配置 1 Comment

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [10916:13864682]
-A INPUT -p tcp -m tcp --dport 35000:35999 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 51 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -m length --length 88 -m recent --set --name open --rsource -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 --tcp-flags FIN,SYN,RST,ACK SYN -m recent --rcheck --seconds 300 --name open --rsource -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

基于Saltstack API搭建自动化部署平台(基础篇)

作者:linux120 发布时间:December 10, 2015 分类:服务器配置 1 Comment

Saltstack 提供了很强大的命令行工具,用来管理主机、执行任务,这是它的初衷。然而在大规模的自动化管理中,命令行终究不是很方便,比如批量操作、可视化管理、操作历史纪录等。好在 Saltstack 提供 REST API 管理几乎所有功能。

salt-api 环境配置
Salt-api 不是默认的功能,需要在 salt-master 端安装 salt-api 插件,并且修改配置,已 cetnos 7 为例, 配置路径在 /etc/salt/master , 添加如下配置:

rest_cherrypy:
port: 8000
debug: True
ssl_crt: /etc/pki/tls/certs/ca.crt
ssl_key: /etc/pki/tls/certs/ca.key
external_auth:
pam:
salt:
- .*
看到配置中的 /etc/pki/tls/certs/ca.crt了吗,对了,我们需要生成证书,用于ssl,当然这不是必须的:

cd /etc/pki/tls/certs
# 生成自签名证书, 过程中需要输入key密码及RDNs
make testcert
cd /etc/pki/tls/private/
# 解密key文件,生成无密码的key文件, 过程中需要输入key密码,该密码为之前生成证书时设置的密码
openssl rsa -in localhost.key -out localhost_nopass.key
创建salt用户,并设置密码,用于登陆操作:

useradd -M -s /sbin/nologin salt
password salt
配置完成,重启salt-master,、salt-api

基本的 API 使用
认证,使用上面创建的用户密码进行认证:
curl localhost:8000/login -H "Accept: application/json" -d username=salt -d password=salt -d eauth=pam
记下返回值中的 token, 用于后续操作

执行Job,等待返回
curl 'http://localhost:8000' -H 'Accept: application/json' -H 'X-Auth-Token: $token' -d client='local' -d tgt='172.16.200.58' -d fun='test.ping'
这里client可以是local, wheel, runner, 这里先不展开。

获取minion列表及详细信息
curl http://localhost:8000/minions/ -H 'Accept: application/json' -H 'X-Auth-Token: $token'

异步执行Job
curl http://localhost:8000/minions/ -H 'Accept: application/json' -H 'X-Auth-Token: $token' -d tgt='172.16.200.58' -d fun='status.diskusage'

获取Job执行情况
curl 'http://localhost:8000/jobs/20151015161959798791' -H 'Accept: application/json' -H 'X-Auth-Token: $token'

获取salt-key
curl 'http://localhost:8000/keys' -H 'Accept: application/json' -H 'X-Auth-Token: $token'

events
curl 'http://localhost:8000/events' -H 'Accept: application/json' -H 'X-Auth-Token: $token'
这是个 HTTP 长连接,link这个链接,可以监听 salt 所有事件,比如 Job 执行完成。

以上 API 覆盖了大部分操作,后续文章会给出更详细的说明,以及其他 API,也可以在官方上查看具体详情。

Returner
salt默认是没有任何数据库的,比如 Job 执行信息,会保存在文件中,在 CLI 模式下这个完全不是问题,但是如果以 API 调用,最好有个方便查询的存储方式,比如mysql,以便后续查询。最近挺喜欢 etcd 这个key-value数据库,So,在 master 配置 etcd-Returner,添加如下配置:

etcd_config:
etcd.host: 172.16.200.23
etcd.port: 2379
etcd.returner: etcd_config
etcd.returner_root: /salt/return
这样,salt 的事件信息就会存储在 etcd 了,我们可以 watch /salt/return 获取 salt 发生的变化。

etcdctl ls /salt/return
etcd-pillar
salt的配置也是保存在file,pillar是比较灵活的,它用文件保存,阅读时很方便的,但是 API 操作的时候多有不便,它也有多种扩展的存储方式,同样这里介绍 etcd,在 master 配置 etcd-pillar,添加如下配置:

ext_pillar:
- etcd: etcd_config root=/salt/shard
- etcd: etcd_config root=/salt/%(minion_id)s
这样,共享的配置存储在 /salt/shard,minion独有的配置存储在/salt/%(minion_id)s,当然有利就有弊,使用etcd存储,确实不方便查看。当然对于 web 平台来说,应该不是问题。

好了,salt-api基础篇介绍到这里,后续将这些介绍的功能串起来,提供一个完整的流程,支撑一个基于 web 的 saltstack 管理平台。

windows2012内部访问外部所有网站都比较慢

作者:linux120 发布时间:September 23, 2015 分类:服务器配置 2 Comments

解决过程:
做简单的网络问题排查没有发现问题:1、域名解析无大延迟;2、ping延迟正常,无丢包,无明显大延迟。
无奈只能抓包分析。
打开数据包发现,TCP在建立三次握手的时候都是发送三次SYN包才能建立起来。

这种是比较奇怪的现象。于是问题就被集中为何前2次的 SYN包都被丢弃了,他们有什么特殊性。
比对后发现被丢弃的SYN包都有个共性:包含ECN字段。
原来windows2012将显式拥塞通告(ECN)默认打开了,关闭后测试果然恢复了。关闭方法:
1、 打开命令行
2、 输入:netsh interface tcp set global ecncapability=disabled

使用racadm管理dell远程控制卡

作者:linux120 发布时间:August 11, 2015 分类:服务器配置 1 Comment

找台CentOS安装:
1. wget -q -O - http://linux.dell.com/repo/hardware/latest/bootstrap.cgi | bash
2. yum install srvadmin-all -y

安装后在/opt/dell/srvadmin/sbin/racadm 位置

使用范例:
/opt/dell/srvadmin/sbin/racadm -r 8.8.8.8 -uroot -pcalvin getsysinfo

集群管理:
Dell OpenManage Server Administrator 7.x 推荐使用 Dell Repo 安装方法如下

1.系统 RHEL/CentOS 6.4 32位或64位最小化安装

2. 联网YUM安装必须的基本组件,主要是SNMP客户端,如果不打算用于监控,可忽略,wget,perl 是OMSA安装需用到的,自
RHEL/CentOS 6.4后的2.6.32.358内核变动,所以要额外安装一个 OpenIPMI 包,否则OMSA无法正常启动。软件包注意区分大小写

yum install -y net-snmp net-snmp-devel net-snmp-utils wget perl OpenIPMI

3.下载安装OMSA Repo 源,不成功需要去 http://linux.dell.com/repo/hardware 查看下新版本。

wget -q -O - http://linux.dell.com/repo/hardware/OMSA_7.2/bootstrap.cgi | bash
4.安装 OMSA 7
yum install srvadmin-all

5.成功后启动OMSA
/opt/dell/srvadmin/sbin/srvadmin-services.sh start

6.通过浏览器 https://IP地址:1311 即可登录。 用户名,密码同操作系统用户

常用PC服务器阵列卡监控

作者:linux120 发布时间:August 10, 2015 分类:服务器配置 2 Comments

通常,我们使用的DELL/HP/IBM三家的机架式PC级服务器阵列卡是从LSI的卡OEM出来的,DELL和IBM两家的阵列卡原生程度较高,没有做太多封装,可以用原厂提供的阵列卡管理工具进行监控;而HP的阵列卡一般都做过封装了,因此需要使用自身特有的管理工具来监控。

本文以几种常用的阵列卡为例,展示其阵列卡及硬盘监控的方法。
DELL SAS 6/iR卡,全称LSI Logic SAS1068E,只支持RAID 0, RAID 1, RAID 1+0, 不支持RAID 5等高级RAID特性,不支持阵列卡电池。
DELL PERC PERC H700卡,全称LSI Logic MegaRAID SAS 2108,支持各种RAID级别及高级特性,可选配阵列卡电池。
DELL PERC H310 Mini卡 ,全称LSI Logic / Symbios Logic MegaRAID SAS 2008,支持常见RAID级别,不支持高级RAID特性,不支持阵列卡电池。
IBM ServeRAID M5014 SAS/SATA Controller卡,全称LSI Logic / Symbios Logic MegaRAID SAS 2108,支持各种RAID级别及高级特性,可选配阵列卡电池。
IBM ServeRAID-MR10i SAS/SATA Controller卡,全称LSI Logic / Symbios Logic MegaRAID SAS 1078,支持常见RAID级别,不支持高级RAID特性,可选配阵列卡电池,这个卡其实和DELL的PERC 6/i卡是一样的,都是基于LSI MegaRAID SAS 1078基础上OEM出来的。

上面是几种常见的阵列卡型号,更多的可以自行查看官方的技术手册。

下面我们要继续的是,这些阵列卡以及硬盘如何监控,阵列卡的管理也请查看官方技术手册,不在本文讨论范畴,或者查看作者的一个分享PPT:PC服务器阵列卡管理简易手册。

一般地,支持RAID 5的卡,我们称其为阵列卡,都可以使用LSI官方提供的MegaCli工具来管理,而不支持RAID 5的卡,我们称其为SAS卡,使用lsiutil工具来管理。HP的服务器使用其特有的hpacucli工具来管理。

1、MegaCli工具
a) MegaCli -adpallinfo -aall — 查看阵列卡信息
-a 参数指定阵列卡的编号,一般服务器上只会配一个阵列卡,因此我们通常指定为 -a0(阵列卡适配器编号,从0开始) 即可,主要关注下面几个信息:

状态值 对应含义
Product Name : PERC H710 Mini 阵列卡名称
FW Package Build: 21.2.0-0007 阵列卡firmware版本号,版本如果太低,建议升级以提高稳定性及性能
BBU : Present 是否有配BBU电池
b) MegaCli -cfgdsply -aall — 查看阵列配置

状态值 对应含义
Memory: 512MB 阵列卡cache大小,2的N次方,如果不是,说明阵列卡有异常
Number of dedicated Hotspares: 0 阵列是否有专用/独享热备盘(如果有多个逻辑磁盘组/disk group,则可以指定一个硬盘用于全局热备,那么该disk group上的专用热备盘数量为0也不用担心),除了RAID 1/RAID 1+0一般不指定热备盘以外,其他几个阵列级别建议都要指定热备盘
State : Optimal 阵列状态,如果不是 Optimal 就要关注了
Current Cache Policy: WriteBack, ReadAheadNone, Direct, Write Cache OK if Bad BBU 阵列读写cache策略,建议写策略设置为FORCE WB,最起码是WB,预读策略可以关掉,意义不大,几乎没影响
Disk Cache Policy : Disabled 硬盘cache策略,建议关闭,防止意外时数据丢失
Current Power Savings Policy: None 节电策略,建议关闭
Media Error Count: 0 三个错误计数器,任何一个值大于100就要立刻引起关注,尤其要关注起增长速度。1T以上SATA盘,计数值不够精确,可能所有盘上该值都会大于0,一般重启就会重新清0,如果重启后还是大于0的话,赶紧报修吧。SAS盘的计数值则比较准确。
Other Error Count: 0
Predictive Failure Count: 0
Firmware state: Online, Spun Up 查看硬盘状态,如果是unconfigured表示该硬盘未分配加入到阵列中;如果是 unconfigured(bad)表示该盘不但是未分配,而且还坏了,正是“出师未捷身先死”;如果是failed,表示该盘故障无法识别;如果是rebuilding,表示该盘正在重建数据
c) MegaCli -adpbbucmd -aall — 查看阵列卡电池信息

状态值 对应含义
Temperature: 39 C 查看电池温度,如果相比上一次查看高出不少,就需要关注了,或者可以根据经验设置一个基线值
Battery State: Optimal 电池状态,如果不是为Optimal,就需要关注了
Charger Status: Complete 电池充放电状态
isSOHGood: Yes 电池状态,如果不是为Yes,需要关注
Relative State of Charge: 93 % 当前电量,当电量低于15%,或者电池坏掉时,默认都会将写策略从WB改成WT,除非设定为FORCE WB策略
Max Error = 0 % 电池是否有错误信息
Next Learn time: Tue Oct 14 22:06:50 2014 电池充放电时间,注意这是美国时间。另外,新的阵列卡电池很多改成电容式的了,也就不需要重复充放电了
d) MegaCli -fwtermlog -dsply -aALL 查看阵列卡日志,关注里面的error/fail/warn等多个关键字

2、lsiutil工具
lsiutil有交互和非交互两种方式,作为监控,我们肯定选择非交互模式。想要使用交互模式的,可以根据非交互模式自行练习。
a) lsiutil -p 1 -a 20,12,0,0 — 查看硬盘计数器
Invalid DWord Count 2,563 — 任何一个值大于0,都需要引起关注
Running Disparity Error Count 2,366
Loss of DWord Synch Count 0
Phy Reset Problem Count 0

b) lsiutil -p 1 -a 21,1,0,0,0 — 查看逻辑卷状态

状态值 对应含义
Volume State: optimal, enabled 逻辑卷健康状况
Volume draws from Hot Spare Pools: 0 是否有热备
Volume Size 139392 MB, 2 Members 由几块硬盘组成
Primary is PhysDisk 1 (Bus 0 Target 9) 物理硬盘1
Secondary is PhysDisk 0 (Bus 0 Target 3) 物理硬盘0
c) lsiutil -p 1 -a 21,2,0,0,0 — 查看物理硬盘状态

状态值 对应含义
PhysDisk 0 is Bus 0 Target 3 编号
PhysDisk State: online 状态
Error Count 13, Last Error: Command = 28h, Key = 3, ASC/ASCQ = 11h/00h 错误计数器,大于0的话,就需要引起关注
3、hpacucli工具
hpacucli工具查看阵列、硬盘、电池信息,其实就只要一条指令:
hpacucli ctrl all show config detail — 查看阵列详细信息、配置

状态值 对应含义
Controller Status: OK 阵列卡状态
Firmware Version: 1.18 firmware版本,太低了建议升级,以提高稳定性及性能
Cache Board Present: True 是否配备了cache模块
Cache Status: OK cache模块状态
Cache Ratio: 100% Read / 0% Write cache策略,此处只有读cache,不用于写cache,因为没有bbu电池,见下方结果
Drive Write Cache: Disabled 关闭磁盘cache
Total Cache Size: 256 MB cache大小
Total Cache Memory Available: 208 MB 实际可用cache大小,和理论cache大小不一样,说明cache模块可能有问题
No-Battery Write Cache: Disabled 关闭FORCEWB策略
Battery/Capacitor Count: 0 阵列卡BBU电池数量为0,也就是没有BBU模块
Battery/Capacitor Status: Failed (Replace Batteries) 阵列卡BBU电池状态,这里显示是错误状态,需要及时更换
Array: A 第一个乌列阵列,编号从A开始,依次是A、B、C
Status: OK 物理阵列状态
Logical Drive: 1 第一个逻辑卷,编号从1开始
Fault Tolerance: RAID 5 第一个逻辑卷的阵列级别
Status: OK 第一个逻辑卷状态
Caching: Enabled 第一个逻辑卷是否启用了cache策略
physicaldrive 1I:1:1 第一块物理硬盘,编号从1开始
Status: OK 第一块物理硬盘状态
Firmware Revision: HPDA 第一块物理硬盘firmware,如果太低,也需要及时升级,HP的硬盘每个批次都有不同的firmware