架构开篇

2587 字
13 分钟
架构开篇

架构开篇#

[TOC]


单点故障#

image-20260109205508947
image-20260109205508947

❤️==并发== :多个用户同时访问

使用单点服务器的网站

  • 不是特别重要
  • 对外宣传,不存在交易
  • 监控

👑单台服务器我们统称为==单点故障==

  1. 只要里面有一个地方坏,整台服务器都用不了

  2. 承载的用户是有限的

  3. 配置和资源是有限的

  4. 网络慢

初见架构#

大家先有一个整体的框架,后面我们会详细学习每一块的内容。

image-20251126102845614
image-20251126102845614

  • web02也可以访问到数据库和缓存

❤️为什么要做集群?

  1. 单点故障
  2. 高并发

image-20260110151112984
image-20260110151112984

image-20260110151132748
image-20260110151132748

准备工作#

这个是模板机,用于后面克隆使用

1.安装操作系统kylin(企业版)#

Terminal window
安装过程
1)一个CPU一个核心,
2)1G内存,50G硬盘
3)分区
标准分区(速度快)
/
boot
swap(自己虚拟机分、企业不分)

image-20260110153132164
image-20260110153132164

修改网卡名字#

image-20260110160611088
image-20260110160611088

输入net.ifnames=0 biosdevname=0后,回车进入系统。

image-20260110160944263
image-20260110160944263

image-20260110161235658
image-20260110161235658

分区#

image-20260110153600374
image-20260110153600374

image-20260110155119393
image-20260110155119393

image-20260110154050894
image-20260110154050894

  • 这里200m其实就是200MiB

image-20260110154422924
image-20260110154422924

  • 根分区下面那一行不用写

image-20260110154652161
image-20260110154652161

  • 出现弹窗,接受更改(A)

软件选择#

最小化安装
1.标准
2.调试工具
3.开发工具
4.系统工具
5.Man手册

网络和主机#

image-20260110161922487
image-20260110161922487

image-20260110162715248
image-20260110162715248

image-20260110163049601
image-20260110163049601

image-20260110163106903
image-20260110163106903

  • 设置密码
  • 不用创建用户

image-20260110164523327
image-20260110164523327

2.系统优化#

增加局域网-网卡#

NAT#

image-20260110170556329
image-20260110170556329

  1. 使用VMnet8网卡

    .1和宿主机通信 .2网关,用来访问外网

  2. 私网中的 虚拟机 可以通过NAT访问与 宿主机 在同一网段的 其他物理机

    但同一网段的 其他物理机 无法访问我私网的 虚拟机

网桥#

image-20260110170816009
image-20260110170816009

  1. 默认使用VMnet0网卡

  2. 虚拟机和宿主机在同一个网段下

    🌉 这就像给虚拟机插了一根“看不见的网线”,直接连到了你家/公司的交换机上

  3. 厉害就厉害在,同一网段的 其他物理机 可以访问我私网的 虚拟机

仅主机#

image-20260110171139623
image-20260110171139623

  1. 默认使用VMnet1网卡
  2. 可以和宿主机直接ping通
  3. 虚拟机无法访问网络

LAN网段#

image-20260110172411637
image-20260110172411637

  • 创建虚拟局域网(类似物理交换机VLAN)

  • 通信范围

    • 同一LAN区段内的虚拟机互相通信
    • 宿主机别的LAN区段外部网络==完全隔离==
  • 像这个LAN区段可以是很多,同样对应的局域网可以是很多个

  • 选择同一个LAN区段,相当于把虚拟机接在同一个交换机上了

image-20251126111536327
image-20251126111536327

  • 10.0.0.0/24用于访问外网 第一张网卡

  • 172.16.1.0/24用于模仿我们的局域网 第二张网卡

流程#

image-20260110173311529
image-20260110173311529

  1. 这个区段的名字,只是方便我们记忆认知,这个名字本质上写什么都行

  2. 你要是想要他们属于一个局域网,那么他们的LAN区段的名字是必须要一样的

  3. 也就是所有机器的第二张网卡,都得是它。

  4. 有了它我们就可以创建多重局域网

这个LAN区段只需要添加一次,则所有虚拟机都可以识别并使用

image-20260110173358459
image-20260110173358459

  • 重新启动虚拟机
网卡优化#
Terminal window
[root@oldboy ~]# ip a
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:61:64:54 brd ff:ff:ff:ff:ff:ff
# 重启后多了一张网卡,名为eth1
1.优化网卡配置
[root@oldboy ~]# cd /etc/sysconfig/network-scripts/
[root@oldboy network-scripts]# ll
总用量 4
-rw-r--r-- 1 root root 352 1月 10 16:35 ifcfg-eth0
[root@oldboy network-scripts]# cat ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.0.0.3
PREFIX=24
GATEWAY=10.0.0.2
DNS1=223.5.5.5
2.复制配置文件为eth1
[root@oldboy network-scripts]# cp ifcfg-eth0 ifcfg-eth1
[root@oldboy network-scripts]# cat ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=none
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=172.16.1.3
PREFIX=24
# 这里不需要配置网关和DNS
# 因为这张网卡是局域网专用,不负责访问外网
3.重启生效
[root@oldboy ~]# systemctl restart network
Failed to restart network.service: Unit network.service not found.
[root@oldboy ~]# yum -y install network-scripts
[root@oldboy ~]# systemctl restart network
# 再次通过ip addr查看结果,已经全部改正过来。
4.是否联网
[root@oldboy ~]# ping -c1 -W1 www.baidu.com
PING www.a.shifen.com (110.242.69.21) 56(84) bytes of data.
64 bytes from 110.242.69.21 (110.242.69.21): icmp_seq=1 ttl=128 time=12.4 ms
其他优化#
Terminal window
2)配置扩展epel仓库
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
# 麒麟默认yum仓库在国内,不需要进行修改
# Centos7需要进行修改yum仓库和epel仓库
3)安装常用命令、软件
[root@oldboy ~]# yum -y install lrzsz ntpdate
#其他的软件和命令
"vim tree wget bash-completion bash-completion-extras lrzsz net-tools sysstat iotop iftop htop unzip nc nmap telnet bc psmisc httpd-tools bind-utils nethogs expect cowsay sl ntpdate"
4)时间同步
1.先查看自己的时区,如果时区不对记得修改
[root@oldboy ~]# timedatectl status
[root@oldboy ~]timedatectl set-timezone Asia/Shanghai
2.写入定时任务里面
[root@oldboy ~]# tail -1 /etc/crontab
*/15 * * * * root ntpdate ntp1.aliyun.com &>/dev/null
# 这里是系统的定时任务,命令前面要加root
5)默认语言修改英语
[root@oldboy ~]# echo ${LANG}
zh_CN.UTF-8
[root@oldboy ~]# localectl set-locale LANG=en_US.UTF-8
[root@oldboy ~]# source /etc/locale.conf
[root@oldboy ~]#
# 测试提示结果为英语
[root@oldboy ~]# lll
-bash: lll: command not found
6)PS1变量
[root@oldboy ~]# tail -2 /etc/profile
# 用来自定义命令行格式样式
PS1="[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\]\[\e[31;1m\] \W\[\e[0m\]]\\$ "
# 别忘了souce一下环境变量
7)关闭防火墙
[root@oldboy ~]#systemctl stop firewalld
[root@oldboy ~]#systemctl disable firewalld
# Centos记得修改/etc/selinux/config文件,关闭SElinux
8)kylin卸载tmp
# kylin的tmp目录属于内存空间(企业需要卸载优化)
[root@oldboy ~]#umount /tmp
[root@oldboy ~]#systemctl mask tmp.mount
#禁止开机自动挂载
9)ssh优化
[root@oldboy ~]sed -i '/^GSSAPIAuthentication/s@^@#@g' /etc/ssh/sshd_config
# 原来是 yes 注释掉 --> 开头换为#
[root@oldboy ~]cat >>/etc/ssh/sshd_config<<EOF
UseDNS no
# 相当于网络命令的-n选项,这个就是说不解析为主机名,直接成IP地址.
GSSAPIAuthentication no
# 关闭GSS认证.
EOF
[root@oldboy ~]#grep GSSAPIAuthentication /etc/ssh/sshd_config
#GSSAPIAuthentication yes
GSSAPIAuthentication no
'我们注释的是yes --> 追加的是 no'
[root@oldboy ~]systemctl restart sshd
[root@oldboy ~]egrep '^(GSSAPIAuthentication|UseDNS)' /etc/ssh/sshd_config
UseDNS no
GSSAPIAuthentication no
# 检查
# 注: sshd_config后面讲解sshd服务会有详解,目前配置即可
10)登录提示信息优化
[root@oldboy ~]# cat /etc/issue
Authorized users only. All activities may be monitored and reported.
[root@oldboy ~]# cat /etc/issue.net
Authorized users only. All activities may be monitored and reported.
# 把它们都注释掉!!
[root@oldboy ~]# > /etc/issue
[root@oldboy ~]# > /etc/issue.net
文件描述符#

文件描述符(FD) 是一个整数编号,是操作系统用来”记住”你打开了哪个文件网络连接的”小标签”

  • 每个 FD 对应一种资源:普通文件、Socket 连接、管道、设备文件等
  • 默认单个进程最多同时打开 1024 个 FD
  • 业务量上来后(比如高并发服务),1024 明显不够用,所以要调大到 65535

有一个下载器软件(这是一个进程),任务是同时下载 100 个文件

  1. 进程启动(打开大门)

  • 你双击运行下载器。操作系统给你分配了一个进程 ID
  • 此时,你手里默认有 3 个 FD:
    • FD 0:键盘(标准输入)

    • FD 1:屏幕(标准输出)

    • FD 2:报错屏幕(标准错误)

  1. 打开多个连接(消耗 FD)

  • 你开始下载第 1 个文件 → 系统给你分配 FD 3(对应连接 A)
  • 你开始下载第 2 个文件 → 系统给你分配 FD 4(对应连接 B)
  • 你开始下载第 100 个文件 → 系统给你分配 FD 102(对应连接 N)

现在的状态: 1 个进程(下载器),手里拿着 100 多个 FD(全是网络连接)

  1. 遇到瓶颈(1024 限制)

  • 如果你是个超级下载器,想同时下载 2000 个文件

  • 当你试图建立第 1025 个连接时,操作系统会拦下你:

    “停!你的 FD 额度(1024)用光了!不能再开新连接了!” (Too many open files)

  1. 关闭窗口(释放 FD)

  • 第 1 个文件下载完了,你关闭了连接 A
  • 操作系统回收 FD 3
  • FD 3 这个数字空出来了,下次你再开新连接时,系统会把这个号重新发给你
Terminal window
#加大文件描述符
#查看默认描述符数量
[root@oldboy ~]#ulimit -n
1024
#设置文件描述符为65535
[root@oldboy ~]#echo "* - nofile 65535" >> /etc/security/limits.conf
[root@oldboy ~]#tail -1 /etc/security/limits.conf
* - nofile 65535
#重启系统生效
reboot
#检查结果
[root@oldboy ~]#ulimit -n
65535
娱乐时间#

/etc/motd

  • 存放字符串,每次Xshell连接显示里面的内容
Terminal window
[root@oldboy ~]#cat /etc/motd
|\ /|
___| \,,/_/
---__/ \/ \
__--/ (D) \
_ -/ (_ \
// / \_ / -\
__-------_____--___--/ / \_ O o)
/ / \__/
/ /
|| ) \_/\
|| / _ / |
| | /--______ ___\ /\ :
| / __- - _/ ------ | | \ \
| - - / | | \ )
| | - | | ) | |
| | | | | | | |
| | < | | | |_/
< | /__\ < \
/__\ /___\
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
奔腾如骏 稳如磐石
系统常青 永不死机
脚本优化#

🏆用于更加便捷的修改主机名和IP地址

Terminal window
mkdir -p /server/scripts/
# 以后我们的脚本文件都放在/server/scripts目录下面
vim /server/scripts/change.sh
# 然后把脚本粘贴进来。
#!/bin/bash
#author: jiuzhao996
#desc: change ip and hostname
#version: v1.0
[ $# -ne 2 ] && {
echo "Usage: $0 <hostname> <new_ip>"
echo "Example: $0 web01 192.168.1.200"
exit 1
}
# 获取IP地址的最后一段
# 例如192.168.1.200获取200,因为两个网卡都要进行修改
ip=$(hostname -I | awk '{print $1}' | awk -F. '{print $NF}')
# $NF最后一列
# -F. 以.为分隔符
new_ip=$(echo $2 | awk -F. '{print $NF}')
# $2是我们刚才输入进去的IP地址
# 新主机名
new_hostname=$1
# 修改IP(假设使用ifcfg-eth0)
sed -i "s#10.0.0.$ip#10.0.0.$new_ip#g" /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i "s#172.16.1.$ip#172.16.1.$new_ip#g" /etc/sysconfig/network-scripts/ifcfg-eth1
# 修改主机名
hostnamectl set-hostname $new_hostname
# 重启网络
systemctl restart network
echo "hostname changed to $new_hostname,IP changed to $2, "

3.快照—>关机#

image-20260111023000183
image-20260111023000183

4.克隆服务器#

链接克隆#

image-20260111023830024
image-20260111023830024

  1. 占有的空间更少一些

  2. 克隆出来的机器,不完全独立,依赖模板机

  3. 每链接克隆一台机器,模板机就会有一个相应的快照 带锁的快照,这个==快照不能删==

快速克隆#

Terminal window
backup 10.0.0.41
# 备份服务器
nfs 10.0.0.31
# 存储服务器
  • 修改主机名和IP地址

image-20260111023122647
image-20260111023122647

Terminal window
sh /server/scripts/change.sh 主机名 IP地址
# 顺序一定不能反
  • 分别做快照

image-20260111024216947
image-20260111024216947

  • 优化xshell会话

image-20260111024723492
image-20260111024723492

  • 缓冲区越大,你的终端能塞下的历史记录也多

image-20260111025243259
image-20260111025243259

  • 进去终端后,数字小键盘可以随意使用

image-20260111025039264
image-20260111025039264

  • 显示完整的终端标题,不缩减

image-20260111025520073
image-20260111025520073

❤️优化完模版机的终端,后面直接复制过去

image-20260111030240933
image-20260111030240933

先苦后甜#

image-20260111035539309
image-20260111035539309

  • 提前部署,把后面一个月,用到的虚拟机创建出来 改主机名和IP

    拍了快照

    并通过复制模板机的Xshell会话,创建了他们的会话

image-20260111040054993
image-20260111040054993

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

架构开篇
https://www.kpyun.fun/posts/basics/extension/extension08/
作者
久棹
发布于
2025-09-27
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
久棹
只要胆子大,天天寒暑假!
公告
欢迎来到久棹的技术小站!本站专注 Linux 运维学习笔记分享,如有问题欢迎交流探讨 🎉
分类
标签
站点统计
文章
98
分类
11
标签
203
总字数
244,453
运行时长
0
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.13.5
文章许可
CC BY-NC-SA 4.0

文章目录