云计算之走进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:使用inotifywait工具

3.1 问题

本例要求安装inotify-tools工具,并针对文件夹 /opt 启用 inotifywait 监控,完成下列任务:

当此目录下出现新建、修改、更改权限、删除文件等事件时能给出提示

验证上述监控事件的效果

3.2 方案

inotifywait监控操作:

inotifywait [选项目标文件夹

inotifywait常用命令选项:

-m,持续监控(捕获一个事件后不退出)

-r,递归监控、包括子目录及文件

-q,减少屏幕输出信息

-e,指定监视的 modifymovecreatedeleteattrib 等事件类别

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:配置Web镜像同步

4.1 问题

本例要求为两台Web服务器svr7pc207的网页文档目录配置镜像同步,主要基于inotifywait监控技术实现实时触发操作,需要完成下列任务:

以 svr7 为发起方,原始目录为 /var/www/html/

以 pc207 为同步目标,基于SSH免密验证

编写 inotify+rsync 同步脚本,验证实时同步效果

4.2 方案

inotifywaitrsync的结合,主要思路:

while  inotifywait监控操作

do

        需要执行的rsync同步操作

done

4.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:为主机svr7pc207部署同步目录

双方的目录均为/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配置到pc207SSH密钥对验证,实现免密码交互

1)检查当前用户是否已经有可用的SSH密钥对文件

[root@svr7 ~]# ls  ~/.ssh/id_*

/root/.ssh/id_rsa  /root/.ssh/id_rsa.pub

如果找不到id_rsaid_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                     //确认已没有监控任务

    

 







 

 

 

posted @ 2019-10-20 20:52  比特边界  阅读(198)  评论(0编辑  收藏  举报