【引言】
业务系统在完成代码开发和业务部署后,需要正式对外提供服务。然而在上线前,缺少或遗漏某些Linux关键检查项,会给业务稳定性运行埋下隐患。可能会造成未来某一天,出现业务阻断问题,从而影响前端业务感知。同时,也加大了后续业务抢通的难度,运维人员需要耗费大量时间在操作系统层面的排查。为了降低运维人员的工作压力,本文针对业务上线前,详细列出业务上线前的检查项。运维人员可参考本文逐项进行核查,确保业务不带隐患问题入网。
【检查项内容】
①系统信息
②网络配置
③服务配置
④资源管理
⑤安全设置
⑥内核优化
【检查步骤】
一、系统信息检查包括:系统版本、内核信息、主机名称、时间和时区,这些基础信息要与研发确定好,避免出现生产环境与开发环境不一致而引发故障。同时,这些信息也方便后续进行故障定位和日志排查,执行命令:
cat /etc/os-release 查看系统版本uname -r 查看内核版本hostname 查看主机名称,不要使用这个命令设置主机名,因为重启后会失效。hostnamectl set-hostname XXX 设置主机名称为XXXtimedatectl 查看当前所属哪个时区和当前时间timedatactl set-timezone Asia/Shanghai 设置时区为上海时区,一般国内都是设置这个
建议,生产环境要配置NTP或chrony进行时间同步,具体配置步骤可参考本公众号文章。运维必会技能:从零搭建内网时钟服务器,全网时间精准统一
二、网络配置:需要重点核查网卡配置、网卡bond绑定、本地路由、端口监听。
①网卡配置:需要进入到/etc/sysconfig/network-scripts/ifcfg-xxx,查看网卡配置项。需要重点一下关注:
BOOTPROTO=static 是否配置静态IP,一定不要使用dhcpONBOOT=yes 系统重启后自动拉起网卡NETMASK=X.X.X.X 检查掩码是否正确,避免掩码问题引发网络故障GATEWAY=X.X.X.X 检查网关是否正确
针对多网卡时,如果不是配置bond,则只允许一张网卡配置GATEWAY,其它网卡均不能配置网关,否则引起本地路由问题。主网卡配置网关后,其它网卡需配置明细路由。一定不要使用route add命令添加路由,否则重启后失效。具体如下:
在/etc/sysconfig/network-scripts目录下,新建route-xxx,其中xxx要与网卡名一致#添加如下命令:x.x.x.x/xx via 下一跳地址 dev 网卡名 例如,192.168.1.0/24 via 192.168.1.1 dev enp4s1
②检查bond配置:执行命令:
# cat /proc/net/bonding/bond 名称 看bond状态是否正常
③检查路由配置,执行命令:
# route -n 检查目的地址和网关是否正确,并且检查到达目的地址通过的网卡是否正确。
④端口监听,查看本地监听的端口,对于无关端口建议关闭,避免引发安全问题。执行命令:
netstat -an | grep tcpnetstat -an | grep udp
三、服务配置:这里重点检查服务配置文件是否正确,同时检查服务是否开机自启,这块特别重要。很多运维人员没有设置开机自启,造成服务器重启后业务无法正常拉起。执行命令:
systemctl enable xxx.service四、资源管理:资源重点观察CPU、内存、存储和网卡是否异常,对于资源不足建议进行扩容,执行命令:
top #重点观察%Cpu(s)这一行,us+sy超过70%则认为计算资源不足,需要扩容。free -h #重点检查“Mem:”这一行中的free列,当free低于10%,则需要进行扩容。通过还要关注“Swap:”这一行的useed列,理论上这列值为0df -h #重点检查Use%这一列内容,当使用超过70%则需要进行扩容。ss -s #重点检查timewait数值,当这个值太大(高于100),则认为网络质量存在异常ifconfig #检查RX errors和TX errors这两行,当不为0时,则认为网络存在丢包重传问题。
五、安全设置:需要对SSH、防火墙进行设置,具体如下:
(1)SSH主要禁用root登录、空密码、重试次数、端口号。
①修改/etc/ssh/sshd_config配置文件:
# 禁止 root 直接登录PermitRootLogin no# 修改默认端口(建议非 22)Port 2288# 闲置超时自动断开ClientAliveInterval 300ClientAliveCountMax 2# 最大失败尝试次数MaxAuthTries 3# 禁止空密码PermitEmptyPasswords no
②设置允许SSH登录访问的IP地址,不再清单里面不允许登录。
vi /etc/hosts.allow文件,配置如下:
#sshd: 允许登录地址或者地址段sshd: 127.0.0.1sshd: 10.0.0.0/24修改/etc/hosts.deny文件,添加如下配置:ALL: ALL
(2)防火墙一定要保证开启状态,并且放通对外提供服务的端口。执行命令:
systemctl enable --now firewalldsystemctl status firewalldfirewall-cmd --set-default-zone=drop 默认拒绝所有入站firewall-cmd --permanent --add-port=2288/tcp 放通SSH登录端口,前面将22改成2288firewall-cmd --permanent --add-port=80/tcp 放通业务端口firewall-cmd --reload 重载配置
六、内核优化
①短链接优化,避免出现大量TIME_WAIT
net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 0net.ipv4.tcp_fin_timeout = 30
②端口范围和连接数
net.ipv4.ip_local_port_range = 1024 65535net.core.somaxconn = 65535net.core.rmem_max = 16777216net.core.wmem_max = 16777216
③TCP队列与半连接
net.core.somaxconn = 65535net.core.netdev_max_backlog = 65535net.ipv4.tcp_max_syn_backlog = 65535
④TCP保活
net.ipv4.tcp_keepalive_time = 600net.ipv4.tcp_keepalive_intvl = 30net.ipv4.tcp_keepalive_probes = 3
⑤句柄和进程数
fs.file-max = 1048576fs.nr_open = 1048576kernel.pid_max = 4194304
评论区有文章总结,欢迎大家讨论!觉得好可以关注、点赞、推荐、转发,谢谢!