集群开始的准备

集群学习的准备

重新安装linux系统

网卡设置

1.安装全新Centos7.6系统(VM环境),修改网卡为eth0及eth1命名模式,并添加两块网卡。
2.第一块网卡eth0配置为NAT模式[模拟公网环境],网段为10.0.0.0网段。
3.第二块网卡eth1配置为LAN区段模式[模拟局域环境],网段为172.16.1.0网段。
注意:此网段为内网网段,因此,无须配置默认网关和DNS

安装系统磁盘分区

/boot 设置1024mb 标准分区 xfs
swap 设置2048mb 标准分区 swap
/ 自动分配剩余空间 标准分区 xfs

1、添加一个普通用户oldboy

#新增用户oldboy
useradd oldboy 
# 设置密码为123456
echo 123456|passwd --stdin oldboy

2、加到sudo管理,oldboy就相当于管理员

使用 visudo 编辑 sudoers 文件:
打开终端,并输入以下命令来安全地编辑 sudoers 文件:

visudo

找到正确的位置添加条目:
在 sudoers 文件中,找到类似以下格式的部分,这通常位于文件的末尾部分:

# User privilege specification
root    ALL=(ALL:ALL) ALL

在 root 用户的条目之后,添加 oldboy 用户的条目。
添加 oldboy 用户的 sudo 权限:
添加以下行,给予 oldboy 用户所有权限:

oldboy ALL=(ALL:ALL) ALL

这里的 ALL 表示 oldboy 可以作为所有用户和组在所有主机上执行所有命令

3.禁止root远程登录,改用oldboy用户登录

PermitEmptyPasswords no:

这个指令用于控制是否允许使用空密码的账户通过 SSH 连接到服务器。设置为 no 意味着不允许没有密码的账户进行 SSH 登录。这是一个重要的安全设置,因为它可以防止攻击者使用没有密码的账户进行未经授权的访问。

UseDNS no:

UseDNS 配置项决定了 SSH 在验证用户身份之前是否查询 DNS。设置为 no 可以禁止 SSH 在验证过程中进行 DNS 查找。这通常用于防止在用户认证之前对 DNS 服务器的查询,这可能被用于某些类型的攻击,如 DNS 欺骗攻击。在某些情况下,如果内部网络配置不当或 DNS 服务器响应缓慢,禁用 DNS 查找也可以提高认证速度。

GSSAPIAuthentication no:

GSSAPIAuthentication 控制是否允许使用 GSSAPI 进行 SSH 认证。设置为 no 意味着禁用了 GSSAPI 认证。GSSAPI 是一种用于在两个进程间提供安全认证的机制,它可以支持 Kerberos 认证。在大多数 Linux 服务器上,这个选项默认是禁用的,因为 Kerberos 并不是普遍使用的认证方式。

PermitRootLogin no:

禁止 root 用户通过 SSH 登录。这是一种常见的安全措施,因为直接以 root 用户登录可能会带来安全风险。

编辑sshd_config 将上面的都修改为no

vi /etc/ssh/sshd_config

使配置生效,重启 SSH 服务:

sudo systemctl restart sshd

4、基础优化操作项:更新yum源信息

第一个:就近使用yum源地址,安装软件更快。

curl -s -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

第二个:安装RHEL/CentOS官方源不提供的软件包

curl -s -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

打补丁并升级有已知漏洞的软件

yum update -y

5、安装常用软件

CentOS6和CentOS7都要安装的企业运维常用基础工具包

yum install tree nmap dos2unix lrzsz nc lsof wget tcpdump htop iftop iotop sysstat nethogs -y

CentOS7要安装的企业运维常用基础工具包

yum install psmisc net-tools bash-completion vim-enhanced ntpdate -y 

6、安全优化

关闭SELinux安全模块

关闭SELinux安全模块的两个方法

方法1
sed -i 's#SELINUX=.*#SELINUX=disabled#g' /etc/selinux/config

sed 是流编辑器,用于对文本进行处理。
-i 选项允许 sed 直接修改文件,而不是输出到标准输出。
s#SELINUX=.#SELINUX=disabled#g 是一个替换命令,它查找所有匹配 SELINUX=.(SELINUX= 后面跟着任意内容)的行,并将它们替换为 SELINUX=disabled。
/etc/selinux/config 是 SELinux 的配置文件。

方法2
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

这个命令与第一个命令类似,但它只替换匹配 SELINUX=enforcing 的行。如果配置文件中 SELINUX 已经是 enforcing,则使用这个命令更精确。

验证是否修改成功

grep SELINUX=disabled /etc/selinux/config

这个命令将从 /etc/selinux/config 文件中查找所有包含 SELINUX=disabled 的行,并显示它们,以验证 SELinux 已被正确禁用。

立即更改 SELinux 的运行状态

setenforce 0

这个命令用于立即更改 SELinux 的运行状态。
0 表示禁用 SELinux 的强制模式。
请注意,这个命令需要具有适当权限的用户来执行,通常是 root 用户。

确认 SELinux 的状态

getenforce

这个命令用于查看当前 SELinux 的运行状态。
它会返回 SELinux 当前的模式,可以是 Enforcing、Permissive 或 Disabled。

2.暂时关闭firewalld防火墙服务

#停止 firewalld 服务
systemctl stop firewalld
#禁用 firewalld 服务
systemctl disable firewalld
#验证是否停止并禁用
systemctl status firewalld|grep inactive

8、设置系统中文UTF8字符集

方法1

cp /etc/locale.conf /etc/locale.conf.ori

这个命令将现有的 /etc/locale.conf 文件复制到 /etc/locale.conf.ori。这样做可以备份原始的区域性配置文件,以防需要恢复到之前的设置。

echo 'LANG="zh_CN.UTF-8"' >/etc/locale.conf

echo 命令用于输出字符串。
‘LANG=“zh_CN.UTF-8”’ 是要设置的区域性环境变量,这里指定了使用中文(中国)和 UTF-8 字符集。
> 是重定向操作符,它将 echo 命令的输出重定向到 /etc/locale.conf 文件中,这将创建一个新文件或覆盖现有文件的内容。

source /etc/locale.conf

source 命令用于读取指定文件中的命令并在当前 shell 会话中执行它们。在这个例子中,它将执行 /etc/locale.conf 文件中的 LANG=“zh_CN.UTF-8” 设置,这意味着当前 shell 会话的区域性设置将立即更新为中文(中国)和 UTF-8 字符集,而不需要重新启动 shell。

方法2

localectl set-locale LANG="zh_CN.UTF-8"

localectl 是一个用于管理和查询系统和用户级别的区域性设置的命令行工具。
set-locale 是 localectl 的一个选项,用于设置系统的区域性。
LANG=“zh_CN.UTF-8” 指定了要设置的区域性,其中 zh_CN 表示中文(中国),UTF-8 表示使用 UTF-8 字符集。
执行这个命令后,系统将被配置为使用中文(中国)和 UTF-8 字符集作为默认的区域性设置。这将影响语言显示、日期和时间格式、数字格式等。

9、基础优化操作项:时间同步设置

设置每5分钟 更新同步时间

echo "*/5 * * * * /usr/sbin/ntpdate ntp3.aliyun.com >/dev/null 2>&1">>/var/spool/cron/root

echo 命令用于输出字符串。
“*/5 * * * * /usr/sbin/ntpdate ntp3.aliyun.com >/dev/null 2>&1” 是要输出的字符串,它实际上是一个 crontab 条目,含义如下:
*/5 * * * * 是 crontab 的时间表达式,表示每5分钟执行一次命令。
/usr/sbin/ntpdate ntp3.aliyun.com 是要执行的命令,这里使用的是 ntpdate 命令来与 ntp3.aliyun.com 时间服务器同步时间。
“>”/dev/null 将命令的标准输出重定向到 /dev/null,这是一个特殊的设备文件,它会丢弃写入其中的所有数据,相当于忽略标准输出。
2>&1 将命令的标准错误重定向到标准输出(在这里也是 /dev/null),这意味着错误信息也会被忽略。

“>>” 是一个重定向操作符,它将前一个命令的输出追加到指定的文件末尾,而不是覆盖文件内容。
/var/spool/cron/root 是 root 用户的 crontab 文件的路径。所有在 root 用户的 crontab 中定义的定时任务都会存储在这个文件中。

验证是否配置成功

crontab -l

列出当前用户的所有 crontab 条目。这里的 -l 选项代表“列表”(list),它会将当前用户 crontab 文件中的内容输出到终端。

10、基础优化操作项:提升命令行操作安全性(可选优化)

控制终端在300秒(即5分钟)后如果没有活动就会自动关闭

echo 'export TMOUT=300' >>/etc/profile

设置了 HISTSIZE 环境变量的值为 5,这个变量控制着用户终端会话中保存的命令历史记录的数量。

echo 'export HISTSIZE=5' >>/etc/profile

设置 HISTFILESIZE 环境变量的值为 5。这个变量决定了 shell 命令历史记录文件 ~/.bash_history(对于使用 Bash shell 的用户)可以保存的命令条目数量。

echo 'export HISTFILESIZE=5' >>/etc/profile

11、基础优化操作项

系统将允许每个用户打开最多65535个文件。这可以提高系统的性能,特别是在需要处理大量文件的应用场景中。

echo '*               -       nofile          65535' >>/etc/security/limits.conf 

优化内核

cat >>/etc/sysctl.conf<<EOF
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000    65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
#以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理。
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120

##NFS共享存储优化
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.wmem_max = 16777216
net.core.rmem_max = 16777216
EOF

命令 cat >>/etc/sysctl.conf<<EOF … EOF 是一个 shell 命令,用于向 /etc/sysctl.conf 文件追加一系列的内核参数设置。这些设置用于优化 Linux 系统的网络性能和行为。以下是对这些设置的简要解释:

net.ipv4.tcp_fin_timeout: 减少 TCP 连接释放时等待 FIN 包的时间。

net.ipv4.tcp_tw_reuse: 允许重用 TIME_WAIT 状态的连接。

net.ipv4.tcp_tw_recycle: 启用快速回收 TIME_WAIT 状态的连接(不推荐在新版内核中使用,因为 tcp_tw_reuse 更安全)。

net.ipv4.tcp_syncookies: 启用 SYN Cookies,用于防止 SYN Flood 攻击。

net.ipv4.tcp_keepalive_time: 设置 TCP 保活探测的时间间隔。

net.ipv4.ip_local_port_range: 设置本地端口的取值范围。

net.ipv4.tcp_max_syn_backlog: 设置 TCP 套接字的 SYN 接收队列的最大长度。

net.ipv4.tcp_max_tw_buckets: 设置系统中允许的 TIME_WAIT 套接字的最大数量。

net.ipv4.route.gc_timeout: 设置路由表清理的超时时间。

net.ipv4.tcp_syn_retries: 设置连接尝试次数。

net.ipv4.tcp_synack_retries: 设置 SYN-ACK 重试次数。

net.core.somaxconn: 设置监听队列中允许的套接字数量。

net.core.netdev_max_backlog: 设置网络设备驱动的套接字队列的最大长度。

net.ipv4.tcp_max_orphans: 设置不与任何连接关联的 TCP 或 UDP 套接字的最大数量。

net.nf_conntrack_max 和 net.netfilter.nf_conntrack_max: 设置连接跟踪系统可以跟踪的最大连接数。

net.netfilter.nf_conntrack_tcp_timeout_*: 设置连接跟踪系统中 TCP 连接不同状态的超时时间。

net.core.wmem_default, net.core.rmem_default, net.core.wmem_max, net.core.rmem_max: 设置网络套接字的默认和最大内存使用量。

立即生效

sysctl -p

命令 sysctl -p 用于将 /etc/sysctl.conf 文件中的内核参数设置加载到当前运行的内核中。这个命令在修改了 sysctl.conf 文件后非常有用,因为它允许您立即应用这些更改,而不需要重新启动系统。

13、扩展优化操作项-修改yum.conf文件配置信息

sed -i.bak 's#keepcache=0#keepcache=1#gp' /etc/yum.conf

-i.bak:告诉 sed 命令直接修改文件,并且在修改之前创建一个备份文件,备份文件的扩展名为 .bak。

‘s#keepcache=0#keepcache=1#gp’:这是 sed 的命令模式,用于执行替换操作。

s:表示替换(substitute)。
#:在 sed 中用作分隔符,您可以使用任何字符作为分隔符,但这里使用了 #。
keepcache=0:这是要被替换的文本模式。
keepcache=1:这是替换后的文本模式。
g:表示全局替换,即在每一行中替换所有匹配的模式,而不是只有第一次出现的匹配。
p:表示打印,即打印替换后的行。
/etc/yum.conf:指定了要修改的文件路径,这是 YUM(Yellowdog Updater Modified)的配置文件。

执行该命令后,/etc/yum.conf 文件中所有的 keepcache=0 都将被替换为 keepcache=1。keepcache 参数控制 YUM 是否在事务完成后保留下载的包。设置为 1 可以让 YUM 保留这些包,这可以加快后续的安装和更新过程,因为 YUM 可以直接使用已下载的包,而不是重新从网络下载。

14、锁定关键系统文件

chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab

用了 chattr(change file attributes)工具来修改文件的不可变属性(immutable attribute)。具体来说,+i 参数将这些系统文件标记为不可变。

以下是您指定的每个文件的作用:

/etc/passwd:存储有关用户账户的信息。
/etc/shadow:存储加密的用户密码。
/etc/group:存储用户组信息。
/etc/gshadow:存储加密的用户组密码。
/etc/inittab:定义了系统的运行级别和启动进程。
将这些文件标记为不可变意味着即使在系统崩溃的情况下,这些文件也不会被修改或删除。这提供了额外的安全性,以防止恶意软件或攻击者篡改这些关键的系统文件。

lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab

命令 lsattr 用于列出文件的属性。在 Linux 系统中,文件属性可以控制文件的某些行为,比如是否可以被修改、移动或删除等。

当您执行 lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab 命令时,系统会显示这些关键系统文件的当前属性。这些属性通常包括:

-:没有特殊属性。
a:append only(只添加)模式,文件只能追加数据,不能删除或修改现有内容。
b:不可移动(immutable),文件不能被删除、重命名或修改。
c:compressed,文件被压缩。
d:no dump(不转储),文件在备份操作中不会被复制。
i:immutable(不可变),文件既不能被删除,也不能被写入或修改。
j:data journalling(数据日志),文件的目录项被写入日志。
s:secure deletion(安全删除),文件被删除时,数据会被立即擦除。
t:no tail-merging(不允许尾部合并)或top-posting(顶部发布)。
u:undelete(可恢复删除),文件被删除后,数据仍然保留,直到被覆盖。

15、精简开机自启动服务

systemctl list-unit-files |grep enable|egrep -v "sshd.service|crond.service|sysstat|rsyslog|^NetworkManager.service|irqbalance.service"|awk '{print "systemctl disable",$1}'|bash
systemctl list-unit-files |grep enable

您提供的两条命令用于管理系统中的服务单元(unit),这些服务单元是系统启动时配置的一部分。下面是每条命令的解释:

  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
    

    这个命令执行了以下操作:

    • systemctl list-unit-files:列出所有已安装的服务单元文件及其当前的启用状态。
    • grep enable:过滤出所有被启用(enabled)的服务单元。
    • egrep -v "sshd.service|crond.service|sysstat|rsyslog|^NetworkManager.service|irqbalance.service":使用 egrep-v 选项排除掉列表中的 sshd.servicecrond.servicesysstatrsyslogNetworkManager.serviceirqbalance.service 这些服务,即不在这些服务上执行禁用操作。
    • awk '{print "systemctl disable", $1}':对于每个剩余的启用的服务单元,使用 awk 生成 systemctl disable 命令,并将服务单元名称作为参数。
    • | bash:将 awk 命令的输出作为 bash shell 的输入,实际执行禁用操作。

    警告:此命令会禁用除了指定服务之外的所有已启用服务,这可能会对系统稳定性和安全性产生重大影响。在执行此操作前,请确保您完全理解其后果。

  2. 第二条命令:

    systemctl list-unit-files | grep enable
    

    这个命令相对简单,它列出所有当前被设置为启用的系统服务单元。它没有执行任何更改,只是显示当前的配置状态。

列出所有已启用的服务单元

systemctl list-unit-files |grep enable

停止 postfix 服务的命令。postfix 是 Linux 系统中常用的邮件传输代理(MTA),负责处理邮件的发送和接收

systemctl stop postfix

查看网络连接端口情况

netstat -lntup

命令 netstat -lntup 是一个用于显示网络连接、路由表、接口统计等网络信息的工具。下面是这个命令中每个参数的作用:

-l(listening): 显示监听中的服务器的套接字。
-n(numeric): 显示数字形式的地址和端口号,不进行域名解析。
-t(tcp): 仅显示 TCP 相关的选项。
-u(udp): 仅显示 UDP 相关的选项。
-p(program): 显示监听端口的进程信息,包括进程的程序名和进程号。
-4 或 -6(未在您的命令中指定): 可以选择只显示 IPv4 或 IPv6 的信息。

16、扩展优化操作项

优化系统提示符

echo  "PS1='\[\e[32;1m\][\u@\h \W]\\$ \[\e[0m\]'" >>/etc/profile
source /etc/profile

定义ls命令的长格式显示,是输出信息格列完全对齐显示

echo "alias ll='ls -l --color=auto --time-style=long-iso'" >>/etc/profile
source /etc/profile

自动快速配置改主机名和IP地址(前提第一台主机的最后ip为128 如10.0.0.128)

定义一个net.sh文件 使用方法 net node01 129

#!/bin/sh
if [ $# -ne 2 ];then
  echo "/bin/sh $0 hostname PartIP"
  exit 1
fi
hostnamectl set-hostname $1 #第一个参数 设置主机名
sed -i "/IPADDR/s#128#$2#g" /etc/sysconfig/network-scripts/ifcfg-eth0 #<==模板机IP最后8位默认是200。
sed -i "/IPADDR/s#128#$2#g" /etc/sysconfig/network-scripts/ifcfg-eth1
systemctl restart network
#check
hostname
ifconfig eth0
ifconfig eth1
exit

在运行脚本之前,您可能需要给予执行权限:

chmod +x net.sh

然后,您可以使用以下命令执行脚本:

sudo ./net.sh your_hostname your_ip_suffix

替换 your_hostname 和 your_ip_suffix 为实际的主机名和您想要设置的 IP 地址后缀。

17、基础优化:

1、规范目录
路径规划:
/server/scripts 服务器本地存放脚本程序的目录
/server/tools 服务器本地存放软件安装包的目录
/application/ 软件名 服务器本地软件安装的根目录,软件名不带版本号,例如:
/application/nginx,/application/mysql
/application/nginx/html Web服务器站点目录(bbs,blog,www,edu)
/application/nginx/logs Web服务器日志{bbs|blog|www}_access.log
/backup 服务器本地数据备份目录,也是备份服务器Rsync的备份目录
/data NFS共享存储共享文件目录

2.规划集群服务器配置
服务器说明 eth0外网IP(NAT) eth1内网IP(NAT) 主机名称规划
A1-负载服务器01 10.0.0.5/24 172.16.1.5/16 lb01
A2-负载服务器02 10.0.0.6/24 172.16.1.6/16 lb02
B1-web服务器1 10.0.0.7/24 172.16.1.7/16 web01
B2-web服务器2 10.0.0.8/24 172.16.1.8/16 web02
SB1-web服务器1 10.0.0.9/24 172.16.1.9/16 sweb01
SB2-web服务器2 10.0.0.10/24 172.16.1.10/16 sweb02
C1-NFS存储服务器 10.0.0.31/24 172.16.1.31/16 nfs01
C2-rsync备份服务器 10.0.0.41/24 172.16.1.41/16 backup
C3-mysql数据库服务器 10.0.0.51/24 172.16.1.51/16 db01
X-管理服务器 10.0.0.61/24 172.16.1.61/16 m01

3、配置所有主机域名解析

cat >/etc/hosts<<EOF
127.0.0.1    localhost localhost.localdomain localhost4 localhost4.localdomain4
::1          localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5 lb01
172.16.1.6 lb02
172.16.1.7 web01
172.16.1.8 web02
172.16.1.9 sweb01
172.16.1.10 sweb02
172.16.1.31 nfs01
172.16.1.41 backup
172.16.1.51 db01 db01.etiantian.org
172.16.1.61 m01
EOF
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值