centos
主要的初始化过程包括:
- 确认资源信息,配置阿里(有公网)或私有yum源(无公网)
- 关闭selinux、防火墙、设置hostname
- 所有服务器配置相互SSH免密登录 – 单独执行
- 设置文件打开句柄、线程数量限制
- 关闭文件系统atime --根据应用需求选择
- 关闭THP --根据应用需求选择
- 关闭swap --根据应用需求选择
- 优化网络连接、somaxconn等内核参数
确认资源信息
#检查CPU虚拟核数
grep processor /proc/cpuinfo |wc -l
#检查内存大小
grep -i MemTotal /proc/meminfo
#验证磁盘速度
dd if=/dev/zero of=/data/testfile bs=1G count=20
#验证网络带宽
time scp /data/testfile root@xxx.xxx.xxx.xxx:/data/
ssh免密
#无交互初始化key
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
#将所有节点的公共key收集后集中写入authorized_keys文件
cat ~/.ssh/id_rsa.pub
vi ~/.ssh/authorized_keys
#首次登录免输入yes -- 选择执行
ssh -o stricthostkeychecking=no xxx
#云端一般采用key登录,以下方式需要输入密码,不一定适用,可以通过其他自动化工具比如saltstack,做authorized_keys文件的分发
ssh-copy-id -i ~/.ssh/id_rsa.pub root@xxx.xxx.xxx.xxx
注意:
#centos7普通用户ssh免密需要:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
磁盘格式化及挂载
#格式化磁盘 -- 注意确认、复核
mkfs.ext4 /dev/vdb
#创建挂载目录
mkdir /data
#查看uuid
blkid /dev/vdb
#配置挂载参数 -- noatime根据需求加
vi /etc/fstab
UUID=xxx /data ext4 defaults,noatime,nofail 0 2
#通过命令自动挂载
mount -a
#检查挂载参数是否生效
mount -t ext4
df -h
yum源配置
#阿里云适用,海外或者其他云根据情况配置
mkdir -p /etc/yum.repos.d/old && mv /etc/yum.repos.d/C* /etc/yum.repos.d/old/
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
基础软件安装
EPEL (Extra Packages for Enterprise Linux)是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux.
我们在Centos下使用yum安装时往往找不到rpm的情况,官方的rpm repository提供的rpm包也不够丰富,很多时候需要自己编译很痛苦,而EPEL恰恰可以解决这两方面的问题。EPEL的全称叫 Extra Packages for Enterprise Linux 。EPEL是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。装上了 EPEL之后,就相当于添加了一个第三方源。
#安装epel
yum install epel-release -y
#安装基础常用软件
yum install -y gcc gcc-c++ ntp lrzsz tree telnet dos2unix sysstat iptraf ncurses-devel openssl-devel zlib-devel OpenIPMI-tools nmap-ncat.x86_64 screen iftop iotop nethogs psmisc strace tcpdump vim wget autoconf cmake openssh-clients net-tools iproute lsof dstat deltarpm
lrzsz:rz、sz上传下载工具
sysstat:iostat、vmstat等命令
iotop:查看进程磁盘io排名及统计
nethogs:查看进程网络io排名及统计
iftop:实时网络流量监控
psmisc:pstree、fuser、killall命令
dstat:资源运行情况汇总
deltarpm:rpm包管理依赖
iptraf、ncurses-devel:ip监控工具
ipmi: IPMI是一个开放的标准,监控,记录,回收,库存和硬件实现独立于主CPU,BIOS,以及操作系统的控制权。
screen:GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。
autoconf:是为了产生可移植的shell脚本–configure的编译器
iproute、net-tools:网络工具ip、route、netstat等
基础配置
#字符集设置
echo 'LANG="en_US.UTF-8"' >/etc/locale.conf
source /etc/locale.conf
#文件描述符
cat >> /etc/security/limits.conf << EOF
# 文件句柄
root soft nofile 655350
root hard nofile 655350
* soft nofile 655350
* hard nofile 655350
* soft nofile 655350
* hard nofile 655350
EOF
cat >> /etc/security/limits.d/20-nproc.conf<< EOF
# 线程限制
* soft nproc unlimited
EOF
echo "ulimit -n 655350">>/etc/profile
source /etc/profile
#关闭Selinux及防火墙
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld
#内核优化 具体值根据实际需求配置
cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_fin_timeout = 30
vm.swappiness=0
vm.max_map_count = 262144
kernel.pid_max = 65535
net.core.somaxconn = 32768
net.ipv4.ip_forward = 1
EOF
sysctl -p
#设置时区及对时
timedatectl set-timezone Asia/Shanghai
ntpdate cn.pool.ntp.org
systemctl start ntpd
systemctl enable ntpd
#关闭THP (transparent Huge Pages)
echo never >/sys/kernel/mm/transparent_hugepage/enabled
echo never >/sys/kernel/mm/transparent_hugepage/defrag
#修改服务的文件、进程限制:
echo "DefaultLimitNOFILE=65535" >> /etc/systemd/system.conf
echo "DefaultLimitNPROC=65535" >> /etc/systemd/system.conf
#刷新参数,不需要重启系统
systemctl daemon-reexec
#解决SSH慢问题 -- 选择操作
sed -i "s/#UseDNS yes/UseDNS no/g" /etc/ssh/sshd_config
service sshd restart
#主机名加入hosts -- 选择操作
echo "127.0.0.1 `hostname`" >> /etc/hosts