Linux集群和自动化维1.4.1 系统的基础优化

简介:

1.4.1 系统的基础优化


1.更新yum官方源

CentOS 6.4 系统自带的更新源速度比较慢,想必各位都有所感受,国内的速度慢得让人受不了。为了让CentOS 6.4系统使用速度更快的yum更新源,一般做运维的都会选择更换源,笔者一般会选择网易的更新源,详细步骤如下所示。

1)下载repo文件,命令如下:

wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

2)备份并替换系统的repo文件,命令如下:

cd /etc/yum.repos.d/

mv CentOS-Base.repo CentOS-Base.repo.bak

mv CentOS6-Base-163.repo CentOS-Base.repo

3)执行yum源更新,命令如下:

yum clean all #清除yum缓存

yum makecache #重建缓存

yum update #升级Linux系统

增加epel源,详细步骤如下所示。

1)下载rpm文件并进行安装,命令如下:

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

rpm -ivh epel-release-6-8.noarch.rpm

2)安装yum-priorities源优先级工具,命令如下:

yum install yum-priorities

yum-priorities源优先级工具是yum-plugin-priroites插件,用于给yum源划分优先级。比如说系统存在官方源、epel、puppetlabs3个yum源,这3个yum源中可能含有相同的软件,yum管理器会应用该工具来分辨安装软件时采用哪个yum源的软件。

如果说,设置官方的yum源优先级最高,epel yum源第二,puppetlabs第三(用1到99来表示,1最高),那么在安装程序的时候,就会先寻找官方的yum源。如果该源里面有所要的程序,那就停止寻找,直接安装找到的;如果没有找到,则依次寻找epel和puppetlabs的源。如果说3个yum源都含有同一个软件,那就安装优先级最高的官方yum源的。添加优先级的过程比较简单,只需要编辑对应的repo文件,在文件最后添加如下内容即可:

priority=对应优先级数字

注意,要想开启yum源的优先级功能,就要先确保priorities.conf文件里面有如下内容,需要先打开此文件,打开文件的命令如下:

vim /etc/yum/pluginconf.d/priorities.conf

确保文件里面包含如下内容:

[main]

enabled=1

2.关闭不需要的服务

众所周知,服务越少,系统占用的资源就会越少,所以应当关闭不需要的服务。建议把不需要的服务关闭掉,这样做的好处是减少内存和CPU资源占用。首先可以看下系统中存在着哪些已经启动了的服务,查看命令如下:

ntsysv

下面列出的是需要启动的服务,未列出的服务一律关闭。

crond:自动计划任务。

network:Linux系统的网络服务,很重要,若不开启此服务的话,服务器就不能联网。

sshd:OpenSSH服务器守护进程。

rsyslog:Linux的日志系统服务(CentOS 5.8下此服务名称为syslog),必须要启动。

3.关闭不需要的TTY

可用vim编辑器打开vim /etc/init/start-ttys.conf文件,文件内容如下所示:

start on stopped rc RUNLEVEL=[2345]

env ACTIVE_CONSOLES=/dev/tty[1-6]

env X_TTY=/dev/tty1

task

script

        . /etc/sysconfig/init

        for tty in $(echo $ACTIVE_CONSOLES) ; do

                [ "$RUNLEVEL" = "5" -a "$tty" = "$X_TTY" ] && continue

                initctl start tty TTY=$tty

        done

end script

这段代码使init打开了6个控制台,可分别用ALT+F1到ALT+F6进行访问。此6个控制台默认都驻留在内存中,用ps aux命令即可看到,命令如下:

ps aux | grep tty | grpe -v grep

命令显示结果如下所示:

root       1011  0.0  0.1   4060   288 tty1      Ss+  Nov25   0:00 /sbin/mingetty /dev/tty1

root      1013  0.0  0.1   4060   292 tty2     Ss+  Nov25   0:00 /sbin/mingetty /dev/tty2

root      1015  0.0  0.1   4060   292 tty3     Ss+  Nov25   0:00 /sbin/mingetty /dev/tty3

root      1017  0.0  0.1   4060   288 tty4     Ss+  Nov25   0:00 /sbin/mingetty /dev/tty4

root      1019  0.0  0.1   4060   288 tty5     Ss+  Nov25   0:00 /sbin/mingetty /dev/tty5

root      1021  0.0  0.1   4060   292 tty6     Ss+  Nov25   0:00 /sbin/mingetty /dev/tty6

root      7467  0.0  0.1   4072   340 hvc0     Ss+  Nov29   0:00 /sbin/agetty /dev/hvc0

    38400 vt100-nav

事实上没有必要使用这么多,那如何关闭不需要的进程呢?

通常保留两个控制台就可以了,打开/etc/init/start-ttys.conf文件,注意以下代码内容:

env ACTIVE_CONSOLES=/dev/tty[1-6]

将[1-6]修改为[1-2],然后再打开/etc/sysconfig/init文件,注意以下代码内容:

ACTIVE_CONSOLES=/dev/tty[1-6]

将[1-6]修改为[1-2],然后重启机器即可。

4.对TCP/IP网络参数进行调整

调整TCP/IP网络参数,可以加强对抗SYN Flood的能力,命令如下:

echo 'net.ipv4.tcp_syncookies = 1' >> /etc/sysctl.conf

sysctl -p

5.修改SHELL命令的history记录个数

用vim编辑器打开/etc/profile文件,关注HISTSIZE=1000:

vi /etc/profile

在找到HISTSIZE=1000后,将其改为HISTSIZE=100(这条可根据实际工作环境而定)。

不需要重启系统也可让其生效,命令如下:

source /etc/profile

6.定时校正服务器的时间

我们可以定时校正服务器的时间,命令如下:

yum install ntp

crontab -e

加入一行:

*/5 * * * * /usr/sbin/ntpdate ntp.api.bz

ntp.api.bz 是一组NTP服务器集群,之前是6台服务器,位于上海电信;现在是3台服务器,分散于上海和浙江电信,可以用dig命令查看:

dig ntp.api.bz

命令显示结果如下所示:

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.5 <<>> ntp.api.bz

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48560

;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:

;ntp.api.bz.            IN  A

;; ANSWER SECTION:

ntp.api.bz.        600 IN  A    61.153.197.226

ntp.api.bz.        600 IN  A    218.75.4.130

ntp.api.bz.        600 IN  A    114.80.81.1

;; Query time: 10 msec

;; SERVER: 202.103.24.68#53(202.103.24.68)

;; WHEN: Thu Dec 24 06:58:36 2015

;; MSG SIZE  rcvd: 76

7.停止IPv6网络服务

在CentOS 6.4默认的状态下,IPv6是被启用的,可用如下命令查看:

lsmod | grep ipv6

命令显示结果如下:

nf_conntrack_ipv6       8748  2

nf_defrag_ipv6         11182  1 nf_conntrack_ipv6

nf_conntrack           79357  2 nf_conntrack_ipv6,xt_state

ipv6                  321422  23 ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6

有些网络和应用程序还不支持IPv6,因此,禁用IPv6可以说是一个非常好的选择,以加强系统的安全性,并提高系统的整体性能。不过,首先要确认一下IPv6是不是处于被启动的状态,命令如下:

ifconfig -a ← 列出全部网络接口信息

命令显示结果如下所示:

eth0      Link encap:Ethernet  HWaddr 00:16:3E:7F:67:C3 

          inet addr:192.168.1.207  Bcast:192.168.1.255  Mask:255.255.255.0

          inet6 addr: fe80::216:3eff:fe7f:67c3/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:405835 errors:0 dropped:0 overruns:0 frame:0

          TX packets:197486 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:327950786 (312.7 MiB)  TX bytes:17186162 (16.3 MiB)

          Interrupt:24

 

lo        Link encap:Local Loopback 

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

然后修改相应的配置文件,停止IPv6,命令如下:

echo "install ipv6 /bin/true" > /etc/modprobe.d/disable-ipv6.conf

#每当系统需要加载IPv6模块时,强制执行/bin/true来代替实际加载的模块

echo "IPV6INIT=no" >> /etc/sysconfig/network-scripts/ifcfg-eth0

#禁用基于IPv6网络,使之不会被触发启动

8.调整Linux的最大文件打开数

要调整一下Linux的最大文件打开数,否则运行Squid服务的机器在高负载时执行性能将会很差;另外,在Linux下部署应用时,有时候会遇上“Too many open files”这样的问题,这个值也会影响服务器的最大并发数。其实Linux是有文件句柄限制的,但默认值不是很高,一般是1024,生产服务器很容易就会达到这个值,所以需要改动此值。

下面打开/etc/security/limit.conf命令,在最后一行添加如下命令:

* soft nofile 65535

* hard nofile 65535

正解的做法应该是除了以上步骤之外,还要在系统的/etc/rc.local文件里添加如下内容:

ulimit -SHn 65535

另外,ulimit -n命令并不能真正看到文件的最大文件打开数,可用如下脚本查看:

#!/bin/bash

for pid in `ps aux |grep nginx |grep -v grep|awk '{print $2}'`

do

cat /proc/${pid}/limits |grep 'Max open files'

done

在线上环境找一台cms业务机器,执行此脚本,显示结果如下所示:

Max open files            65535                65535                files    

Max open files            65535                65535                files    

Max open files            65535                65535                files    

Max open files            65535                65535                files    

Max open files            65535                65535                files    

Max open files            65535                65535                files    

Max open files            65535                65535                files    

Max open files            65535                65535                files    

Max open files            65535                65535                files    

Max open files            65535                65535                files 

9.启动网卡

在配置CentOS 6.4的网卡IP地址时,容易忽略的一项是Linux在启动时未启动网卡,其后果很明显,那就是该Linux机器永远也没有IP地址。下面是一台线上环境服务器网卡/etc/sysconfig/network-scripts/ifcfg-eth0文件的配置内容:

DEVICE=eth0

BOOTPROTO=static

HWADDR=00:14:22:1B:71:20

IPV6INIT=no

IPV6_AUTOCONF=yes

ONBOOT=yes   -->此项一定要记得更改为yes,它会在系统引导时就启动网卡设备

NETMASK=255.255.255.192

IPADDR=203.93.236.146

GATEWAY=203.93.236.129

TYPE=Ethernet

PEERDNS=yes   -->允许用从DHCP处获得的DNS覆盖本地的DNS

USERCTL=no    -->不允许普通用户修改网卡

10.关闭写磁盘I/O功能

Linux文件默认有3个时间,分别如下所示。

atime:对此文件的访问时间。

ctime:此文件inode发生变化的时间。

mtime:此文件的修改时间。

如果有多个小文件(比如Web服务器的页面上有多个小图片),通常是没有必要记录文件的访问时间的,这样就可以减少写磁盘的I/O,可这要如何配置呢?

首先,修改文件系统的配置文件/etc/fstab,然后,在包含大量小文件的分区中使用noatime和nodiratime这两个命令。例如:

/dev/sda5 /data/pics ext3 noatime,nodiratime 0 0

这样文件被访问时就不会再产生写磁盘的I/O了。

11.修改SSH登录配置

SSH服务配置优化,请保持机器中至少包含一个具有sudo权限的用户,下面的配置会禁止root远程登录,代码内容如下所示:

sed -i 's@#PermitRootLogin yes@PermitRootLogin no@' /etc/ssh/sshd_config #禁止root远程登录

sed -i 's@#PermitEmptyPasswords no@PermitEmptyPasswords no@' /etc/ssh/sshd_config  #禁止空密码登录

sed -i 's@#UseDNS yes@UseDNS no@' /etc/ssh/sshd_config /etc/ssh/sshd_config #关闭    SSH反向查询,以加快SSH的访问速度

12.增加具有sudo权限的用户

添加用户的步骤和过程比较简单(这里略过),由于系统已经禁止了root远程登录,因此需要一个具有sudo权限的admin用户,权限跟root相当,这里用vim命令,在打开的/etc/sudoers文件内容里添加如下内容:

## Allow root to run any commands anywhere

root    ALL=(ALL)       ALL

然后添加如下内容:

admin   ALL=(ALL)       ALL

如果在进行sudo切换时不想输入密码,可以做如下更改:

admin  ALL=(ALL) NOPASSWD:ALL

相关文章
|
9月前
|
Ubuntu Linux Anolis
Linux系统禁用swap
本文介绍了在新版本Linux系统(如Ubuntu 20.04+、CentOS Stream、openEuler等)中禁用swap的两种方法。传统通过注释/etc/fstab中swap行的方式已失效,现需使用systemd管理swap.target服务或在/etc/fstab中添加noauto参数实现禁用。方法1通过屏蔽swap.target适用于新版系统,方法2通过修改fstab挂载选项更通用,兼容所有系统。
857 3
Linux系统禁用swap
|
9月前
|
Linux
Linux系统修改网卡名为eth0、eth1
在Linux系统中,可通过修改GRUB配置和创建Udev规则或使用systemd链接文件,将网卡名改为`eth0`、`eth1`等传统命名方式,适用于多种发行版并支持多网卡配置。
1436 3
|
8月前
|
安全 Linux iOS开发
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
596 6
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
|
9月前
|
机器学习/深度学习 人工智能 测试技术
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
EdgeMark是一个面向嵌入式AI的自动化部署与基准测试系统,支持TensorFlow Lite Micro、Edge Impulse等主流工具,通过模块化架构实现模型生成、优化、转换与部署全流程自动化,并提供跨平台性能对比,助力开发者在资源受限设备上高效选择与部署AI模型。
786 9
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
924 3
Linux系统初始化脚本
|
8月前
|
存储 人工智能 自然语言处理
拔俗AI自动化评价分析系统:让数据说话,让决策更智能
在用户体验为核心的时代,传统评价分析面临效率低、洞察浅等痛点。本文基于阿里云AI与大数据技术,构建“数据-算法-应用”三层智能分析体系,实现多源数据实时接入、情感与主题精准识别、跨模态融合分析及实时预警,助力企业提升运营效率、加速产品迭代、优化服务质量,并已在头部电商平台成功落地,显著提升用户满意度与商业转化。
699 0
|
9月前
|
安全 Linux Shell
Linux系统提权方式全面总结:从基础到高级攻防技术
本文全面总结Linux系统提权技术,涵盖权限体系、配置错误、漏洞利用、密码攻击等方法,帮助安全研究人员掌握攻防技术,提升系统防护能力。
1076 1
|
9月前
|
监控 安全 Linux
Linux系统提权之计划任务(Cron Jobs)提权
在Linux系统中,计划任务(Cron Jobs)常用于定时执行脚本或命令。若配置不当,攻击者可利用其提权至root权限。常见漏洞包括可写的Cron脚本、目录、通配符注入及PATH变量劫持。攻击者通过修改脚本、创建恶意任务或注入命令实现提权。系统管理员应遵循最小权限原则、使用绝对路径、避免通配符、设置安全PATH并定期审计,以防范此类攻击。
1367 1
|
9月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
991 1
二、Linux文本处理与文件操作核心命令