云计算之走进LINUX(四)
引言
第四部分 服务管理进阶
1.DNS 服务器的功能
– 正向解析:根据注册的域名查找其对应的 IP 地址
– 反向解析:根据 IP 地址查找对应的注册域名,不常用
域名结构: 树型结构
所有的域名都必须以点结尾
www.qq.com. www.baidu.com. 根域名: .
一级域名: .cn .us .kr .tw .hk .jp .......
二级域名: .com.cn .tedu.cn .net.cn .org.cn ......
三级域名: nb.com.cn dc.com.cn tc.com.cn ........
完全合格的域名(FQDN)=主机头部+注册的域名
Full Qualified Domain Name,完全合格主机名
– 系统服务:named
– 默认端口:TCP/UDP 53
– 运行时的虚拟根环境:/var/named/chroot/
• 主配置文件:/etc/named.conf #本机负责解析的域名
• 地址库文件存放路径:/var/named/ #域名的解析结果
2.构建基本 DNS 服务
虚拟机 A:
[1].安装软件包
[root@svr7 ~]# yum -y install bind-chroot bind
bind-9.9.4-29.el7.x86_64 //域名服务包
bind-chroot-9.9.4-29.el7.x86_64 //提供虚拟根支持,牢笼
[2].修改主配置文件
[root@svr7 ~]# cp /etc/named.conf /etc/named.bak
[root@svr7 ~]# vim /etc/named.conf
options {
directory "/var/named"; #指定地址库文件位置
};
zone "tedu.cn" IN { #设置本机负责的域名
type master; #设置本机为权威主 DNS 服务器
file "tedu.cn.zone"; #设置地址库文件名称
};
[3].建立地址库文件 tedu.cn.zone
]# cd /var/named/
]# cp -p named.localhost tedu.cn.zone #-p 保持权限不变
]# ls -l tedu.cn.zone
]# vim tedu.cn.zone
所有的域名在地址库文件必须以点结尾
当没有以点结尾时,自动补全地址库负责的域名
tedu.cn. NS svr7 #声明区域 DNS 服务器
svr7 A 192.168.4.7 #声明 DNS 服务器 IP 地址
www A 1.1.1.1 #常规 DNS 正向解析
ftp A 2.2.2.2
[root@svr7 /]# systemctl restart named
虚拟机 B:客户端验证
]# echo nameserver 192.168.4.7 > /etc/resolv.conf
]# cat /etc/resolv.conf
]# nslookup www.tedu.cn
]# nslookup ftp.tedu.cn
3.多域名的 DNS 服务器,负责解析 qq.com 域名
虚拟机 A:
[1].修改主配置文件
[root@svr7 /]# vim /etc/named.conf
options {
directory "/var/named";
};
zone "tedu.cn" IN {
type master;
file "tedu.cn.zone";
};
zone "qq.com" IN {
type master;
file "qq.com.zone";
};
[root@svr7 /]# cd /var/named/
[root@svr7 named]# cp -p tedu.cn.zone qq.com.zone
[root@svr7 named]# vim qq.com.zone
qq.com. NS svr7
svr7 A 192.168.4.7
www A 3.3.3.3
[root@svr7 named]# systemctl restart named
4.特殊解析记录
[1].基于 DNS 解析记录负载均衡
[root@svr7 /]# vim /var/named/tedu.cn.zone
tedu.cn. NS svr7
svr7 A 192.168.4.7
www A 192.168.4.10
www A 192.168.4.20
www A 192.168.4.30
ftp A 2.2.2.2
[root@svr7 /]# systemctl restart named
[2].泛域名解析
虚拟机 A
[root@svr7 /]# vim /var/named/tedu.cn.zone
tedu.cn. NS svr7
svr7 A 192.168.4.7
www A 192.168.4.10
ftp A 2.2.2.2
* A 1.2.3.4
[root@svr7 /]# systemctl restart named
虚拟机 B:测试 nslookup haha.tedu.cn
[3].解析记录的别名
虚拟机 A:
[root@svr7 /]# vim /var/named/tedu.cn.zone
tedu.cn. NS svr7
svr7 A 192.168.4.7
www A 192.168.4.10
ftp A 2.2.2.2
* A 1.2.3.4
mail CNAME ftp
[root@svr7 /]# systemctl restart named
虚拟机 B 测试:
[root@pc207 ~]# nslookup mail.tedu.cn
[4].有规律的泛域名解析
pc1.tedu.cn -----> 192.168.10.1
pc2.tedu.cn -----> 192.168.10.2
pc3.tedu.cn -----> 192.168.10.3
pc50.tedu.cn -----> 192.168.10.50
内置函数:$GENERATE 制造连续范围的数字
虚拟机 A
[root@svr7 ~]# vim /var/named/tedu.cn.zone
$GENERATE 1-50 pc$ A 192.168.10.$
[root@svr7 ~]# systemctl restart named
虚拟机 B 测试:
[root@pc207 ~]# nslookup pc1.tedu.cn
[root@pc207 ~]# nslookup pc2.tedu.cn
[root@pc207 ~]# nslookup pc3.tedu.cn
DNS 资源解析记录有哪些?
正向解析记录(A 记录)
DNS 声明记录(NS 记录)
解析记录的别名(CNAME 记录)
5.DNS 子域授权
父域:qq.com 由虚拟机 A 进行解析
子域:bj.qq.com 由虚拟机 B 进行解析
虚拟机 B,构建 DNS 服务器,负责解析 bj.qq.com
[root@pc207 ~]# yum -y install bind bind-chroot
[root@pc207 ~]# cp /etc/named.conf /etc/named.bak
[root@pc207 ~]# vim /etc/named.conf
options {
directory "/var/named";
};
zone "bj.qq.com" IN {
type master;
file "bj.qq.com.zone";
};
[root@pc207 ~]# cd /var/named/
[root@pc207 named]# cp -p named.localhost bj.qq.com.zone
[root@pc207 named]# vim bj.qq.com.zone
bj.qq.com. NS pc207
pc207 A 192.168.4.207
www A 50.60.70.80
[root@pc207 /]# systemctl restart named
[root@pc207 /]# nslookup www.bj.qq.com 192.168.4.207
[root@pc207 /]# nslookup www.qq.com 192.168.4.7
子域授权: 让父域的 DNS 服务器知晓子域 DNS 服务器
让父域的 DNS 服务器可以解析子域的域名
虚拟机 A:
[root@svr7 ~]# vim /var/named/qq.com.zone
qq.com. NS svr7
bj.qq.com. NS pc207
svr7 A 192.168.4.7
pc207 A 192.168.4.207
www A 3.3.3.3
[root@svr7 ~]# systemctl restart named
[root@pc207 /]# nslookup www.bj.qq.com 192.168.4.7
Server: 192.168.4.7
Address: 192.168.4.7
Non-authoritative answer: #非权威解答
Name: www.bj.qq.com
Address: 50.60.70.80
由客户端发出请求,首选 DNS 服务器接受请求,将解析结果带回过程
[root@svr7 ~]# vim /etc/named.conf
options {
directory "/var/named";
recursion no; #禁止递归解析:
};
迭代解析:首选 DNS 服务器与其他 DNS 服务器交互过程
专业测试 DNS 工具
[root@pc207 /]# dig www.bj.qq.com 192.168.4.7
主机名映射文件:/etc/hosts
没有 DNS 服务器前提下,解析域名,只能为本机做域名解析
[root@svr7 ~]# vim /etc/hosts
192.168.4.110 www.nb.com
[root@svr7 ~]# ping www.nb.com
域名解析过程中最高优先级为/etc/hosts
匹配即停止
然后在读取/etc/resolv.conf
6.缓存 DNS,缓存解析结果,加快解析过程
三个角色: 客户端 缓存 DNS 服务 真 DNS 服务器
虚拟机 A:真 DNS 服务器
虚拟机 B:缓存 DNS 服务
虚拟机 C:客户端
建立虚拟机 C
配置 IP 地址 192.168.4.10/24,主机名为 svr10.tedu.cn
虚拟机 B:缓存 DNS 服务
[root@pc207 /]# vim /etc/named.conf
options {
directory "/var/named";
forwarders { 192.168.4.7; }; #转发给虚拟机 A 的 IP 地址
};
[root@pc207 /]# systemctl restart named
虚拟机 C 上验证:
[root@svr10 ~]# nslookup www.tedu.cn 192.168.4.207
虚拟机 A:构建 DNS 服务器,实现 www.sina.com 的解析结果为 10.20.30.40
[1].修改主配置文件
[root@svr7 named]# vim /etc/named.conf
options {
directory "/var/named";
recursion no; #禁止递归解析:
};
zone "tedu.cn" IN {
type master;
file "tedu.cn.zone";
};
zone "qq.com" IN {
type master;
file "qq.com.zone";
};
zone "sina.com" IN {
type master;
file "sina.com.zone";
};
[2].建立地址库文件
[root@svr7 named]# cd /var/named/
[root@svr7 named]# cp -p qq.com.zone sina.com.zone
[root@svr7 named]# vim /var/named/sina.com.zone
sina.com. NS svr7
svr7 A 192.168.4.7
www A 10.20.30.40
[root@svr7 named]# systemclt restart named
7.Split 分离解析(视图解析)
什么是分离解析
• 当收到客户机的 DNS 查询请求的时候
– 能够区分客户机的来源地址
– 为不同类别的客户机提供不同的解析结果
– 不同客户端解析同一个域名,解析结果不同
– 作用:为客户端就近提供服务器
BIND 的 view 视图
• 根据源地址集合将客户机分类
由上到下匹配及停止,所有的客户端都要找到自己的分类
所有的 zone 都必须在 view 中
view "nsd" {
match-clients { 192.168.1.1; }; #匹配客户机来源地址
zone "12306.cn" IN {
...... 地址库文件 12306.zone;
}; };
view "abc" {
match-clients { 192.168.2.1; };
zone "12306.cn" IN {
...... 地址库文件 12306.abc;
}; };
view "other" {
match-clients { any; };
zone "12306.cn" IN {
...... 地址库文件 12306.other;
}; };
案例需求及要点
• 环境及需求
– 权威 DNS:svr7.tedu.cn 192.168.4.7
– 负责区域:tedu.cn
– A 记录分离解析 —— 以 www.tedu.cn 为例
客户机来自 解析结果
192.168.4.207-----> 192.168.4.100
其他地址 -----> 1.2.3.4
[root@svr7 /]# vim /etc/named.conf
options {
directory "/var/named";
};
view "nsd" { #分类名称
match-clients { 192.168.4.207; }; #匹配客户机来源地址
zone "tedu.cn" IN {
type master;
file "tedu.cn.zone";---->解析结果写 192.168.4.100
};
};
view "other" {
match-clients { any; };
zone "tedu.cn" IN {
type master;
file "tedu.cn.other";---->解析结果写 1.2.3.4
};
};
建立地址库文件 tedu.cn.zone 与 tedu.cn.other 写入不同的解析结果
多个域名的分离解析,每一个 view 中 zone 个数保持一致
– A 记录分离解析 —— 以 www.tedu.cn 为例
– A 记录分离解析 —— 以 www.sina.com 为例
客户机来自 解析结果
192.168.4.207-----> 192.168.4.100
其他地址 -----> 1.2.3.4
view "nsd" {
match-clients { 192.168.4.207; };
zone "tedu.cn" IN {
type master;
file "tedu.cn.zone"; -------> 解析结果为 192.168.4.100
};
zone "sina.com" IN {
type master;
file "sina.com.zone"; -------> 解析结果为 192.168.4.100
};
view "other" {
match-clients { any; };
zone "tedu.cn" IN {
type master;
file "tedu.cn.other"; -------> 解析结果为 1.2.3.4
};
zone "sina.com" IN {
type master;
file "sina.com.other"; -------> 解析结果为 1.2.3.4
};
};
扩展:
– A 记录分离解析 —— 以 www.tedu.cn 为例
– A 记录分离解析 —— 以 www.sina.com 为例
客户机来自 解析结果
192.168.4.207---www.tedu.cn--> 192.168.4.100
192.168.4.7---www.sina.com--> 192.168.4.200
其他地址 --www.tedu.cn---> 1.2.3.4
其他地址 --www.sina.com---> 1.2.3.4
view "nsd" {
match-clients { 192.168.4.207; };
zone "tedu.cn" IN {
type master;
file "tedu.cn.zone";
};
zone "sina.com" IN {
type master;
file "sina.com.other";
};
};
view "abc" {
match-clients { 192.168.4.7; };
zone "tedu.cn" IN {
type master;
file "tedu.cn.other";
};
zone "sina.com" IN {
type master;
file "sina.com.zone";
};
};
view "other" {
match-clients { any; };
zone "tedu.cn" IN {
type master;
file "tedu.cn.other";
};
zone "sina.com" IN {
type master;
file "sina.com.other";
};
};
acl 地址列表,类似于变量作
acl "test" { 192.168.4.207; 192.168.1.1; 192.168.2.1; 192.168.3.1; 192.168.7.0/24; };
view "nsd" {
match-clients { test; };
zone "tedu.cn" IN {
type master;
file "tedu.cn.zone";
};
zone "sina.com" IN {
type master;
file "sina.com.other";
};
};
view "abc" {
match-clients { test; };
zone "tedu.cn" IN {
type master;
file "tedu.cn.zone";
};
zone "sina.com" IN {
type master;
file "sina.com.other";
};
};
8.RAID 磁盘阵列
• 廉价冗余磁盘阵列
– 通过硬件/软件技术,将多个较小/低速的磁盘整合成一个大磁盘
– 阵列的价值:提升 I/O 效率、硬件级别的数据冗余
– 不同 RAID 级别的功能、特性各不相同
• RAID 0,条带模式
– 同一个文档分散存放在不同磁盘
– 并行写入以提高效率
– 至少需要两块磁盘组成
• RAID 1,镜像模式
– 一个文档复制成多份,分别写入不同磁盘
– 多份拷贝提高可靠性,效率无提升
– 至少需要两块磁盘组成
• RAID5,高性价比模式
– 相当于 RAID0 和 RAID1 的折中方案
– 需要至少一块磁盘的容量来存放校验数据
– 至少需要三块磁盘组成
• RAID6,高性价比/可靠模式
– 相当于扩展的 RAID5 阵列,提供 2 份独立校验方案
– 需要至少两块磁盘的容量来存放校验数据
– 至少需要四块磁盘组成
• RAID 0+1/RAID 1+0
– 整合 RAID 0、RAID 1 的优势
– 并行存取提高效率、镜像写入提高可靠性
– 至少需要四块磁盘组成
9.进程管理
程序: 静态的代码
占用磁盘空间
进程: 动态执行的代码
占用 CPU 内存
父进程/子进程
树型结构
僵尸进程 孤儿进程
进程唯一标识: PID 进程的编号
systemd:上帝进程,所有进程的父进程
查看进程树
• pstree — Processes Tree – 格式:pstree [选项] [PID 或用户名]
• 常用命令选项
– -a:显示完整的命令行
– -p:列出对应 PID 编号
[root@svr7 /]# pstree
[root@svr7 /]# useradd lisi
[root@svr7 /]# pstree lisi
bash───vim
[root@svr7 /]# pstree -a lisi
bash
└─vim a.txt
[root@svr7 /]# pstree -ap lisi
• ps aux 操作,信息全面
– 列出正在运行的所有进程
用户 进程 ID %CPU %内存 虚拟内存 固定内存 终端 状态 起始时间 CPU 时间 程序指令
• ps -elf 操作,有进程的父进程的 PID 值 – 列出正在运行的所有进程
PPID:父进程的 PID 号
统计正在运行的进程有多少?
[root@svr7 /]# ps aux
60[root@svr7 /]# ps aux | wc -l
[root@svr7 /]# ps -elf | wc -l
进程动态排名
• top 交互式工具 – 格式:top [-d 刷新秒数] [-U 用户名]
[root@svr7 /]# top -d 1
按 P(大写)可以进行 CPU 的排序
按 M(大写)可以进行内存的排序
load average: 0.00, 0.01, 0.05 #CPU 负载量
1 分 5 分钟 15 分钟
检索进程
• pgrep — Process Grep – 用途:pgrep [选项]... 查询条件
• 常用命令选项
– -l:输出进程名,而不仅仅是 PID
– -U:检索指定用户的进程
– -x:精确匹配完整的进程名
[root@svr7 /]# pgrep -l a
#检索所有进程名带 a 的
[root@svr7 /]# pgrep -lU lisi #检索 lisi 的所有进程
[root@svr7 /]# pstree -ap lisi #检索 lisi 的所有进程
进程的前后台调度
• 后台启动,正在运行放入后台 – 在命令行末尾添加“&”符号,不占用当前终端
• Ctrl + z 组合键 – 挂起当前进程(暂停并转入后台)
• jobs 命令 – 查看后台任务列表
• fg 命令 – 将后台任务恢复到前台运行
• bg 命令 – 激活后台被挂起的任务
[root@svr7 /]# sleep 9000 & #正在运行放入后台
[root@svr7 /]# jobs
#查看后台运行的进程
[root@svr7 /]# sleep 8000
^Z #输入 Ctrl+z 暂停放入后台
[2]+ 已停止
sleep 8000
[root@svr7 /]# jobs
[root@svr7 /]# bg 2
#将后台编号为 2 的进程继续运行
[root@svr7
sleep 9000
^C
[root@svr7
sleep 8000
/]# jobs
/]# fg 1 #将后台编号为 1 的进程恢复到前台
/]# jobs
/]# fg 2
#输入 Ctrl+C 结束
#将后台编号为 2 的进程恢复到前台
^C
[root@svr7 /]# jobs
#输入 Ctrl+C 结束
杀死进程
• 干掉进程的不同方法
– Ctrl+c 组合键,中断当前命令程序
– kill [-9] PID... 、kill [-9] %后台任务编号
– killall [-9] 进程名...
– pkill 查找条件
[root@svr7 /]# sleep 1000 &
[root@svr7 /]# jobs -l
[root@svr7 /]# kill 4013
#按照 PID 进行杀死
[root@svr7 /]# sleep 1000 &
[root@svr7 /]# jobs -l
[root@svr7 /]# kill -9 4015 #按照 PID 强制杀死
[root@svr7 /]# jobs -l
[root@svr7 /]# sleep 1000 &
[root@svr7 /]# jobs
[root@svr7 /]# killall sleep
#杀死所有 sleep 进程
杀死一个用户开启的所有进程(强制踢出一个用户)
[root@svr7 /]# killall -9 -u 用户名
10.日志管理
日志的功能
• 系统和程序的“日记本”
– 记录系统、程序运行中发生的各种事件
– 通过查看日志,了解及排除故障
– 信息安全控制的 依据
• 由系统服务 rsyslog 统一记录/管理
– 日志消息采用文本格式
– 主要记录事件发生的时间、主机、进程、内容
• 常见的日志文件
/var/log/messages 记录内核消息、各种服务的公共消息
/var/log/dmesg 记录系统启动过程的各种消息
/var/log/cron 记录与 cron 计划任务相关的消息
/var/log/maillog 记录邮件收发相关的消息
/var/log/secure 记录与访问限制相关的安全消息
日志分析
• 通用分析工具
– tail、tailf、less、grep 等文本浏览/检索命令
– awk、sed 等格式化过滤工具
tailf:实时跟踪日志消息
[root@svr7 /]# echo 123 > /opt/1.txt
[root@svr7 /]# cat /opt/1.txt
[root@svr7 /]# tailf /opt/1.txt
11.用户登录分析
• users、who、w 命令
– 查看已登录的用户信息,详细度不同
pts:图形命令行终端
• last、lastb 命令
– 查看最近登录成功/失败的用户信息
[root@svr7 /]# last -2 #最近登录的 2 条成功信息
[root@svr7 /]# lastb -2 #最近登录的 2 条失败信息
[root@svr7 /]# users #查看已登录的用户信息
[root@svr7 /]# who #查看已登录的用户信息
[root@svr7 /]# w #查看已登录的用户信息
12.日志消息的优先级
• Linux 内核定义的事件紧急程度
– 分为 0~7 共 8 种优先级别
– 其数值越小,表示对应事件越紧急/重要
0 EMERG(紧急) 会导致主机系统不可用的情况
1 ALERT(警告) 必须马上采取措施解决的问题
2 CRIT(严重) 比较严重的情况
3 ERR(错误) 运行出现错误
4 WARNING(提醒) 可能会影响系统功能的事件
5 NOTICE(注意) 不会影响系统但值得注意
6 INFO(信息) 一般信息
7 DEBUG(调试) 程序或系统调试信息等
使用 journalctl 工具
• 提取由 systemd-journal 服务搜集的日志
– 主要包括内核/系统日志、服务日志
• 常见用法
– journalctl | grep 关键词
– journalctl -u 服务名
[-p 优先级]
– journalctl -n 消息条数
– journalctl --since="yyyy-mm-dd HH:MM:SS" --
until="yyyy-mm-dd HH:MM:SS"
13.systemctl 控制
• Linux 系统和服务管理器
– systemd 是内核引导之后加载的第一个初始化进程(PID=1)
– 负责掌控整个 Linux 的运行/服务资源组合
systemd
• 一个更高效的系统&服务管理器
– 开机服务并行启动,各系统服务间的精确依赖
– 配置目录:/etc/systemd/system/
– 服务目录:/lib/systemd/system/
– 主要管理工具:systemctl
对于服务的管理
systemctl restart 服务名 #重起服务
systemctl start 服务名 #开启服务
systemctl stop 服务名 #停止服务
systemctl status 服务名 #查看服务当前的状态
systemctl enable 服务名 #设置服务开机自启动
systemctl disable 服务名 #设置服务不开机自启动
systemctl is-enabled 服务名 #查看是否为开机自启
RHEL6 运行级别
不同级别,开启的服务不同
0:关机
1:单用户模式(基本功能的实现,破解 Linux 密码)
2:多用户字符界面(不支持网络)
3:多用户字符界面(支持网络)服务器默认的运行级别
4:未定义
5:图形界面
6:重起
切换运行级别:init 5
RHEL7 运行模式
字符模式:multi-user.target
图形模式:graphical.target
[student@room9pc01 ~]$ rht-vmctl reset classroom #开启客户端机器
[student@room9pc01 ~]$ rht-vmctl reset server #开启server机器
[root@svr7 /]# ls -l /lib/systemd/system/
]# systemctl isolate multi-user.target = init 3 当前直接切换到字符模式
]# systemctl isolate graphical.target = init 5 当前直接切换到图形模式
[root@svr7 /]# systemctl get-default 查看每次开机默认进入模式
multi-user.target
设置永久策略,每次开机自动进入 graphical.target
]# systemctl set-default graphical.target
]# reboot
14.DNS 分离解析与 Web 结合
虚拟机 C:构建 Web 服务
[root@svr10 ~]# yum -y install httpd
[root@svr10 ~]# cat /etc/httpd/conf.d/nsd01.conf
<VirtualHost *:80>
ServerName www.qq.com
DocumentRoot /var/www/qq
</VirtualHost>
<VirtualHost *:80>
ServerName www.163.com
DocumentRoot /var/www/163
</VirtualHost>
[root@svr10 ~]# mkdir /var/www/qq /var/www/163
[root@svr10 ~]# echo '<h1>Web1 QQ' > /var/www/qq/index.html
[root@svr10 ~]# echo '<h1>Web1 163' > /var/www/163/index.html
[root@svr10 ~]# systemctl restart httpd
虚拟机 D 构建 Web 服务
[root@pc20 ~]# yum -y install httpd
[root@pc20 ~]# cat /etc/httpd/conf.d/nsd01.conf
<VirtualHost *:80>
ServerName www.qq.com
DocumentRoot /var/www/qq
</VirtualHost>
<VirtualHost *:80>
ServerName www.163.com
DocumentRoot /var/www/163
</VirtualHost>
[root@pc20 ~]# mkdir /var/www/qq /var/www/163
[root@pc20 ~]# echo '<h1>Web2 QQ' > /var/www/qq/index.html
[root@pc20 ~]# echo '<h1>Web2 163' > /var/www/163/index.html
[root@pc20 ~]# systemctl restart httpd
虚拟机 A 实现 DNS 分离解析
[root@svr7 /]# yum -y install bind bind-chroot
[root@svr7 /]# cat /etc/named.conf
options {
directory "/var/named";
};
view "nsd" {
match-clients { 192.168.4.7; };
zone "qq.com" IN {
type master;
file "qq.com.zone";
};
zone "163.com" IN {
type master;
file "163.com.zone";
};
};
view "other" {
match-clients { any; };
zone "qq.com" IN {
type master;
file "qq.com.other";
};
zone "163.com" IN {
type master;
file "163.com.other";
};
};
[root@svr7 /]# cat /var/named/qq.com.zone
qq.com. NS svr7
svr7 A 192.168.4.7
www A 192.168.4.10
[root@svr7 /]# cat /var/named/163.com.zone
163.com. NS svr7
svr7 A 192.168.4.7
www A 192.168.4.10
[root@svr7 /]# cat /var/named/qq.com.other
qq.com. NS svr7
svr7 A 192.168.4.7
www A 192.168.4.20
[root@svr7 /]# cat /var/named/163.com.other
163.com. NS svr7
svr7 A 192.168.4.7
www A 192.168.4.20
[root@svr7 /]# systemctl restart named
为四台虚拟机指定 DNS 服务器地址
[root@svr7 /]# echo nameserver 192.168.4.7 > /etc/resolv.conf
[root@pc207 ~]# echo nameserver 192.168.4.7 > /etc/resolv.conf
[root@svr10 ~]# echo nameserver 192.168.4.7 > /etc/resolv.conf
echo nameserver 192.168.4.7 > /etc/resolv.conf
30.部署 DHCP 服务器
• Dynamic Host Configuration Protocol
– 动态主机配置协议,由 IETF(Internet 网络工程师任
务小组)组织制定,用来简化主机地址分配管理
• 主要分配以下入网参数
– IP 地址/子网掩码/广播地址
– 默认网关地址、DNS 服务器地址
• DHCP 地址分配的四次会话,以广播进行,先到先得
– DISCOVERY --> OFFER --> REQUEST -->ACK
一个网络中,只能有一台 DHCP 服务器
• 服务端基本概念
– 租期:允许客户机租用 IP 地址的时间期限,单位为秒
– 作用域:分配给客户机的 IP 地址所在的网段
– 地址池:用来动态分配的 IP 地址的范围
虚拟机 A:
1.安装软件包 dhcp
[root@svr7 /]# yum -y install dhcp
2.修改配置文件
[root@svr7 /]# vim /etc/dhcp/dhcpd.conf
:r /usr/share/doc/dhcp*/dhcpd.conf.example
subnet 192.168.4.0 netmask 255.255.255.0 { #分配网段
range 192.168.4.100 192.168.4.200; #分配 IP 地址范围
option domain-name-servers 192.168.4.7; #分配 DNS 地址
option routers 192.168.4.254; #网关地址
default-lease-time 600;
max-lease-time 7200;
}
3.重启服务
[root@svr7 /]# systemctl restart dhcpd
31. rsync同步操作
rsync概述
* Remote Sync远程同步
-- 支持本地复制,或与其他SSH,rsync主机同步
-- 官方网站: http://rsync.samba.org
rsync同步操作
-- rsync [选项...] 源目录 目标目录
同步与复制的差异
-- 复制:完全拷贝源到目录
-- 同步: 增量拷贝,只传输变化过的数据
本地同步
-- rsync [选项...] 本地目录1 本地目录2
-- rsync [选项...] 本地目录1/ 本地目录2
[root@sr7]# makdir /todir
[root@sr7]# rsync -a /boot /todir #同步整个文件夹
[root@sr7]# rsync -a /boot/ /todir #只同步目录下的数据
rsync 操作选项
-- -n:测试同步过程,不做实际修改
-- --delete : 删除目标文件夹多余文档
-- -a : 归档模式
-- -v : 显示详细操作信息
-- -z : 传输过程中启动压缩/解压
rsync+SSH同步
用法及服务端要求
* 列出SSH服务资源
-- rsync user@host:远程目录/
* 与远程SSH目录保持同步
-- 下行: rsync [...] user@host:远程目录 本地目录
-- 上行 : rsync [...] 本地目录 user@host:远程目录
* 服务端要求
-- 开启sshd服务,并提供授权的用户密码
1)从远程主机svr7下载/etc/passwd文件到当前目录
[root@pc207 ~]# rsync root@192.168.4.7:/etc/passwd ./
root@192.168.4.7's password: //验证对方的密码
[root@pc207 ~]# cat passwd //检查同步结果
2)将远程主机svr7的/boot/目录同步为本地的/fromssh
[root@pc207 ~]# rsync -a root@192.168.4.7:/boot/ /fromssh
root@192.168.4.7's password: //验证对方的密码
[root@pc207 ~]# ls /fromssh/ //检查同步结果
3 案例3:使用inotifywait工具
3.1 问题
本例要求安装inotify-tools工具,并针对文件夹 /opt 启用 inotifywait 监控,完成下列任务:
当此目录下出现新建、修改、更改权限、删除文件等事件时能给出提示
验证上述监控事件的效果
3.2 方案
inotifywait监控操作:
inotifywait [选项] 目标文件夹
inotifywait常用命令选项:
-m,持续监控(捕获一个事件后不退出)
-r,递归监控、包括子目录及文件
-q,减少屏幕输出信息
-e,指定监视的 modify、move、create、delete、attrib 等事件类别
3.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:安装inotify-tools软件包
1)解包
[root@svr7 ~]# tar xf inotify-tools-3.13.tar.gz -C /usr/src/
2)配置
[root@svr7 ~]# cd /usr/src/inotify-tools-3.13/
[root@svr7 inotify-tools-3.13]# ./configure
3)编译
[root@svr7 inotify-tools-3.13]# make
4)安装
[root@svr7 inotify-tools-3.13]# make
5)检查安装结果(inotifywait程序可用)
[root@svr7 ~]# inotifywait --help
inotifywait 3.13
Wait for a particular event on a file or set of files.
Usage: inotifywait [ options ] file1 [ file2 ] [ file3 ] [ ... ]
Options:
-h|--help Show this help text.
.. ..
步骤二:测试inotifywait监控
1)开启监控任务,置入后台
[root@svr7 ~]# inotifywait -mrq -e create,modify,move,attrib,delete /opt &
[1] 55564
2)测试/opt/目录下的新建、修改、改名、更改权限、删除文件等事件的响应消息
观察新建文件时的监控信息:
[root@svr7 ~]# touch /opt/a.txt
/opt/ CREATE a.txt
/opt/ ATTRIB a.txt
观察修改文件内容时的监控信息:
[root@svr7 ~]# echo Hello > /opt/a.txt
[root@svr7 ~]# /opt/ MODIFY a.txt
/opt/ MODIFY a.txt
观察将文件改名时的监控信息:
[root@svr7 ~]# mv /opt/a.txt /opt/b.txt
/opt/ MOVED_FROM a.txt
/opt/ MOVED_TO b.txt
观察修改文件权限时的监控信息:
[root@svr7 ~]# chmod 600 /opt/b.txt
/opt/ ATTRIB b.txt
观察删除文件时的监控信息:
[root@svr7 ~]# rm -rf /opt/b.txt
/opt/ DELETE b.txt
3)停止监控任务
[root@svr7 ~]# kill -9 %1
[1]+ 已杀死 inotifywait -mr -e create,modify,move,attrib,delete /opt
4 案例4:配置Web镜像同步
4.1 问题
本例要求为两台Web服务器svr7、pc207的网页文档目录配置镜像同步,主要基于inotifywait监控技术实现实时触发操作,需要完成下列任务:
以 svr7 为发起方,原始目录为 /var/www/html/
以 pc207 为同步目标,基于SSH免密验证
编写 inotify+rsync 同步脚本,验证实时同步效果
4.2 方案
inotifywait与rsync的结合,主要思路:
while inotifywait监控操作
do
需要执行的rsync同步操作
done
4.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:为主机svr7、pc207部署同步目录
双方的目录均为/var/www/html/,如果安装了httpd,此目录会自动出现。
1)确认svr7的目录内容
[root@svr7 ~]# yum -y install httpd
[root@svr7 ~]# ls /var/www/html/ //向目录下提供一些测试文件
libreoffice
2)确认pc207的目录内容
[root@pc207 ~]# yum -y install httpd
[root@pc207 ~]# ls /var/www/html //初始目录无数据
步骤二:为svr7配置到pc207的SSH密钥对验证,实现免密码交互
1)检查当前用户是否已经有可用的SSH密钥对文件
[root@svr7 ~]# ls ~/.ssh/id_*
/root/.ssh/id_rsa /root/.ssh/id_rsa.pub
如果找不到id_rsa、id_rsa.pub密钥对文件,则需要执行下列操作创建:
[root@svr7 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): //按回车,确认存放位置
Enter passphrase (empty for no passphrase): //按回车,确认不要密码
Enter same passphrase again: //再次按回车,确认
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
00:a7:cb:2d:9d:b8:8a:df:f5:ff:5b:ed:bd:04:10:fe root@svr7
The key's randomart image is:
+--[ RSA 2048]----+
| . . . |
| + . . |
| . . o |
| . = o o |
| = + S E |
| o .. |
| . . ...|
| . o . . ....|
|..o . ....o. .+|
+-----------------+
2)将当前用户的SSH公钥部署到远程主机
[root@svr7 ~]# ssh-copy-id root@192.168.4.207
The authenticity of host '192.168.4.207 (192.168.4.207)' can't be established.
ECDSA key fingerprint is d3:16:2c:9a:9d:91:28:c8:74:9c:af:2d:04:82:c9:66.
Are you sure you want to continue connecting (yes/no)? yes //首次连yes确认
root@192.168.4.207's password: //验证对方的密码
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@192.168.4.207'"
and check to make sure that only the key(s) you wanted were added.
3)验证免密码登录效果
[root@svr7 ~]# ssh root@192.168.4.207
Last login: Fri Jan 13 09:52:08 2017 from 192.168.4.110
[root@pc207 ~]# //确认已免密码连入远程主机
[root@pc207 ~]# exit //退出SSH登录环境
登出
Connection to 192.168.4.207 closed.
[root@svr7 ~]# //已反对原客户机
步骤三:编写镜像同步脚本并测试效果
1)编写脚本文件/root/isync.sh
[root@svr7 ~]# vim /root/isync.sh
#!/bin/bash
FROM_DIR="/var/www/html/"
RSYNC_CMD="rsync -az --delete $FROM_DIR root@192.168.4.207:/var/www/html"
while inotifywait -rqq -e modify,move,create,delete,attrib $FROM_DIR
do
$RSYNC_CMD
done &
[root@svr7 ~]# chmod +x /root/isync.sh
2)运行脚本
[root@svr7 ~]# /root/isync.sh
[root@svr7 ~]# pgrep -l inotify //确认任务在运行
56494 inotifywait
3)测试同步效果
在svr7上向/var/www/html/目录下添加一个测试网页(触发同步):
[root@svr7 ~]# touch /var/www/html/a.txt
[root@svr7 ~]# ls /var/www/html/
a.txt libreoffice
在pc207上检查/var/www/html/目录,内容应该已经与svr7上的同名目录一致:
[root@pc207 ~]# ls /var/www/html
a.txt libreoffice
4)结束测试后,在svr7上停止监控任务
[root@svr7 ~]# pkill -9 inotify
[root@svr7 ~]# pgrep -l inotify //确认已没有监控任务