目录
Toggle部署全新环境
安装centos7用于测试
系统语言英文
选择常用的软件包(最小安装即可,软件包看情况选)
硬盘50/100G
添加额外网卡,选择手动配置ip,网关,dns等等
ip:
eth0:10.0.0.210
eth1:172.16.1.210
添加网卡/xshell优化
第一块网卡:nat模式,eth0 10.0.0.210,模拟公网
第二块网卡:eth1 172.16.1.210 ,局域网
eth1: lan区段网卡(添加1次即可,所有虚拟机都可以使用此区段)



进系统后配置
网卡配置文件
添加eth1网卡配置文件
NAME=eth1
DEVICE=eth1
IPADDR=172.16.1.210
PREFIX=24
ONBOOT=YES
BOOTPROTO=static
#不需要配置网关(局域网)
#没有联网需求,不用配置DNS
systemctl restart network重启网卡生效
eth0配置文件(需要安装系统时填写)
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=29196157-491b-4907-85f3-ed9e6ba006d5
DEVICE=eth0
ONBOOT=yes
IPADDR=10.0.0.210
PREFIX=24
GATEWAY=10.0.0.2
DNS1=223.5.5.5
DNS2=223.6.6.6
IPV6_PRIVACY=no
系统优化
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭selinux
vim /etc/selinux
vim /etc/selinux/config
enforcing改成disabled
配置yum源–适用centos7
#epel源
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
#base源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
或
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
下载完成后yum makecache生成缓存,
yum安装常用工具
yum install -y vim tree wget bash-completion lrzsz net-tools sysstat iotop iftop htop unzip nc nmap telnet bc psmisc httpd-tools bind-utils nethogs expect
#测试epel源
yum install -y cowsay sl
优化ssh连接速度
vim /etc/ssh/sshd_config
UseDNS no#关闭ip反向解析为域名
GSSAPIAuthentication yes#关闭GSS认证
systemctl restart sshd
时间同步
#修改时区(如果不对)
timedatectl status #查看时区 time zone部分
timedatectl set-timezone Asia/Shanghai #如果时区不对再修改.
#配置定时时间同步.
yum install -y ntpdate
vim /var/spool/cron/root
[root@localhost ~]# crontab -l
2/* * * * /sbin/ntpdate ntp1.aliyun.com &>/dev/null
每30秒同步一次时间
修改命令行颜色,显示绝对路径(oh-my-zsh)
export PS1='[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\]\[\e[31;1m\] \w\[\e[0m\]]\$ ‘
写入/etc/profile或者~/.bashrc
source /etc/profile
#写入rm别名到/etc/profile中
alias rm=’echo pls do not use rm’
#注释掉已有的别名
sed -i ‘/rm/s@^@#@g’ ~/.bashrc
#重新登录系统检查
追加到/etc/vimrc
#写脚本自动加作者信息
set ignorecase
autocmd BufNewFile *.py,*.cc,*.sh,*.java,*.bash exec “:call SetTitle( )”
func SetTitle( )
if expand(“%:e”) =~ ‘sh\|bash’
call setline(1, “#!/bin/bash” )
call setline(2, “##########################################”)
call setline(3, “# File Name:” .expand(“%”))
call setline(4, “# Version:V1.0”)
call setline(5, “# Author:zhangpeng”)
call setline(6, “# 0rganization:linuxjk.cn” )
call setline(7, “# Desc:”)
call setline(8, “###########################################”)
endif
endfunc
主机名与host文件
修改模板机主机名
hostnamectl set-hostname muban
hosts解析(方便使用主机名进行互相访问)
cat <</etc/hosts <<EOF
172.16.1.5 lb01
172.16.1.6 lb02
172.16.1.7 web01
172.16.1.8 web02
172.16.1.9 web03
172.16.1.10 web04
172.16.1.31 nfs01
172.16.1.41 backup
172.16.1.51 db01
172.16.1.61 m01
EOF
一键修改主机名和ip地址的脚本
针对centos7的脚本
针对麒麟v10系统的脚本
#!/bin/bash
#author: deepseek
#desc: change ip and hostname
#version: v2.0
# 检查是否为root用户
if [ $(id -u) -ne 0 ]; then
echo “必须使用root权限运行此脚本!”
exit 1
fi
# 定义网卡名称(需通过 `ip a` 确认实际名称)
eth0=”eth0″ # 替换为实际网卡名
eth1=”eth1″ # 替换为实际网卡名
# 1.检查参数个数
if [ $# -ne 2 ]; then
echo “Usage: $0 “
echo “Example: $0 myhost 10.0.0.100”
exit 1
fi
# 2.提取新IP地址(假设格式为 10.0.0.100)
new_ip_full=”$2″
ip_new=$(echo “$new_ip_full” | awk -F ‘.’ ‘{print $NF}’) # 提取最后一位
# 3.从当前IP提取最后一位(假设原IP为 10.0.0.X)
current_ip_full=$(hostname -I | awk ‘{print $1}’)
current_ip=$(echo “$current_ip_full” | awk -F ‘.’ ‘{print $NF}’)
# 4.新的主机名
hostname=”$1″
# 5.修改eth0的IP配置(静态IP模式)
if [ -f “/etc/sysconfig/network-scripts/ifcfg-$eth0” ]; then
sed -i “s/10.0.0.$current_ip/10.0.0.$ip_new/g” “/etc/sysconfig/network-scripts/ifcfg-$eth0”
echo “eth0 IP已修改为: 10.0.0.$ip_new”
else
echo “错误:/etc/sysconfig/network-scripts/ifcfg-$eth0 文件不存在”
exit 1
fi
# 6.修改eth1的IP配置(静态IP模式)
if [ -f “/etc/sysconfig/network-scripts/ifcfg-$eth1” ]; then
sed -i “s/172.16.1.$current_ip/172.16.1.$ip_new/g” “/etc/sysconfig/network-scripts/ifcfg-$eth1”
echo “eth1 IP已修改为: 172.16.1.$ip_new”
else
echo “错误:/etc/sysconfig/network-scripts/ifcfg-$eth1 文件不存在”
exit 1
fi
# 7.重启NetworkManager服务并重载连接
systemctl restart NetworkManager
nmcli connection reload
nmcli connection down “$eth0” && nmcli connection up “$eth0”
nmcli connection down “$eth1” && nmcli connection up “$eth1”
#7.可以用ifup和ifdown
eth0_name=eth0
eth1_name=eth1
eth0=/etc/sysconfig/network-scripts/ifcfg-$eth0_name
eth1=/etc/sysconfig/network-scripts/ifcfg-$eth1_name
ifdown $eth0_name && ifup $eth0_name
ifdwn $eth1_name && ifup $eth1_name
# 8.修改主机名
hostnamectl set-hostname “$hostname”
echo “主机名已修改为: $hostname”
# 9.验证结果(直接使用网卡名,而非文件路径)
echo -e “\n=== 修改结果 ===”
echo “当前主机名: $(hostname)”
echo “eth0 IP: $(ip -4 addr show $eth0 | grep -oP ‘(?<=inet\s)\d+(\.\d+){3}’ || echo ‘获取失败’)”
echo “eth1 IP: $(ip -4 addr show $eth1 | grep -oP ‘(?<=inet\s)\d+(\.\d+){3}’ || echo ‘获取失败’)”
主要改进点:
使用nmcli命令直接管理网络连接,更可靠
明确区分eth0和eth1的修改逻辑
正确处理IP地址的CIDR格式
更安全的IP段修改方式
这个修正版脚本可以更可靠地完成以下操作:
将eth0的IP从10.0.0.110改为10.0.0.112
将eth1的IP从192.168.1.110改为192.168.1.112
修改主机名为xx
避免出现多个IP地址的问题
虚拟机克隆操作
链接克隆相对完整克隆占用空间小,共用模板机,但是有依赖关系,克隆都不能转移系统,模板机不能删除
不要把一个模板机克隆出来的所有虚拟机都放在同一个文件夹里,有概率无法启动,为所有克隆单独建立文件夹
安装麒麟V10-SP3–对标centos8
语言英文
安装位置(先自定义分区)
/boot 1G
/swap 2G
/剩下的给根
软件选择最小安装
标准,调试,开发,系统工具
网络:
网卡ens33:
10.0.0.210/24 10.0.0.2 223.5.5.5,223.6.6.6
ens34: 172.16.1.210/24这个不开网关
DNS也不配置
主机名麒麟模板机
时区上海
麒麟策略:root密码必须8位包含大小写
加个管理员用户
麒麟系统不用配置yum源–默认链接国内源,未来有需要再配置,默认关闭selinux
综合架构
一般网站通用的结构,就是综合架构
综合架构也是个参考,每个公司都有有自己特别的结构或需求.
此阶段的要求
第一阶段要求:(基操,能讲出来,看懂报错提示)
运维基操,故障及故障提示,一些知识点的掌握
第二阶段要求:
掌握整个网站集群架构与结构,遇到故障提示尝试解决,解决之后总结
不断完善:用户访问网站流程
对于服务核心掌握:服务作用,排查流程,对于服务的配置做好记录即可,总结笔记
综合架构详解


网站背后:(中小型架构)
对于用户角度,只开放80/443端口–经过DNS解析获取目标网站ip地址–经过互联网–进入CDN(CDN解决不了)–进入防火墙–负载均衡–web服务器–反馈数据给用户
1.CDN–分布式缓存,用于缓存静态资源,图片,视频,js,html文件
作用:缓冲网站压力,加速用户访问
2.防火墙:物理机可以用硬件防火墙,云上企业用安全组
3.负载均衡:分配请求,先挑一个合适的服务器处理访问网站的请求
使得多台web服务器相对平均的承担所有的网站压力,防止某台服务器过于繁忙或者太空闲造成系统资源分配不均
关于负载均衡:
- 核心目的 ✔️
- 确实通过分配请求实现多服务器间的流量均衡
- 避免单点过载(防止雪崩效应)
- 提升整体资源利用率(消除资源闲置)
需要补充的要点:
- 智能分配策略 🔄
- 轮询(Round Robin):依次分发,适合同配置服务器
- 加权轮询(Weighted RR):根据服务器性能差异化分配
- 最少连接(Least Connections):优先给当前连接数最少的服务器
- 响应时间优先:选择响应最快的节点
- IP哈希(IP Hash):固定用户会话到特定服务器
- 健康监测机制 🩺
- 主动心跳检测(如每30秒检查服务器状态)
- 被动健康检查(监控响应成功率)
- 自动剔除故障节点,恢复后重新加入集群
- 会话保持(Session Persistence) 🔐
- 通过Cookie/Session绑定用户到特定服务器
- 避免分布式环境下的会话丢失问题
- 多维度负载考量 📊
- 不只是请求数均衡,还需考虑:
CPU利用率(不超过70%阈值)
内存使用率
网络I/O负载
磁盘读写压力
- 不只是请求数均衡,还需考虑:
- 架构优势扩展 🏗️
- 水平扩展能力:随时增减后端服务器
- 灰度发布支持:可定向分流部分流量
- DDoS防御:分散攻击流量
示例场景:
当用户访问https://example.com时:
- 负载均衡器(如Nginx)接收请求
- 根据预设算法(如最小响应时间)选择Web服务器A
- 监测到服务器B的CPU达到85%,自动减少其分配权重
- 将用户请求路由到最健康的服务器C
- 记录本次分配日志供后续分析优化
技术演进:
现代云负载均衡(如AWS ALB)还具备:
- 七层协议解析(HTTP/HTTPS)
- 基于内容的智能路由(URL路径分流)
- 自动弹性伸缩(Auto Scaling)联动
- 全链路HTTPS加密
服务器中的数据
数据库在众多服务中,承担的访问量较低,但是连接最慢
连接慢 ≠ 查询慢 🔍
连接建立慢:可能由DNS解析延迟、TCP握手耗时、SSL协商时间长、数据库连接池配置不当导致
认证延迟:数据库用户权限验证过程耗时(如LDAP集成认证)
网络链路问题:跨机房/跨云连接、路由跳数过多、MTU不匹配
访问量低但延迟高 📉
长连接未复用:每次请求都新建连接(而非复用连接池)
冷数据访问:低频访问导致数据库缓存(如InnoDB Buffer Pool)命中率低
锁竞争:即使QPS低,但存在表锁/行锁等待
解决方案:可以给数据库设计缓存(数据库缓存服务器),阻挡一部分进入数据库的请求,加快整体访问速度
1.数据库:网站核心,存放用户信息
2.存储:存放用户上传的内容
3.备份:服务器本地crond备份,再整合起来放到备份服务器中
4.缓存:缓存数据库内容,加快用户访问速度,相当于缓存里有的数据不用进入数据库进行查询操作
技术栈
开发角度:
- 存放代码:Gitlab,Github,Gogs,Gitee(码云)
- 集成,发布 Jenkins
- 代码检查 Sonarqube
- 私服,软件包仓库(Java) Nexus
用户角度:
- DNS解析 DNS云解析(阿里),Bind9,DNSmasq,CoreDNS…
- CDN缓存:各种厂商的CDN服务,CDN(阿里云),蓝汛(专做CDN)…,七牛CND
- 防火墙:硬件防火墙:深信服,奇安信,华为。软件:firewalld,iptables
- 公有云:安全组(免费),态势感知|云安全中心(收费)
- 负载均衡:硬件:F5(厂商)…软件:nginx,tengine(淘宝基于nginx二次开发的),openResty,,,前面两个都是基于nginx开发的,haproxy,lvs(功能强大,可以承担几十万的访问量)..公有云
- WEB网站服务器 基本:nginx/tengine,openResty
架构:LNMP(php),linux+nginx+Mysql+php;数据库可以单独放置一台服务器上
LNMT(java) linux+nginx+mysql+Tomcat
LNMP(python)linux+nginx+mysql+Python
LNMP(Golang)linux+nginx+mysql+Golang
等等很多很多
- 缓存服务器:Redis(重要),kafka,xxxMQ(RabbitMQ),RocketMQ
- 数据库服务器:分为开源/商业
- 商业:Oracle–按照cpu核心数收费(甲骨文)–国企/金融,MySQL;国产数据库:TiDb,openGauss(华为),OcenBase(阿里)
MySQL被收购,作者又写了一个Mariadb,去IOE运动(IBM服务器,Oracle数据库,EMC存储(现在被dell收购))—-导致国内企业用这种比较少,但是数据库不好换
- 存储:硬件存储,软件存储:NFS(开源),分布式存储,阿里云OSS对象存储,七牛云对象存储,腾讯云cos对象存储…
- 备份:定时任务,脚本,打包压缩,Rsync(在不同机器之间传输数据)
运维角度:
- Vpn :为了连接公司服务器:硬件,开源OpenVPN
- 堡垒机:开源:Teleprot,Jumpserver;商业:硬件,软件
- 批量管理:Ansible(核心),SaltStack,Puppet,Chef,Farbic
- VPN 硬件/开源软件openvpn
- 堡垒机 开源:teleprot,Jumpserver(功能更完善)。商业:硬件/软件
- 批量管理(自动化运维) ansible,Saltstrak,puppet,chef,farbic
- 监控:zabbix(历史悠久–20多年),grafa(图形展示),prometheus–监控容器
- 日志收集平台 Elasticstack(ELK,EBLK)。ElasticSearch,Filebeat,Logstash,kibana
把服务器系统日志+服务软件日志收集起来,生产环境不给开发任何权限
- 审计(一般给开发用) SQL审计(执行语句前先测试一下),Yearning,Archery(操作审计,行为审计)–堡垒机
- 安全(杀毒软件)商业:Appscan,OWASP,Nessus开源:ClamAV,,Linux版360,火绒
截止到目前阶段—掌握流程,在用户角度从后往前学习
工作种拿到服务器先检查有没有所有机器的备份数据,然后看备份能不能用