02-综合架构环境准备
中小型公司服务器架构设计,服务器数量
首先,我需要考虑他们的业务类型,是电商、社交还是其他?不同的业务对架构的要求不同,比如电商可能需要高并发处理,而社交可能更注重实时通信。
然后,用户规模是关键。初期用户量不大,可能只需要基本的架构,但随着用户增长,扩展性就变得重要了。中小公司可能预算有限,得在成本和性能之间找平衡。
接下来,高可用性和容灾能力。不能单点故障,得考虑冗余,比如负载均衡、主从数据库。不过冗余会增加服务器数量,成本也会上升,得合理分配。
技术栈方面,他们用云服务还是自建机房?现在很多中小公司用云,因为灵活,按需付费。如果是云的话,可能用ECS、RDS这些服务,服务器数量可以动态调整。
具体架构设计的话,前端可能需要Web服务器,用Nginx或Apache,做负载均衡。应用服务器用Tomcat或者Node.js,考虑横向扩展,根据访问量增加实例。数据库主从复制,读写分离,缓存用Redis或Memcached。静态资源放CDN或者对象存储,减少服务器压力。
服务器数量分配方面,初期可能每个部分至少两台,避免单点故障。比如Web服务器2台,应用服务器2-4台,数据库主从各1,缓存2台。随着用户增长,逐步增加,特别是应用服务器和数据库从库。
成本优化方面,用云服务弹性伸缩,预留实例节省成本。监控和自动化运维工具也很重要,比如Prometheus和Ansible,提高效率同时减少人力。
安全方面,防火墙、WAF、定期备份和漏洞扫描不能少。中小公司可能容易忽视安全,但一旦出问题影响很大,所以这部分得强调。
案例部分,可以举个电商的例子,初期架构和扩展后的配置,让用户更直观。最后总结关键点,强调灵活扩展、成本控制和高可用。
中小型互联网公司在规划服务器架构和分配服务器数量时,需要结合业务需求、成本预算、可扩展性和运维复杂度等多方面因素。以下是具体的规划建议:
一、架构规划核心原则
业务驱动架构
- 明确业务类型(如Web应用、移动端、API服务、数据库、实时通信等)。
- 根据业务峰值(如QPS、TPS、并发用户量)估算资源需求。
- 优先满足核心业务的高可用性(如电商的交易系统、社交的即时通信)。
分层架构设计
- 前端层:负载均衡(Nginx/HAProxy)、CDN加速、Web服务器(静态资源)。
- 应用层:业务逻辑服务器(微服务或单体应用)、API网关。
- 数据层:主从数据库、缓存(Redis/Memcached)、消息队列(Kafka/RabbitMQ)。
- 存储层:对象存储(OSS/S3)、文件存储(NAS)、日志存储(Elasticsearch)。
高可用与容灾
- 避免单点故障(如数据库主从、多可用区部署)。
- 设置自动故障转移(如Keepalived、云服务的SLB)。
- 定期备份(全量+增量备份)与灾难恢复演练。
弹性扩展能力
- 横向扩展(无状态应用)优先于纵向扩展(升级硬件)。
- 结合云服务的自动伸缩(Auto Scaling)应对流量波动。
二、服务器数量分配建议
1. 初期阶段(用户量 < 10万)
- Web层:2台(Nginx负载均衡 + 静态资源,部署于不同可用区)。
- 应用层:2~4台(根据业务模块拆分或横向扩展,如订单服务、用户服务)。
- 数据库:1主1从(MySQL/PostgreSQL),主库处理写请求,从库处理读请求。
- 缓存:2台Redis(主从哨兵模式,避免单点故障)。
- 其他:1台日志服务器(ELK)、1台监控服务器(Prometheus + Grafana)。
总服务器数:约8~10台(若使用云服务可减少物理机数量,通过容器化优化)。
2. 发展阶段(用户量 10万~100万)
- Web层:4台(多可用区部署,结合CDN减少源站压力)。
- 应用层:8~12台(按业务拆分微服务,如支付、推荐、搜索独立部署)。
- 数据库:1主 + 2从 + 1备份(分库分表或读写分离)。
- 缓存:Redis集群(3主3从,支持高并发访问)。
- 消息队列:3台Kafka节点(保障消息可靠性)。
- 监控与日志:独立集群(如ES集群3节点 + Prometheus高可用)。
总服务器数:约20~30台(或云服务器实例)。
三、成本优化策略
混合部署
- 核心业务(如数据库)使用高性能云服务器(如独享型ECS)。
- 非核心业务(如日志处理)使用抢占式实例或低配机型。
容器化与资源复用
- 使用Kubernetes/Docker部署无状态服务,提高资源利用率。
- 合并低负载服务(如将监控、日志部署在同一台机器)。
按需扩展
- 云服务动态扩缩容(如夜间低峰期缩减实例数量)。
- 预留实例(Reserved Instances)降低长期成本。
四、运维建议
自动化运维
- 基础设施即代码(IaC):Terraform/Ansible部署环境。
- CI/CD流水线:自动构建、测试、发布(Jenkins/GitLab CI)。
监控与告警
- 核心指标监控:CPU/内存/磁盘、网络延迟、服务响应时间。
- 业务指标监控:API成功率、订单处理延迟、缓存命中率。
安全防护
- 网络层:防火墙规则、DDoS防护(如云厂商的Anti-DDoS)。
- 应用层:WAF(Web应用防火墙)、定期漏洞扫描。
- 数据层:数据库加密、访问权限最小化。
五、典型架构案例
案例:电商平台(初期)
- Web层:2台Nginx(负载均衡 + SSL证书)。
- 应用层:4台Tomcat(商品、订单、用户、购物车服务)。
- 数据库:1主1从MySQL + 2台Redis(缓存商品信息)。
- 存储:1台MinIO(图片存储) + 1台ELK(日志分析)。
- 监控:1台Prometheus + 1台Grafana。
总服务器数:11台(或云实例)。
总结
中小型公司应优先选择云服务(如AWS、阿里云、腾讯云)降低初期成本,采用微服务+容器化架构提升灵活性,根据业务增长逐步扩展。关键是通过监控和自动化运维降低人力成本,同时保障核心服务的高可用性。
架构图中的服务组件
1.用户、顾客(浏览器)
访问网站的用户请求
2.防火墙、保安(iptables)
设定防火墙策略、防火墙规则,请求的进入、响应的出口,针对ip、port的流量控制
3.负载均衡服务器、迎宾服务员(nginx)
对用户的请求进行调度、纷发
4.web服务器,点餐前台服务员(nginx)
接收用户请求、处理、响应用户请求,返回服务器资料
5.数据库服务器、厨房后厨仓库(mysql)
存储网站的动态数据、提供读写数据功能
6.存储服务器、粮仓仓库(nfs)
存储图片、音频、视频、各种附件等容量较大的静态资源
7.备份服务器、粮仓仓库二号(rsync+crond定时备份、rsync+inotify实时备份)
二次备份所有数据,存储图片、音频、视频、各种附件等容量较大的静态资源
8.缓存服务器、自助取餐(redis)
数据存储在内存里,提供内存的高速数据读写
以及减轻mysql服务器的读写压力
9.ansible服务器、调度总台(ansible)
批量化管理所有的服务器
网站架构服务器规划
网站架构的服务器规划是一个综合性的过程,需要根据网站的规模、业务需求、流量特点等因素来确定服务器的类型、数量、配置以及部署方式等。以下是详细的规划步骤和要点:
需求分析
- 业务规模和类型:明确网站的业务类型,如电商、社交、资讯等,以及业务的规模,例如预计的用户数量、日访问量、并发请求数等。不同类型和规模的网站对服务器的性能和功能要求差异较大。例如,电商网站在促销活动期间会有大量的并发交易,对服务器的处理能力和稳定性要求较高。
- 数据量和存储需求:评估网站需要存储的数据量,包括用户信息、文章内容、图片、视频等。根据数据量的大小和增长趋势,确定所需的存储容量和存储类型,如关系型数据库、非关系型数据库、对象存储等。
- 性能和响应时间要求:了解用户对网站性能和响应时间的期望,例如页面加载时间、搜索响应时间等。这将影响服务器的硬件配置和架构设计,以确保能够提供快速、流畅的用户体验。
服务器类型选择
- Web 服务器:负责处理客户端的 HTTP 请求,返回网页内容。常见的 Web 服务器软件有 Apache、Nginx 等。Web 服务器通常需要具备高并发处理能力和良好的性能优化特性。
- 应用服务器:运行网站的业务逻辑代码,处理动态请求。例如,对于使用 Java 开发的网站,可能会选择 Tomcat、Jetty 等应用服务器;对于 Python 开发的网站,可能会使用 uWSGI、Gunicorn 等。
- 数据库服务器:存储和管理网站的数据,根据数据的类型和特点选择合适的数据库管理系统(DBMS)。关系型数据库如 MySQL、Oracle 适用于存储结构化数据;非关系型数据库如 MongoDB、Redis 适用于存储非结构化数据或对读写性能要求较高的场景。
- 缓存服务器:用于缓存经常访问的数据,减少对后端数据库的访问压力,提高网站的响应速度。常见的缓存服务器有 Redis、Memcached 等。
- 文件服务器:存储网站的静态文件,如图片、CSS、JavaScript 等。可以使用专门的文件服务器软件,也可以采用对象存储服务,如阿里云 OSS、腾讯云 COS 等。
服务器数量和配置规划
- 负载估算:根据需求分析阶段得到的流量数据和性能要求,估算服务器的负载情况。例如,通过分析历史数据或进行压力测试,确定每个服务器能够处理的并发请求数、每秒事务数等指标。
- 服务器数量确定:根据负载估算结果,确定所需的服务器数量。对于高并发、大规模的网站,可能需要使用多台服务器组成集群来分担负载。例如,采用负载均衡器将用户请求均匀分配到多个 Web 服务器上。
- 硬件配置选择:根据服务器的角色和负载情况,选择合适的硬件配置,包括 CPU、内存、硬盘、网络带宽等。例如,对于数据库服务器,通常需要配备较大的内存和高速硬盘,以提高数据读写性能。
服务器部署方式
- 物理服务器:购买或租赁实体服务器,部署在企业内部机房或数据中心。物理服务器具有较高的性能和安全性,但需要投入较高的硬件成本和维护成本。
- 虚拟服务器:使用虚拟化技术,在一台物理服务器上创建多个虚拟服务器实例。虚拟服务器具有成本低、灵活性高的优点,可以根据业务需求动态调整资源分配。常见的虚拟化技术有 VMware、KVM 等。
- 云服务器:通过云计算平台租赁服务器资源,如阿里云 ECS、腾讯云 CVM 等。云服务器具有弹性伸缩、按需付费的特点,适合快速发展的网站和对资源需求波动较大的场景。
网络架构设计
- 负载均衡:使用负载均衡器将用户请求均匀分配到多个服务器上,提高网站的并发处理能力和可用性。常见的负载均衡器有硬件负载均衡器(如 F5 Big - IP)和软件负载均衡器(如 Nginx、HAProxy)。
- 防火墙:在网络边界部署防火墙,防止外部网络的非法访问和攻击,保护服务器和数据的安全。
- 网络拓扑:设计合理的网络拓扑结构,确保服务器之间的通信顺畅,同时考虑网络的可靠性和可扩展性。例如,采用冗余网络链路和交换机,避免单点故障。
容灾和备份策略
- 数据备份:定期对网站的数据进行备份,包括数据库备份、文件备份等。备份数据可以存储在本地磁盘、磁带库或异地数据中心,以防止数据丢失。
- 容灾方案:制定容灾方案,确保在发生自然灾害、网络故障等突发事件时,网站能够快速恢复服务。常见的容灾方案有同城容灾、异地容灾等。
监控和管理系统
- 服务器监控:使用监控工具对服务器的性能指标(如 CPU 使用率、内存使用率、磁盘 I/O 等)和应用程序的运行状态(如响应时间、吞吐量等)进行实时监控,及时发现和解决问题。
- 日志管理:收集和分析服务器和应用程序的日志信息,以便排查故障、优化性能和进行安全审计。
- 自动化管理:采用自动化工具和脚本,实现服务器的自动化部署、配置管理和故障处理,提高运维效率和准确性。hy
机器数量
整套架构,理论上需要9台虚拟机
但是你不用担心机器扛不住,这个只有在最后的整体架构演练时,需要全部开启
前期学哪一块就开启哪一块的机器即可
建议、提前按照如下表格,创建9台服务器(vmware虚拟机)。
1.前提你跟着超哥学习的那个虚拟机就放着一旁吧,因为你已经改的面目全非了,请重新安装;
2.机器初始化后,记得做好快照
服务器作用 主机名 外网地址 内网地址 运行软件
管理机 master-61 10.0.0.61 172.16.1.61 Ansible/zabbix/jumpserver/openvpn
负载均衡服务器 slb-5 10.0.0.5 172.16.1.5 nginx/keepalived
负载均衡服务器 slb-6 10.0.0.6 172.16.1.6 nginx/keepalived
web服务器 web-7 10.0.0.7 172.16.1.7 nginx/php
web服务器 web-8 10.0.0.8 172.16.1.8 nginx/tomcat
web服务器 web-9 10.0.0.9 172.16.1.9 nginx/php
存储服务器 nfs-31 10.0.0.31 172.16.1.31 nfs/rsyncd/lsyncd
备份服务器 rsync-41 10.0.0.41 172.16.1.41 nfs/rsyncd/lsyncd
数据库服务器 db-51 10.0.0.51 172.16.1.51 mysql/redis
注意去理解架构图,生产环境下、只有最外层的负载均衡设备,才能对接到公网流量,因此需要配置公网ip地址;
其他功能的服务器,只需要单网卡,内网IP即可;
外网地址
- 模拟互联网的公网ip
- 你可以直接使用windows,ping通该地址,(xshell)ssh连接该地址(服务器)
内网地址
- 模拟服务器的内网,局域网环境
- 无法直接通过xshell连接该服务器
配置规划
系统 centos7
内存 至少2G/1c
网卡
eth0,使用NAT、模拟外网环境 ,网段是10.0.0.xx,网关10.0.0.254
eth1,使用LAN区段,模拟内网环境,网段是172.16.1.xx,网关172.16.1.254
硬盘容量,40G
综合架构实践
超哥踩坑提醒
1.关闭你之前旧的所有虚拟机,甚至删除也行,别开机,因为你之前修改过网络设置
2.你这里要修改新的网络设置,需要修改vmware的虚拟网络编辑器(实测要关闭dhcp功能,反正我们都是用静态ip)
VMware虚拟网络编辑器是VMware虚拟机软件(如VMware Workstation、VMware Fusion等)中一个重要的工具,用于管理和配置虚拟机的网络连接。以下从其作用、界面布局、网络模式及配置等方面进行详细介绍:
作用
- 网络配置管理:允许用户定义和配置虚拟机的网络连接方式,通过创建不同的虚拟网络并为虚拟机分配合适的网络,用户可以灵活地模拟各种网络环境,以满足不同的测试、开发和学习需求。
- 网络隔离与安全:可以设置不同虚拟网络之间的隔离,从而提高虚拟机的安全性。例如,将用于测试的虚拟机放置在一个独立的虚拟网络中,避免其对其他网络环境造成影响。
- 资源分配与优化:帮助用户合理分配网络资源,确保虚拟机能够获得足够的网络带宽,以保证其正常运行。
界面布局
打开VMware虚拟网络编辑器后,界面通常包含以下几个主要部分:
- 虚拟网络列表:显示当前系统中定义的所有虚拟网络,常见的有VMnet0(桥接模式)、VMnet1(仅主机模式)和VMnet8(NAT模式)等。
- 网络配置区域:针对每个虚拟网络,提供了详细的配置选项,如子网IP地址、子网掩码、DHCP服务设置、NAT设置等。
- 操作按钮:包括“添加网络”“移除网络”“恢复默认设置”等按钮,方便用户对虚拟网络进行管理和操作。
常见网络模式及配置
桥接模式(Bridged)
- 原理:虚拟机直接连接到物理网络,就像一台独立的物理计算机一样,通过物理网卡与外部网络进行通信。虚拟机和宿主机处于同一局域网中,会从局域网的DHCP服务器获取IP地址。
- 配置步骤
- 在虚拟网络编辑器中,选择VMnet0(桥接模式),确保“桥接到”选项选择了正确的物理网卡。
- 在虚拟机的网络设置中,将网络连接方式设置为“桥接模式”。
- 启动虚拟机后,若网络中有DHCP服务器,虚拟机会自动获取IP地址;若没有,则需要手动配置IP地址、子网掩码、网关和DNS服务器等信息。
仅主机模式(Host - Only)
- 原理:虚拟机只能与宿主机进行通信,或者通过宿主机与外部网络间接通信。这种模式下,VMware会创建一个虚拟的以太网适配器(VMware Network Adapter VMnet1),虚拟机和宿主机通过这个虚拟适配器进行数据交换。
- 配置步骤
- 在虚拟网络编辑器中,选择VMnet1(仅主机模式),可以设置子网IP地址和子网掩码。同时,可以选择是否启用DHCP服务,若启用,虚拟机可以自动获取IP地址。
- 在虚拟机的网络设置中,将网络连接方式设置为“仅主机模式”。
- 宿主机需要确保VMware Network Adapter VMnet1适配器已启用,并且IP地址与VMnet1的子网设置相匹配。
NAT模式(Network Address Translation)
- 原理:虚拟机通过宿主机的网络连接到外部网络,VMware会创建一个虚拟的NAT设备(VMnet8)和一个虚拟的DHCP服务器。虚拟机使用NAT设备将内部IP地址转换为宿主机的IP地址,从而实现与外部网络的通信。
- 配置步骤
- 在虚拟网络编辑器中,选择VMnet8(NAT模式),可以设置子网IP地址、子网掩码和NAT设置。同时,确保DHCP服务已启用,以便虚拟机能够自动获取IP地址。
- 在虚拟机的网络设置中,将网络连接方式设置为“NAT模式”。
- 虚拟机启动后,会从VMnet8的DHCP服务器获取IP地址,并通过NAT设备与外部网络进行通信。
注意事项
- 权限问题:在某些操作系统中,打开和修改VMware虚拟网络编辑器可能需要管理员权限。
- 网络冲突:如果在配置虚拟网络时设置的子网IP地址与物理网络或其他虚拟网络冲突,可能会导致网络连接异常。因此,在配置时需要确保IP地址的唯一性。
- 服务依赖:部分网络模式(如NAT模式和仅主机模式)依赖于VMware的相关服务(如VMware DHCP Service、VMware NAT Service等),需要确保这些服务已正常启动。
1.创建新虚拟机(模板机)
系统 centos7
内存 至少2G/1c(特殊情况,给1c/1g也够了)
网卡
eth0,使用NAT、模拟外网环境 ,网段是10.0.0.xx
eth1,使用LAN区段,模拟内网环境,网段是172.16.1.xx
硬盘容量,40G
2.安装centos7/ubuntu
1.进入内核选择界面时,按上下方向键,取消自动选择
2.输入tab键,复制粘贴进去如下代码
net.ifnames=0 biosdevname=0
3.输入回车,启动
4.请注意,必须是英文,以后再也别用中文了,因为你要看日志
5.只需要修改亚洲上海时区,其他全部默认
6.网络设置、修改静态ip地址、设置主机名
模板机,主机名 yuchao-template-100
ip,10.0.0.100
网关,10.0.0.254
3.登录该机器
ssh root@10.0.0.100
4.再添加另一块网卡(充当内网环境的网卡)
注意,你的LAN网段,添加的是172.16.1.0
提示,常见的LAN和WAN是什么?
WAN接口,也就是广域网(WAN,Wide Area Network)的缩写,也称之为远程网(long haul network )。
而LAN接口,也就是局域网(Local Area Network,LAN)的缩写,它是指在某一区域内由多台计算机互联成的计算机组。
3.图解双网卡的配置
服务器使用双网卡可以带来多方面的优势,不过也存在一些需要关注的点,以下为你详细介绍:
双网卡的应用场景及优势
提升网络可靠性
- 链路冗余:服务器配备双网卡可以分别连接到不同的网络链路或交换机。当其中一条链路出现故障,如网线损坏、交换机故障时,服务器能迅速切换到另一条正常的链路,保障网络连接不中断,维持业务的持续运行。例如,在金融交易系统中,网络中断可能导致交易数据丢失或交易失败,双网卡链路冗余可有效避免此类情况。
- 避免单点故障:通过连接不同的网络设备,减少了因单个网络设备故障而影响服务器网络通信的风险。若服务器仅依赖一个网卡和一台交换机,交换机故障会使服务器网络瘫痪,而双网卡连接不同交换机可防止这种单点故障。
实现网络隔离
- 业务隔离:可以将不同的业务流量分配到不同的网卡上,实现业务之间的网络隔离。比如,企业服务器可将内部办公网络流量通过一个网卡传输,而将对外服务的网络流量通过另一个网卡传输。这样,即使外部网络遭受攻击,也不会轻易影响到内部办公网络的安全。
- 安全区域划分:在一些对安全性要求较高的环境中,可利用双网卡划分安全区域。如服务器一个网卡连接到安全级别较低的公共网络,另一个网卡连接到安全级别较高的内部专用网络,从而防止公共网络的安全威胁扩散到内部网络。
增加网络带宽
- 链路聚合:部分服务器支持链路聚合技术,通过将两个网卡的带宽进行聚合,增加服务器的网络总带宽。例如,两个1Gbps的网卡进行链路聚合后,理论上服务器可获得2Gbps的网络带宽,能满足对网络带宽要求较高的应用,如大数据传输、高清视频流服务等。
不同网络角色应用
- 同时连接不同网络:服务器可使用双网卡分别连接不同类型的网络,如一个网卡连接局域网,另一个网卡连接广域网。这样服务器既能与局域网内的其他设备进行通信,又能访问广域网资源,方便进行数据交互和远程管理。
双网卡的配置要点
硬件连接
- 物理线路:确保两块网卡正确插入服务器的网卡插槽,并使用质量良好的网线将网卡连接到对应的网络设备,如交换机或路由器。同时,要注意网线的接口类型和长度,避免因线路问题导致网络故障。
- 设备兼容性:选择的网卡要与服务器的主板和操作系统兼容,并且支持所需的网络功能,如链路聚合、VLAN 等。
软件配置
- IP 地址设置:根据服务器的网络需求,为每个网卡分配合适的 IP 地址。可以是静态 IP 地址,也可以通过 DHCP 动态获取。在设置 IP 地址时,要确保与所在网络的子网掩码、网关和 DNS 服务器等参数相匹配。
- 路由配置:合理配置服务器的路由表,确保不同网卡之间的网络流量能够正确转发。例如,当服务器需要访问不同网络时,要设置相应的路由规则,使数据包能够通过正确的网卡进行传输。
- 服务绑定:有些服务器应用可能需要指定使用特定的网卡进行通信。在这种情况下,需要对应用程序进行相应的配置,将其绑定到指定的网卡上。
双网卡使用的潜在问题及解决方法
网络冲突
- IP 地址冲突:如果两个网卡的 IP 地址设置不当,可能会导致 IP 地址冲突,影响网络通信。在配置 IP 地址时,要仔细检查网络中的 IP 地址分配情况,避免重复使用相同的 IP 地址。
- MAC 地址冲突:虽然网卡的 MAC 地址是全球唯一的,但在某些情况下,如使用虚拟机或克隆服务器时,可能会出现 MAC 地址冲突。可以通过修改网卡的 MAC 地址来解决冲突。
性能问题
- 资源竞争:双网卡同时工作可能会导致服务器的 CPU、内存等资源竞争,影响服务器的整体性能。可以通过优化服务器的硬件配置、调整网卡的中断亲和性等方式来减少资源竞争。
- 带宽不均衡:在链路聚合或同时使用双网卡传输数据时,可能会出现带宽不均衡的情况。可以通过调整网卡的负载均衡策略来优化带宽分配,确保两个网卡的带宽得到充分利用。
4.简化网卡配置文件
友情提醒,sed是一个双刃剑
用好了、高效修改配置文件
用坏了,可能不小心会清空你的配置文件
所以自己看着来,细心是第一位,做好备份是第一位
1.删除网卡配置文件中关于ipv4、ipv6的行
[root@yuchao-template-100 ~]# sed -i '/ipv[46]/Id' /etc/sysconfig/network-scripts/ifcfg-eth0
2.再删除如下四行
proxy_method
browser_only
defroute
uuid
sed -r -i '/(proxy_method|browser_only|uuid|defroute)/Id' /etc/sysconfig/network-scripts/ifcfg-eth0
3.上述俩语句,你也可以一行搞定
确保最终的配置如下,和我一样即可
[root@yuchao-template-100 network-scripts]# sed -ri '/(proxy_method|browser_only|uuid|defroute)/Id' /etc/sysconfig/network-scripts/ifcfg-eth0
[root@yuchao-template-100 network-scripts]#
[root@yuchao-template-100 network-scripts]# cat ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.0.0.100
PREFIX=24
GATEWAY=10.0.0.254
DNS1=223.5.5.5
4.如果你不这么做,你后续克隆虚拟机,会导致无法上网,必须要删除网卡配置文件的uuid
而且如果你对sed理解不够,你可以直接复制于超老师的这个网卡信息(你能对自己这么低的要求吗?不能!)
还得编辑eth1内网网卡配置文件
务必看清楚了网卡配置文件
务必看清楚了网卡配置文件
务必看清楚了网卡配置文件
[root@yuchao-template-100 network-scripts]# sed -r -e 's#eth0#eth1#g' -e 's#10.0.0.100#172.16.1.100#g' -e 's#10.0.0.254#172.16.1.254#g' ifcfg-eth0 >ifcfg-eth1
[root@yuchao-template-100 network-scripts]# cat ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=none
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=172.16.1.100
PREFIX=24
如果sed用的不熟,实在不行,vim去手动改也一样
最后重启网络服务,确保ip正常
[root@yuchao-template-100 network-scripts]# systemctl restart network
[root@yuchao-template-100 network-scripts]# ip addr show |grep -E 'eth0|eth1'
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 172.16.1.100/24 brd 172.16.1.255 scope global noprefixroute eth1
最后用你的windows、验证这两块网卡
5.系统初始化优化
关闭防火墙、selinux
[root@yuchao-template-100 ~]# systemctl stop firewalld NetworkManager
[root@yuchao-template-100 ~]# systemctl disable firewalld NetworkManager
[root@yuchao-template-100 ~]# sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
[root@yuchao-template-100 ~]# grep -i 'selinux=' /etc/selinux/config
# SELINUX= can take one of these three values:
SELINUX=disabled
[root@yuchao-template-100 ~]# setenforce 0
[root@yuchao-template-100 ~]# getenforce
Permissive
[root@yuchao-template-100 ~]# iptables -F
[root@yuchao-template-100 ~]# iptables -X
[root@yuchao-template-100 ~]# iptables -Z
最后检查
[root@yuchao-template-100 ~]# iptables -L
[root@yuchao-template-100 ~]# systemctl is-enabled firewalld NetworkManager
disabled
disabled
加速ssh连接
修改如下2个参数
[root@yuchao-template-100 yum.repos.d]# grep -Ei '^(usedns|gssapiauth)' /etc/ssh/sshd_config
GSSAPIAuthentication no
UseDNS no
[root@yuchao-template-100 yum.repos.d]# systemctl restart sshd.service
优化PS1变量
export PS1="[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\] \[\e[31;1m\]\w\[\e[0m\]]\\$"
yum源优化
1.备份旧的默认repo
[root@yuchao-template-100 ~]# cd /etc/yum.repos.d/
[root@yuchao-template-100 yum.repos.d]# mkdir bakrepo
[root@yuchao-template-100 yum.repos.d]# mv *.repo bakrepo/
2.下载新的repo
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
安装基础软件
yum install -y tree wget bash-completion bash-completion-extras lrzsz net-tools sysstat iotop iftop htop unzip telnet ntpdate lsof
关闭邮件告警
[root@yuchao-template-100 ~]# echo 'unset mailcheck' >> /etc/profile
[root@yuchao-template-100 ~]# source /etc/profile
配置hosts解析
cat > /etc/hosts <<EOF
# 外网地址 内网地址 主机名
10.0.0.61 172.16.1.61 master-61
10.0.0.5 172.16.1.5 slb-5
10.0.0.6 172.16.1.6 slb-6
10.0.0.7 172.16.1.7 web-7
10.0.0.8 172.16.1.8 web-8
10.0.0.9 172.16.1.9 web-9
10.0.0.31 172.16.1.31 nfs-31
10.0.0.41 172.16.1.41 rsync-41
10.0.0.51 172.16.1.51 db-51
EOF
时间同步
* * * * * /usr/sbin/ntpdate time1.aliyun.com > /dev/null 2>&1
关闭swap
[root@yuchao-template-100 ~]# swapoff -a
[root@yuchao-template-100 ~]# free -m
total used free shared buff/cache available
Mem: 1982 97 1409 9 475 1699
Swap: 0 0 0
[root@yuchao-template-100 ~]#
[root@yuchao-template-100 ~]# vim /etc/fstab
[root@yuchao-template-100 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Mon Apr 18 01:03:08 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=16dbd4b1-60b3-4770-b20a-4d0b59b39e4a /boot xfs defaults 0 0
[root@yuchao-template-100 ~]#
6.修改ip的脚本
至此,上述所有的初始化操作,已经针对模板机修改好了,然后克隆该机器,也自动有了所有的配置
未读需要修改的就是ip地址、主机名,每一个机器都不一样,因此你可设置一个简单脚本。
network_init.sh
#!/bin/bash
read -p "请输入IP主机位:" my_ip
read -p "请输入主机名:" host_name
echo '正在修改网卡配置文件eth0'
sed -i "/IPADDR/s#100#${my_ip}#g" /etc/sysconfig/network-scripts/ifcfg-eth0
echo '正在修改网卡配置文件eth1'
sed -i "/IPADDR/s#100#${my_ip}#g" /etc/sysconfig/network-scripts/ifcfg-eth1
echo '网卡配置文件修改完毕'
echo '正在修改主机名'
hostnamectl set-hostname ${host_name}
echo '重启network服务中'
systemctl restart network
7.拍摄快照
8.克隆新的虚拟机
新虚拟机,克隆完毕后
- 检查一下初始化的配置是否正确
- ip、主机名是否正确,按照规划的来
- 是否可以ssh
- 是否可以上网
- 全部做好首次的快照
循环操作,完成9台机器的创建
- 绘制架构图,理解今日所学的网站架构演进,以及虚拟机创建
克隆要求
根据现有的模板机快照,克隆新的虚拟机
创建链接克隆即可,等于软连接形式,占用资源少
配置和模板机一样样的,只需要修改ip、主机名即可
别创建完整克隆,等于多个虚拟机
克隆完了之后,关机,再次给机器创建一个快照
反复重复这些操作,创建9个机器
(注意,模板机不能删除,模板机的快照不能删,和软连接的理念是一样的)
模板机放着别动,也别开机就好
9.最终验证
9台机器的eth0 相互可以通信,访问百度是通过eth0的网关
9台机器的eth1 可以相互通信,eth1作为内网机器,不需要网关,以及dns
初始化脚本备份
init1.sh
# 网卡初始化脚本
sed -i '/ipv[46]/Id' /etc/sysconfig/network-scripts/ifcfg-ens33
sed -i '/ipv[46]/Id' /etc/sysconfig/network-scripts/ifcfg-ens37
sed -r -i '/(proxy_method|browser_only|uuid|defroute)/Id' /etc/sysconfig/network-scripts/ifcfg-ens33
sed -r -i '/(proxy_method|browser_only|uuid|defroute)/Id' /etc/sysconfig/network-scripts/ifcfg-ens37
# 修改网卡1 配置
read -p "input ip1:" l_ip
read -p "input ip2:" l_ip2
read -p "input hostname:" l_hostname
echo -e "TYPE=Ethernet
BOOTPROTO=none
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=$l_ip
PREFIX=24
GATEWAY=10.0.0.254
DNS1=223.5.5.5" > /etc/sysconfig/network-scripts/ifcfg-ens33
echo -e "TYPE=Ethernet
BOOTPROTO=none
NAME=ens37
DEVICE=ens37
ONBOOT=yes
IPADDR=$l_ip2
PREFIX=24" > /etc/sysconfig/network-scripts/ifcfg-ens37
hostnamectl set-hostname $l_hostname
systemctl restart network
init2.sh
###### 服务初始化
# 网络,防火墙
sed -i '/ONBOOT/c ONBOOT=yes' /etc/sysconfig/network-scripts/ifcfg-ens33
systemctl stop firewalld NetworkManager
systemctl disable firewalld NetworkManager
sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
iptables -F
iptables -X
iptables -Z
# yum源设置
echo 'export PS1="[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\] \[\e[31;1m\]\w\[\e[0m\]]\\$" ' >> /etc/profile
curl -o /etc/yum.repos.d/CentOS-Base.repo https://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 install -y tree wget bash-completion bash-completion-extras lrzsz net-tools sysstat iotop iftop htop unzip telnet ntpdate lsof vim
echo 'unset mailcheck' >> /etc/profile