集群搭建前优化方案
分区方案
普通分区形式
- /boot 引导分区 512M-1024M
- swap 交换分区 内存大于8G,给8G。内存小于8G,给到1.5倍的内存。
- / 给所有空间
使用条件
- 1、数据不那么重要。
- 2、必须必须要有备份策略:就是实时的。
- 内部人员发布数据,同时发布到两台以上生产服务器里。是三个备份,GIT上,代码。
- 外部用户写入数据(图片、视频 文字),
- 同时发布到两台服务器后面共享的服务器上(对这个共享服务器做备份),
- 两个备份。
存储服务器(含数据库)的分区方式
- /boot 引导分区 512M-1024M
- swap 交换分区 内存大于8G,给8G。内存小于8G,给到1.5倍的内存。
- / 给100G
- /data 剩余给数据分区 ,data可以是任意名称。
门户网站的分区方案
- /boot 引导分区 512M-1024M
- swap 交换分区 内存大于8G,给8G。内存小于8G,给到1.5倍的内存。
- / 给100G
- 剩余保留,将来哪个部门使用,使用部门自己分剩余的分区。
错误分区方案
- /boot 引导分区 512M-1024M
- swap 交换分区 内存大于8G,给8G。内存小于8G,给到1.5倍的内存。
- /home 家目录
- /var
- /usr
- /
LVM动态调整。降低性能。
传统企业,没有多少用户,一天同时几十个并发访问,数据量还不大。
更改网卡名字为传统eth*
安装时按Tab键在grub(100行左右)结尾添加net.ifnames=0 biosdevname=0
语言环境
1 | vim /etc/locale.conf |
配置网络
1 | nmtui(c6 setup) |
更改国内YUM源
1 | curl -s -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo |
企业运维常用基础工具包
CentOS6和CentOS7都要安装的企业运维常用基础工具包
yum install tree nmap dos2unix lrzsz nc lsof wget tcpdump htop iftop iotop sysstat nethogs -y
1 | tree #tree以树形结构显示文件和目录 |
CentOS7要安装的企业运维常用基础工具包
yum install psmisc net-tools bash-completion vim-enhanced -y
1 | psmisc #含有killall、pstree等命令 |
CentOS7升级内核
1)更新yum源仓库:
1 | rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org |
2)查看可用的内核包:yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
3)安装最新版本内核
yum --enablerepo=elrepo-kernel install kernel-ml
4)查看系统上的所有可用内核
awk -F \' '$1=="menuentry "{print i++ " : " $2}' /etc/grub2.cfg
5)设置新的内核为grub2的默认版本:
grub2-set-default 0
6)生成 grub 配置文件并重启:
grub2-mkconfig -o /boot/grub2/grub.cfg
7)重新启动服务器:reboot
8)查看内核版本:
1 | [root@test ~]# uname -r |
gcc升级
1)需要将gcc升级到8.1.0
1 | [root@pincheng ~]# cd /usr/local/src/ |
2)运行自带脚本,完成下载、配置、安装依赖库,可以节约我们大量的时间和精力
1 | [root@pincheng gcc-8.1.0]# ./contrib/download_prerequisites |
3)建立一个目录供编译出的文件存放
1 | [root@pincheng gcc-8.1.0]# mkdir gcc-build-8.1.0 |
4)生成makefile文件
1 | [root@pincheng gcc-build-8.1.0]# ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib |
5)编译(很耗时,-j4对多核处理器的优化)
1 | [root@pincheng gcc-build-8.1.0]# make -j4 && make install |
6)验证是否成功,如果还是显示原来的版本,则需要重启系统
1 | [root@pincheng ~]# gcc -v |
补充安装包组
mini安装时,应当选择四个包组分别是
1 | yum group install "Compatibility" "Base" "Development tools" |
查看如果系统未安装或是忘记安装这些组包,须完善。
集群优化
地址规划
目录规划
统一环境:
- 系统的基础优化
- 修改主机名ip地址
- 主机名能解析
系统基础优化:
修改提示符颜色
1 | [root@s01 ~]$ echo "PS1='[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\]\[\e[31;1m\] \w\[\e[0m\]]\$ '" >> /etc/bashrc |
规范目录
1 | mkdir -p /server/tools |
配置所有主机域名hosts解析
1 | cat >/etc/hosts<<EOF |
更改主机名
1 | hostnamectl set-hostname 主机名 |
更新yum源
1 | curl -s -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo |
关闭SELinux
1 | sed -i 's#SELINUX=.*#SELINUX=disabled#g' /etc/selinux/config |
关闭firewalld防火墙
PS:有外网的服务器要开,纯内网服务器可以关闭。
1 | systemctl stop firewalld |
添加普通用户并提权
1 | useradd felix |
更改字符集
1 | cp /etc/locale.conf{,.ori} |
时间同步
1 | yum install ntpdate -y |
提升命令行操作安全性(可选优化)
1 | # 提升命令行安全(可选配置) |
文件描述符
1 | 一般情况下,一台服务器被访问时,会启用很多的程序,而启动每一个程序的进程都会占用文件服务器描述符的大小,因此有时需要加大文件描述符的大小,从而不影响到程序的启动。 |
内核优化
1 | cat >>/etc/sysctl.conf<<EOF |
基础优化操作项:优化SSH远程连接效率
- 禁止root远程连接
- 修改默认22端口,改为52113
- 监听内网服务器IP
\cp /etc/ssh/sshd_config{..ori}
#备份sed -i -e "17s/.*/Port 52113/g"/etc/ssh/sshd_config
#说明:修改ssh服务监听的默认22端口,使用自定义指定的监听端口进行连接sed -i -e "19s/.*/ListenAddress 172.16.1.41/g"/etc/ssh/sshd_config
#说明:修改ssh服务监听的默认ip地址,默认为0.0.0.0全部监听,可以自定义指定监听内网ip地址sed -i -e "38s/.*/PermitRootLogin no/g"/etc/ssh/sshd_config
#关闭ssh登录root用户权限,提升系统安全性sed -i -e "64s/.*/PermitEmptyPasswords no/g"/etc/ssh/sshd_config
#说明:禁止空密码用户ssh连接登录系统
#如果是CentOS6还要修改ssh配置,防止连接速度慢优化
既把UseDNS yes
改为UseDNS no
,把GSSAPIAuthentication yes
改为GSSAPIAuthentication no
经过检查发现CentOS7.6已经默认都改好了。
提别说明:以上均采用sed替换方式修改ssh服务配置文件,替换时指定的行号会根据不同版本的系统有变化,最好以工作中常用的系统为主,修改相应行号。
扩展优化操作项-修改yum.conf文件配置信息
保留yum安装的软件包
将/etc/yum.conf
中的keepcache=0
改为keepcache=1
,为日后一键安装网站集群留好rpm及依赖工具包。
1 | [root@backup ~]# vim /etc/yum.conf |
软件包保存目录:/var/cache/yum/
精简并保留必要的开机自启动服务
(如crond、sshd、network、rsyslog、sysstat、NetworkManager、irqbalance)。systemctl list-unit-files | grep enabled
<==查看开机自启服务
1 | systemctl list-unit-files |grep enable|egrep -v "sshd.service|crond.service|sysstat|rsyslog|^NetworkManager.service|irqbalance.service"|awk '{print "systemctl disable",$1}'|bash |
简单解析(以管道为一组):
- 管道1:列出所有服务
- 管道2:过滤出开机自启动的服务
- 管道3:egrep -v 取反,将
sshd.service|crond.service|sysstat|rsyslog|^NetworkManager.service|irqbalance.service
保留项排除 - 管道4:利用awk 不指定分隔符 默认空格,打印出systemctl disable 接$1 即 服务名
- 管道5:将组合出的数据流(命令)交给bash执行
结果:
1 | [root@s01 ~]# netstat -lntup |
锁定关键系统文件
如/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/etc/inittab
,处理以上内容后把chattr、lsattr改名为felix,转移走,这样就安全多了。
调整用户登录提示信息
/etc/motd、
清空/etc/issue、/etc/issue.net
,去除系统及内核版本登录前的屏幕显示。
清除多余的系统虚拟用户账号
禁止主机被ping(内核参数)
1 | echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf |