云原生-Linux的高级部分笔记
云原生-Linux的高级部分笔记
Kaitumei26-1-13 (复习)
1.什么是内核、什么是shell、什么是Linux、什么是开源?
内核、shell、linux、开源的概念
内核:是操作系统的核心组件,是硬件与软件的“桥梁”,夜视整个操作系统的基石
Shell:是用户与内核之间的交互界面,也可以理解为 “命令解释器”,你之前提到的 Linux Shell 脚本,就是基于它来写的。
开源:是一种软件的授权模式,和 “闭源” 相对,核心是源代码公开。
2.Linux中命令录入方式
2.1.命令行快捷键
2.1.1.光标移动快捷键
| 快捷键 | 作用 |
|---|---|
Ctrl + A |
光标跳到命令行开头 |
Ctrl + E |
光标跳到命令行结尾 |
Alt + F |
光标向右跳一个单词(按空格分隔的单位) |
Alt + B |
光标向左跳一个单词 |
Ctrl + ← |
等价于 Alt + B(部分终端支持) |
Ctrl + → |
等价于 Alt + F(部分终端支持) |
2.1.2.命令编辑快捷键
| 快捷键 | 作用 |
|---|---|
Ctrl + U |
删除光标左侧的所有字符(清空到行首) |
Ctrl + K |
删除光标右侧的所有字符(清空到行尾) |
Ctrl + W |
删除光标左侧的一个单词 |
Alt + D |
删除光标右侧的一个单词 |
Ctrl + Y |
粘贴之前用 Ctrl+U/K/W 删除的内容(剪贴板复用) |
Ctrl + H |
等同于退格键(删除光标前一个字符) |
Ctrl + T |
交换光标前两个字符的位置(输错字符时超实用) |
2.1.3.历史命令快捷键
| 快捷键 | 作用 |
|---|---|
↑ / ↓ |
向上 / 向下翻找历史命令(按输入顺序) |
Ctrl + R |
搜索历史命令(输入关键词,会自动匹配最近的命令,按 Ctrl+R 继续找更早的) |
Ctrl + G |
退出 Ctrl+R 的搜索模式,回到当前命令行 |
!! |
快速执行上一条命令(比翻箭头更快) |
!n |
执行历史命令中第 n 条(history 命令可查看历史列表及序号) |
!字符 |
执行最近一次以该字符开头的命令(例:!ls 执行最近的 ls 命令) |
Alt + . |
粘贴上一条命令的最后一个参数(例:上一条是 cp a.txt /home,按后直接出现 /home) |
2.1.4.进程控制快捷键
| 快捷键 | 作用 |
|---|---|
Ctrl + C |
强制终止当前正在运行的命令(最常用,比如命令卡死时) |
Ctrl + Z |
把当前命令挂起(放到后台暂停),用 fg 命令可恢复到前台 |
Ctrl + D |
退出当前 Shell 会话(等价于输入 exit 命令) |
2.1.5.终端操作快捷键
| 快捷键 | 作用 |
|---|---|
Ctrl + L |
清空终端屏幕(等价于输入 clear 命令,不会删除历史命令) |
Ctrl + Shift + C |
复制终端中选中的内容(图形化终端模拟器适用) |
Ctrl + Shift + V |
粘贴复制的内容到终端(图形化终端模拟器适用) |
2.1.6.Linux Bash 命令行快捷键速查表
| 分类 | 快捷键 | 作用 |
|---|---|---|
| 光标移动 | Ctrl + A |
跳到命令行开头 |
Ctrl + E |
跳到命令行结尾 | |
Alt + F |
向右跳一个单词 | |
Alt + B |
向左跳一个单词 | |
Ctrl + ← |
向左跳一个单词(部分终端支持) | |
Ctrl + → |
向右跳一个单词(部分终端支持) | |
| 命令编辑 | Ctrl + U |
删除光标左侧所有字符 |
Ctrl + K |
删除光标右侧所有字符 | |
Ctrl + W |
删除光标左侧一个单词 | |
Alt + D |
删除光标右侧一个单词 | |
Ctrl + Y |
粘贴之前删除的内容 | |
Ctrl + H |
等同于退格键 | |
Ctrl + T |
交换光标前两个字符 | |
| 历史命令 | ↑ / ↓ |
向上 / 向下翻历史命令 |
Ctrl + R |
搜索历史命令(按 Ctrl+R 继续找更早的) |
|
Ctrl + G |
退出历史命令搜索模式 | |
!! |
执行上一条命令 | |
!n |
执行历史命令列表中第 n 条 |
|
!字符 |
执行最近一次以该字符开头的命令 | |
Alt + . |
粘贴上一条命令的最后一个参数 | |
| 进程控制 | Ctrl + C |
强制终止当前运行的命令 |
Ctrl + Z |
挂起当前命令(后台暂停,fg 可恢复) |
|
Ctrl + D |
退出当前 Shell 会话 | |
| 终端操作 | Ctrl + L |
清空终端屏幕 |
Ctrl + Shift + C |
复制选中内容(图形化终端适用) | |
Ctrl + Shift + V |
粘贴内容到终端(图形化终端适用) |
3.命令行中如何获得帮助
命令 –help
man 命令
1 | # 开启监控 |
4.linux上下文管理
4.1.常见命令表
Linux 下文件管理是系统操作的核心内容,常用命令覆盖文件 / 目录的创建、查看、复制、移动、删除、权限修改等场景。以下是整理的常用命令表,按功能分类并附关键参数说明:
| 命令分类 | 命令 | 功能说明 | 常用参数 & 示例 |
|---|---|---|---|
| 目录操作 | pwd |
显示当前工作目录的绝对路径 | 无参数示例:pwd → /home/user |
cd |
切换工作目录 | - cd ~:切换到当前用户家目录- cd ..:切换到上级目录- cd /usr/local:切换到指定绝对路径 |
|
ls |
列出目录下的文件和子目录 | - -l:以长格式显示(权限、大小、时间等)- -a:显示隐藏文件(以 . 开头的文件)- -h:人性化显示文件大小(KB/MB/GB)示例:ls -lah |
|
mkdir |
创建新目录 | - -p:递归创建多级目录示例:mkdir -p /tmp/test/abc |
|
rmdir |
删除空目录 | 仅能删除空目录示例:rmdir /tmp/test/abc |
|
| 文件操作 | touch |
创建空文件或修改文件时间戳 | 示例:touch newfile.txt → 创建空文件 |
cp |
复制文件或目录 | - -r:递归复制目录(必选参数)- -f:强制覆盖目标文件示例 1:cp file.txt /tmp/ → 复制文件示例 2:cp -r dir1 /tmp/ → 复制目录 |
|
mv |
移动 / 重命名文件或目录 | 同一目录下执行是重命名,跨目录是移动示例 1:mv oldname.txt newname.txt → 重命名示例 2:mv file.txt /tmp/ → 移动文件 |
|
rm |
删除文件或目录 | - -r:递归删除目录- -f:强制删除,不提示确认危险命令:rm -rf /(切勿执行!会删除系统所有文件)示例:rm -rf dir1 → 删除目录及所有内容 |
|
| 文件查看 | cat |
查看文件全部内容(适合小文件) | - -n:显示行号示例:cat -n /etc/hosts |
more |
分页查看大文件(只能向下翻页) | 示例:more /var/log/messages → 按空格翻页,q 退出 |
|
less |
分页查看大文件(可上下翻页) | 示例:less /var/log/syslog → 按 ↑/↓ 滚动,q 退出 |
|
head |
查看文件前 N 行(默认前 10 行) | -n:指定行数示例:head -n 5 file.txt → 查看前 5 行 |
|
tail |
查看文件后 N 行(默认后 10 行) | - -n:指定行数- -f:实时跟踪文件新增内容(日志监控常用)示例 1:tail -n 20 log.txt → 查看后 20 行示例 2:tail -f /var/log/nginx/access.log → 实时监控日志 |
|
| 权限管理 | chmod |
修改文件 / 目录的权限 | 两种方式:1. 符号法:chmod u+x file.sh(给所有者加执行权限)2. 数字法:chmod 755 file.sh(r=4,w=2,x=1,7=4+2+1)常用权限:755(用户可读可写可执行,其他只读可执行)、644(用户可读可写,其他只读) |
chown |
修改文件 / 目录的所有者和所属组 | - -R:递归修改目录权限示例:chown -R user:group /home/user/data |
|
| 文件查找 | find |
按路径、名称、大小等条件查找文件 | - 按名称:find /tmp -name "*.txt" → 查找 tmp 下所有 txt 文件- 按大小:find / -size +100M → 查找系统中大于 100M 的文件- 按类型:find /home -type d → 查找 home 下所有目录 |
which |
查找命令的可执行文件路径 | 示例:which ls → /usr/bin/ls |
|
locate |
快速查找文件(基于数据库索引) | 需先更新数据库:updatedb示例:locate passwd → 查找所有含 passwd 的文件 |
|
| 文件链接 | ln |
创建硬链接或软链接 | - 软链接(常用):ln -s /path/source /path/link → 类似快捷方式- 硬链接:ln /path/source /path/link → 与源文件共享 inode |
4.2.补充说明
- 隐藏文件:Linux 中以
.开头的文件为隐藏文件,需用ls -a查看。 - 绝对路径 vs 相对路径
- 绝对路径:从根目录
/开始,如/home/user/file.txt - 相对路径:相对于当前目录,如
../file.txt(上级目录的文件)
- 绝对路径:从根目录
- 权限符号含义:
r(读,4)、w(写,2)、x(执行,1),权限分三类:u(所有者)、g(所属组)、o(其他用户)。
5.文件批处理
5.1.Linux 文件批处理命令表
| 批处理命令 / 核心语法 | 核心用途 | 批处理示例(场景 + 执行命令) | |
|---|---|---|---|
for 循环 |
遍历指定文件 / 目录,执行自定义批处理操作(新手易理解) | 场景:批量将当前目录下所有 .txt 文件重命名为 .bak``bash<br>for f in *.txt; do mv "$f" "${f%.txt}.bak"; done<br>(${f%.txt} 表示去掉文件名后缀 .txt) |
|
find + xargs |
高效查找文件并批量执行命令(适合大量文件) | 场景:批量删除当前目录及子目录下所有 .log 文件```bashfind . -type f -name “*.log” |
xargs rm -f```(-type f 限定文件,-f 强制删除,避免确认) |
mv(批量重命名) |
基础批量重命名 / 移动文件 | 场景:批量将 file1.txt、file2.txt 移动到 backup 目录bash<br>mv file*.txt backup/<br> |
|
cp(批量复制) |
批量复制文件到指定目录 / 批量备份文件 | 场景:批量复制当前目录下所有 .sh 脚本到 /usr/local/bin``bash<br>cp *.sh /usr/local/bin/<br> |
|
rm(批量删除) |
批量删除指定类型 / 条件的文件(谨慎使用) | 场景:批量删除当前目录下所有空文件(大小为 0)bash<br>rm -f $(find . -type f -size 0)<br> |
|
sed(批量替换内容) |
批量修改多个文件内的文本内容 | 场景:批量将所有 .conf 文件中的 old_ip 替换为 192.168.1.1``bash<br>sed -i 's/old_ip/192.168.1.1/g' *.conf<br>(-i 直接修改文件,g 全局替换) |
|
rename(专用重命名) |
更简洁的批量重命名(支持正则) | 场景:批量将所有文件名中的 test 替换为 prod(如 test1.txt → prod1.txt)bash<br>rename 's/test/prod/' *.txt<br>(需先安装:apt install rename/yum install rename) |
|
awk(批量处理内容) |
批量提取 / 筛选文件中的指定数据 | 场景:批量提取所有 .csv 文件中第 2 列的内容并保存到 result.txt``bash<br>awk -F ',' '{print $2}' *.csv > result.txt<br>(-F ',' 指定分隔符为逗号) |
5.2.正则表达式符号 / 字符类 命令表
| 正则符号(命令) | 用途说明 | 示例(匹配 / 不匹配) | |
|---|---|---|---|
* |
量词,匹配前面的字符 / 表达式 0 次或多次(贪婪匹配) | a*:匹配空字符、a、aa、aaa;不匹配 b、1(仅针对前导字符a)例:`echo”aaa b” |
grep -o ‘a*’输出aaa、空、b` 旁的空 |
? |
量词,匹配前面的字符 / 表达式 0 次或 1 次(非贪婪匹配) | a?:匹配空字符、a;不匹配 aa、aaa例:`echo”a aa aaa” |
grep -o ‘a?’输出a、空、a、a、空、a、a、a、空 |
[[:alpha:]] |
匹配任意字母字符(包含大小写,多语言环境适配) | 匹配:a、B、中(中文环境);不匹配:1、!、(空格)例:`echo”Ab123 中!” |
grep -o ‘[[:alpha:]]’输出A、b、中 ` |
[[:digit:]] |
匹配任意数字字符,等价于 [0-9] | 匹配:0、5、9;不匹配:a、$、(空格)例:`echo”abc123def” |
grep -o ‘[[:digit:]]’输出1、2、3` |
[[:lower:]] |
匹配任意小写字母,等价于 [a-z] | 匹配:a、z、m;不匹配:A、1、!例:`echo”AbCdEf123” |
grep -o ‘[[:lower:]]’输出b、d、f` |
[[:upper:]] |
匹配任意大写字母,等价于 [A-Z] | 匹配:A、Z、M;不匹配:a、9、@例:`echo”AbCdEf123” |
grep -o ‘[[:upper:]]’输出A、C、E` |
[[:alnum:]] |
匹配任意字母或数字字符,等价于 [a-zA-Z0-9] | 匹配:a、B、8;不匹配:!、(空格)、@例:`echo”abc123!@#” |
grep -o ‘[[:alnum:]]’输出a、b、c、1、2、3` |
[[:punct:]] |
匹配任意标点符号(非字母、数字、空白的可打印字符) | 匹配:!、@、#、,、.、:;不匹配:a、5、(空格)例:`echo”abc!123@def” |
grep -o ‘[[:punct:]]’输出!、@` |
[[:space:]] |
匹配任意空白字符(空格、制表符 \t、换行符 \n 等) | 匹配:(空格)、\t(制表符)、\n(换行);不匹配:a、9、!例:`echo”a b\tc\nd” |
grep -o ‘[[:space:]]’ 输出 空格、\t、\n` |
5.3.补充说明
- 示例中的
grep -o是终端常用命令,-o参数表示 “只输出匹配到的部分”,新手可直接复制命令到终端执行,直观看到效果; - 部分字符类(如
[[:alpha:]])在中文 / 多语言系统中可匹配非英文字母(如中文、日文),而[a-zA-Z]仅匹配英文字母,这是 POSIX 字符类的优势。
5.4.总结
*/?是量词,示例核心看 “前导字符的匹配次数”,而非匹配特定字符;[[:xxx:]]字符类的示例需区分 “匹配 / 不匹配”,快速掌握字符范围;- 结合
grep -o命令可直接验证示例效果,是新手学习正则的高效方式。
6.Linux中的输入和输出
6.1.字符设备是啥?
在 Linux 系统中,字符设备(Character Device) 是一类以字符流(字节流) 为单位进行数据传输的硬件设备,也是 Linux 设备文件的两大核心分类之一(另一类是块设备)。
与块设备的核心区别
| 特性 | 字符设备 | 块设备 |
|---|---|---|
| 访问单位 | 字节(字符流) | 固定大小的块(通常 512B/4KB) |
| 访问方式 | 串行、顺序访问,不支持随机访问 | 支持随机访问(可跳转到任意块) |
| 缓冲区 | 无缓冲或小缓冲 | 有较大的内存缓冲区(提升读写效率) |
| 文件类型标识 | c |
b |
| 典型设备 | 键盘、鼠标、串口 | 硬盘、U 盘、SD 卡 |
6.2.输入与输出
在 Linux 系统中,输入(Input)和输出(Output)的核心原理围绕 “一切皆文件” 思想展开,本质是用户程序通过内核提供的接口,对文件描述符进行读写操作,内核再作为中介完成用户程序与硬件设备的交互。
Linux 把所有输入输出设备都抽象成文件,用户程序无需关心硬件细节,只需通过文件描述符(File Descriptor,FD) 来标识和操作这些 “文件”。
文件描述符
是一个非负整数,内核用它来索引和管理打开的文件(包括硬件设备、普通文件、管道等)。
系统默认分配 3 个标准文件描述符,供所有进程使用:
| 文件描述符 | 名称 | 对应设备 / 用途 | 缩写 |
|---|---|---|---|
| 0 | 标准输入 | 键盘、管道输入等 | stdin |
| 1 | 标准输出 | 终端、管道输出等 | stdout |
| 2 | 标准错误 | 终端(专门输出错误信息) | stderr |
核心原则
输入 = 从文件描述符 读取数据(如从 stdin 读键盘输入)
输出 = 向文件描述符 写入数据(如向 stdout 写终端输出)
本质
Linux 输入输出的本质是 “用户程序 ↔ 内核 ↔ 硬件” 的三层交互模型:
- 用户程序:通过
read/write系统调用发起 IO 请求,只操作文件描述符,不碰硬件。 - 内核:负责管理文件描述符、缓冲区,以及设备驱动,是 IO 交互的核心中介。
- 硬件:由驱动程序控制,完成数据的物理输入输出(如键盘接收按键、屏幕显示字符)。
- 用户程序:通过
26-1-14 (复习)
1.Rhel9.6安装
选项–>高级–>固件类型 改为BIOS
安装源选择 服务器
虚拟网络配置
2.Rhel9.6配置
2.1.关闭安全配置
1 | #关闭防火墙 |
2.2.更改网络配置
1 | [root@base ~]# vim /boot/loader/entries/1199b04b0d974659ad491305f98dcfe0-5.14.0-570.12.1.el9_6.x86_64.conf |
2.3.永久挂载
1 | [root@base ~]# mkdir /rhel9 |
2.4.源仓库配置
2.4.1.本地仓库源
1 | [root@base ~]# cd /etc/yum.repos.d/ |
2.4.2.网络源
1 | #docker容器的网络源 |
2.4.3.自建仓库源
1 | [root@base ~]# dnf install httpd -y |
26-1-16 (复习)
1.网络管理
1.1.网络ip配置
1 | # 判断网卡是否存在 |
1.2.网络脚本
1 |
|
1 |
|
26-1-17 (复习)
1.系统引导过程修复
引导过程
1.1.磁盘损坏修复
1 | [root@base ~]# fdisk -l |
1.1.1.磁盘引导问题表现
解决方法
1.关机
2.插入可安装系统的设备
3.从此设备启动
1.1.2.磁盘引导修复过程
1 | #输入1并且0回车后输入 |
1.2.引导文件缺失修复
1.2.1.查询引导文件
1 | [root@node2 ~]# ll /boot/grub2/grub.cfg |
1.2.2.主引导文件缺失修复
1.2.2.1.删除主引导文件
1 | [root@node2 ~]# rm -rf /boot/grub2/grub.cfg |
1.2.2.2.问题表现
1.2.2.3.修复过程
1 | # |
当手动引导启动系统后,需要修复自动引导文件,否则系统重启后仍然要手动引导
1 | #修复自动引导文件 |
1.2.3.子引导文件缺失修复
1.2.3.1.删除子引导文件
1 | [root@base ~]# rm -fr /boot/loader/entries/* |
1.2.3.2.问题表现
1.2.3.3.修复过程
与上面的主引导文件修复过程一致
进入系统后
1 | [root@base ~]# kernel-install add $(uname -r) /boot/vmlinuz-5.14.0-570.12.1.el9_6.x86_64 |
当修复子启动文件后网卡的名称设定参数就丢失了需要重新设定,此参数和系统修复本身无关
1 | [root@base ~]# grubby --update-kernel ALL --args net.ifnames=0 |
1.3.内核文件修复
1.3.1.删除内核文件
1.3.2.问题表现
1.3.3.解决方法
(1)打开电源时进入固件
(2)进入BOOT页面,将光驱启动调到最前面
(3)保存后,过程同磁盘修复一致
(4)进入下方页面
1 | bash-5.1# df |
2026-1-19 (复习)
1.apache构建web服务器
1 | # 安装服务并启动服务 |
1.1.主配置文件
1.1.1.更改默认发布文件
1 | [root@node4 ~]# echo "index.html ---> /var/www/html" > /var/www/html/index.html |
1.1.2.修改默认发布目录
1 | [root@node4 ~]# mkdir /web/html -p |
1.1.3.端口修改
1 | [root@node4 ~]# vim /etc/httpd/conf/httpd.conf |
1.2.子配置文件
1.2.1.虚拟主机
1 | # 创建基础目录 |
1.2.2.访问控制
1.2.2.1.基于IP
1 | [root@node4 ~]# mkdir /web/html/admin |
172.25.254.1进行测试
1.2.2.2.基于用户认证
1 | [root@node4 ~]# mkdir -p /web/html/auth/ |
1.2.3.https
1 | [root@node4 ~]# dnf install mod_ssl.x86_64 -y |
2026-1-20
1.NAT模式实现方法
1.1.VS主机配置
1 | [root@vsnode ~]# vmset.sh vsnode eth0 172.25.254.100 |
1.2.RS1配置
1 | [root@vsnode ~]# vmset.sh RS1 eth0 192.168.0.10 192.168.0.100 |
1.3.RS2配置
1 | [root@vsnode ~]# vmset.sh RS2 eth0 192.168.0.20 192.168.0.100 |
1.4.验证
1 | # VSnode中 |
2026-1-22
1.DR模式
1.1.环境流程图
1.2.环境配置
1.2.1.配置路由器
1 | [root@router ~]# vmset.sh router eth0 172.25.254.100 |
1.2.2.vsnode调度器
1 | [root@vsnode ~]# vmset.sh vsnode eth0 192.168.0.50 192.168.0.100 |
1.2.3.客户端
1 | [root@client ~]# vmset.sh client eth0 172.25.254.99 |
1.2.4.RS1
1 | [root@RS1 ~]# vmset.sh RS1 eth0 192.168.0.10 192.168.0.100 |
1.2.5.RS2
1 | [root@RS2 ~]# vmset.sh RS2 eth0 192.168.0.20 192.168.0.100 |
2.利用火墙标记解决轮询错误
2.1.在rs主机中同时开始http和https两种协议
1 | [root@RS1 ~]# dnf install ipvsadm -y |
2.2. 在vsnode中添加https的轮询策略
1 | [root@vsnode ~]# dnf install ipvsadm -y |
2.3. 轮询错误展示
1 |
|
2.4.解决方案
使用火墙标记访问vip的80和443的所有数据包,设定标记为6666,然后对此标记进行负载
1 | [root@vsnode ~]# ipvsadm -C |
2.5.测试
1 | [root@client ~]# curl 192.168.0.200;curl -k https://192.168.0.200 |
3.利用持久连接实现会话粘滞
设定ipvs调度策略
1 | [root@vsnode ~]# ipvsadm -A -f 6666 -s rr -p 1 |
2026-1-23
1.HAPORXY实验
1.环境图
2.环境搭建
2.1.haproxy主机
1 | [root@haproxy ~]# vmset.sh haproxy eth0 172.25.254.100 |
2.2.webserver1
1 | [root@webserver1 ~]# vmset.sh webserver1 eth0 192.168.0.10 nogateway |
2.3.webserver2
1 | [root@webserver2 ~]# vmset.sh webserver2 eth0 192.168.0.20 nogateway |
2.4.环境验证
1 | [root@haproxy ~]# curl 192.168.0.10 |
3.Haproxy的安装及配置参数
3.1.安装
1 | #在调度器(双网卡主机中) |
3.2.harpoxy的参数详解实验
2026-1-25
1.Haproxy算法实验
1.1.静态算法
1.1.1.static-rr
1 | [root@haproxy ~]# vim /etc/haproxy/haproxy.cfg |
1.1.2.first
1 | [root@haproxy ~]# vim /etc/haproxy/haproxy.cfg |
1.2.动态算法
1.2.1.roundrobin
1 | [root@haproxy ~]# vim /etc/haproxy/haproxy.cfg |
1.2.2.leastconn
1 | [root@haproxy ~]# vim /etc/haproxy/haproxy.cfg |
1.3.混合算法
1.3.1.source
1 | # 默认静态算法 |
1.3.2.uri
1 | #主备实验环境 |
1.3.3.url_param
1 | # 设定url_param算法 |
1.3.4.hdr
1 | [root@haproxy ~]# vim /etc/haproxy/haproxy.cfg |
2.基于cookie的会话保持
1 | [root@haproxy ~]# vim /etc/haproxy/haproxy.cfg |
3.HAProxy状态页
1 | [root@haproxy ~]# vim /etc/haproxy/haproxy.cfg |
2026-1-26
1.IP透传
1.1.七层透传
1.1.1.环境搭建
1 | # Haproxy中 |
1.1.2.测试环境
1 | # client中 |
1.1.3.测试效果
1 | # client中 |
1.2.四层透传
1.2.1.环境搭建
1 | # 在RS中把apache停止 |
1.2.2.测试环境
1 | # 启用nginx的四层访问控制 |
1.2.3.测试效果
1 | # client |
2.四层负载
2.1.环境搭建
1 | # 部署mariadb数据库 |
2.2.环境测试
1 | # client |
3.自定义HAProxy 错误界面
3.1.sorryserver的设定
正常的所有服务器如果出现宕机,那么客户将被定向到指定的主机中,这个当业务主机出问题时被临时访问的主机叫做 sorryserver
1 | # 在新主机中安装apache(可以用haproxy主机代替) |
3.2.自定义错误页面
当所有主机包括sorryserver都宕机了,那么haproxy会提供一个默认访问的错误页面,这个错误页面跟报错代码有关,这个页面可以通过定义来机型设置
1 | # 出现的错误页面 |
3.3.重定向错误到指定网站
1 | [root@haproxy ~]# vim /etc/haproxy/haproxy.cfg |
4.Haproxy ACL访问控制
4.1.实验素材
1 | # 在浏览器或者curl主机中设定本地解析 |
4.2.设定基础的haproxy实验配置
1 | [root@Haproxy ~]# vim /etc/haproxy/haproxy.cfg |
4.3.基础acl示例
1 | #在访问的网址中,所有以.com 结尾的访问10,其他访问20 |
Haproxy全站加密
1.制作证书
1 | [root@Haproxy ~]# mkdir /etc/haproxy/certs/ |
2.全站加密
1 | [root@Haproxy ~]# vim /etc/haproxy/haproxy.cfg |
2026-1-28
1.Keepalived实验环境设定
1.环境设定图
2.环境设定
1 | #部署rs1和rh2(单网卡NAT模式) |
2.Keepalived日志分离
默认情况下。keepalived的日志会被保存在/var/log/messages文件中,这个文件中除了含有keepalived的日志外,还有其他服务的日志信息,这样不利于对于keepalived的日志进行查看
1 | [root@KA1 ~]# vim /etc/sysconfig/keepalived |
3.Keepalived的子配置文件设定
在主配置文件中如果写入过多的配置不利于对于主配置文件的阅读
1 | [root@KA1 ~]# vim /etc/keepalived/keepalived.conf |
4.抢占模式
4.1.抢占模式( 默认的,谁优先级高就把vip放到哪里)
4.2.非抢占模式(持有vip只要vrrp通告正常就不做vip迁移)
1 | #kA1中 |
4.3.延迟抢占
1 | #kA1中 |
5.keepalived的单播模式
为什么要单播,组播模式使用的网址资源最少,但是不能跨网络,如果主备两台主机是跨网络的,那么只能启用单播来实现vrrp通告
1 | #在KA1中 |
Keepalived业务vip迁移告警
1.邮件告警环境构建
1 | #安装邮件软件 |
1 | #在Linux主机中配置mailrc(KA1+KA2) |
2.设定keepalived告警脚本
1 | [root@KA1 ~]# mkdir -p /etc/keepalived/scripts |
3.配置keepalived告警
1 | #在KA1和KA2中设定配置文件 |
6.Keepalived双主模式
1 | #在KA1中 |
7.双主模式代理不同业务实现高可用
1.实验环境
1 | #web服务设定再个实验已经设定完成 |
2.实现不同vip代理不同业务
1 | #KA1和KA2 |
3.测试
1 | [root@rs2 ~]# mysql -uhua -phua -h172.25.254.200 |
8.利用VRRP Script 实现全能高可用
1.实验环境
1 | #在KA1和KA2中安装haproxy |
2.利用案例理解vrrp_scripts
1 | #在KA1主机中 |
3.keepalived + haproxy
1 | [root@KA1 ~]# vim /etc/keepalived/scripts/haproxy_check.sh |
2026-1-29
1.Nginx的源码编译
1.1.下载软件
1 | [root@Nginx ~]# wget https://nginx.org/download/nginx-1.28.1.tar.gz |
1.2.解压
1 | [root@Nginx ~]# tar -zxf nginx-1.28.1.tar.gz |
1.3.检测环境
1 | #安装依赖性 |
1.4.编译
1 | [root@Nginx nginx-1.28.1]# make |
1.5.nginx启动
1 | #设定环境变量 |

















