- Linux集群和自動化運維
- 余洪春
- 2422字
- 2019-01-04 00:48:43
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
- Getting Started with oVirt 3.3
- Modern Web Testing with TestCafe
- Ganglia系統監控
- Kubernetes從入門到實踐
- 深入理解eBPF與可觀測性
- Windows Server 2019 Administration Fundamentals
- Mobile First Design with HTML5 and CSS3
- VMware NSX Cookbook
- Mastering Reactive JavaScript
- INSTANT Migration from Windows Server 2008 and 2008 R2 to 2012 How-to
- 從實踐中學習Kali Linux無線網絡滲透測試
- AWS SysOps Cookbook
- 從實踐中學習Windows滲透測試
- Linux軟件管理平臺設計與實現
- Advanced Infrastructure Penetration Testing