Linux高效运维实战

本书特色

[

本书以实际生产环境为背景,以实操为主,系统、全面地讲解了Linux运维人员必须掌握的运维知识。通过本书,读者不仅可以掌握必需的专业知识,还可具备实际解决问题的能力。 全书分为5篇,共有15章。第1篇(第1~3章)是Web、数据库运维篇,主要介绍了Web运维和数据库运维的实战技能。第2篇(第4~5章)是运维监控篇,主要介绍了企业常用的运维监控工具。第3篇(第6~8章)是集群架构篇,主要介绍了3款开源集群软件。第4篇(第9~11章)是线上服务器安全、调优、自动化运维篇,主要讲述生产环境中服务器的运维、调优、安全防范技巧。第5篇(第12~15章)是虚拟化、大数据运维篇,主要讲解了KVM、ELK和Hadoop等工具的相关知识。 本书适合希望系统、全面学习Linux运维技术的读者阅读,也适合初/中级Linux运维人员、Linux系统运维工程师、大数据运维工程师、运维开发工程师等参考。

]

内容简介

[

本书以实际生产环境为背景,以实操为主,系统、全面地讲解了Linux运维人员必须掌握的运维知识。通过本书,读者不仅可以掌握必需的专业知识,还可具备实际解决问题的能力。
全书分为5篇,共有15章。篇(~3章)是Web、数据库运维篇,主要介绍了Web运维和数据库运维的实战技能。第2篇(第4~5章)是运维监控篇,主要介绍了企业常用的运维监控工具。第3篇(第6~8章)是集群架构篇,主要介绍了3款开源集群软件。第4篇(第9~11章)是线上服务器安全、调优、自动化运维篇,主要讲述生产环境中服务器的运维、调优、安全防范技巧。第5篇(2~15章)是虚拟化、大数据运维篇,主要讲解了KVM、ELK和Hadoop等工具的相关知识。
本书适合希望系统、全面学习Linux运维技术的读者阅读,也适合初/中级Linux运维人员、Linux系统运维工程师、大数据运维工程师、运维开发工程师等参考。

]

作者简介

[

高俊峰 Linux资深技术专家,知名IT作家,51CTO专家博主,曾就职于新浪、阿里云等企业,任职系统架构师;具有多年的自动化运维和管理经验,擅长Linux、集群架构、HADOOP大数据等方面的系统运维、性能调优和规划设计;畅销图书《循序渐进Linux》《高性能Linux服务器构建实战》的作者。

]

目录

目  录第1篇 Web、数据库运维篇第1章 高效Web服务器Nginx 21.1 为什么选择Nginx 21.2 安装和配置Nginx 31.2.1 安装Nginx 31.2.2 Nginx配置文件解读 51.3 Nginx的管理与维护 91.3.1 Nginx基本信息检查 91.3.2 Nginx的启动、关闭与重启 101.4 Nginx常见应用实例 111.4.1 Nginx中location应用实例 111.4.2 Nginx反向代理应用实例 121.4.3 Nginx中URL的重写功能以及内置变量 151.4.4 Nginx中虚拟主机配置实例 191.4.5 Nginx中负载均衡的配置实例 201.4.6 Nginx中HTTPS配置的实例 211.5 LNMP应用架构以及部署 251.5.1 LNMP简介 251.5.2 Nginx的安装 261.5.3 MySQL的安装 261.5.4 PHP的安装 301.5.5 Nginx下PHP-FPM的配置 321.5.6 测试LNMP安装是否正常 351.6 Nginx Tomcat架构与应用案例 361.6.1 Nginx Tomcat整合的必要性 361.6.2 Nginx Tomcat动静分离配置实例 371.6.3 Nginx Tomcat多Tomcat负载均衡配置实例 38第2章 高效Web服务器Apache 392.1 LAMP服务套件 392.1.1 LAMP概述 392.1.2 LAMP服务环境的搭建 392.1.3 测试LAMP环境安装的正确性 452.1.4 在LAMP环境下部署phpMyAdmin工具 452.1.5 在LAMP环境下部署WordPress应用 462.2 Apache的基础配置 482.2.1 Apache的目录结构 482.2.2 Apache配置文件 492.3 Apache常见功能应用实例 572.3.1 Apache下HTTPS配置实例 572.3.2 反向代理功能实例 582.4 Apache MPM模式与基础调优 622.4.1 MPM模式概述 622.4.2 prefork MPM模式 622.4.3 worker MPM模式 632.4.4 event MPM模式 642.5 Apache集成Tomcat构建高效JAVA Web应用 652.5.1 Apache与Tomcat整合的必要性 662.5.2 Apache和Tomcat连接器 662.5.3 Apache、Tomcat和JK模块的安装 672.5.4 Apache与Tomcat整合配置 68第3章 企业常见MySQL架构应用实战 743.1 选择Percona Server、MariaDB还是MYSQL 743.1.1 MySQL官方发行版 743.1.2 MySQL与存储引擎 743.1.3 Percona Server for MySQL分支 753.1.4 MariaDB Server 753.1.5 如何选择 753.2 MySQL命令操作 763.2.1 连接MySQL 763.2.2 修改密码 763.2.3 增加新用户/授权用户 763.2.4 数据库基础操作 773.2.5 MySQL表操作 783.2.6 备份数据库 793.3 MySQL备份恢复工具XtraBackup 803.3.1 安装XtraBackup工具包 803.3.2 XtraBackup工具介绍 813.3.3 xtrabackup备份恢复实现原理 813.3.4 innobackupex工具的使用 813.3.5 利用innobackupex进行MySQL全备份 823.3.6 利用innobackupex完全恢复数据库 833.3.7 XtraBackup针对海量数据的备份优化 843.3.8 完整的MySQL备份恢复例子 853.4 常见的高可用MySQL解决方案 863.4.1 主从复制解决方案 863.4.2 MMM高可用解决方案 863.4.3 Heartbeat/SAN高可用解决方案 873.4.4 Heartbeat/DRBD高可用解决方案 873.4.5 MySQL Cluster高可用解决方案 873.5 通过Keepalived搭建MySQL双主模式的高可用集群系统 873.5.1 MySQL Replication介绍 883.5.2 MySQL Replication实现原理 893.5.3 MySQL Replication常用架构 893.5.4 MySQL主主互备模式架构图 903.5.5 MySQL主主互备模式配置 913.5.6 配置Keepalived实现MySQL双主高可用 953.5.7 测试MySQL主从同步功能 973.5.8 测试Keepalived实现MySQL故障转移 993.6 MySQL集群架构MHA应用实战 1003.6.1 MHA的概念和原理 1013.6.2 MHA套件的组成和恢复过程 1023.6.3 安装MHA套件 1023.6.4 配置MHA集群 1063.6.5 测试MHA环境以及常见问题总结 1113.6.6 启动与管理MHA 1133.6.7 MHA集群切换测试 1143.7 MySQL中间件ProxySQL 1173.7.1 ProxySQL简介 1173.7.2 ProxySQL的下载与安装 1173.7.3 ProxySQL的目录结构 1183.7.4 ProxySQL库表功能介绍 1183.7.5 ProxySQL的运行机制 1203.7.6 在ProxySQL下添加与修改配置 1213.8 ProxySQL MHA构建高可用MySQL读写分离架构 1233.8.1 ProxySQL MHA应用架构 1233.8.2 部署环境说明 1233.8.3 配置后端MySQL 1243.8.4 配置后端MySQL用户 1243.8.5 在ProxySQL中添加程序账号 1253.8.6 加载配置和变量 1253.8.7 连接数据库并写入数据 1263.8.8 定义路由规则 1263.8.9 ProxySQL整合MHA实现高可用 128 第2篇 运维监控篇第4章 运维监控利器Zabbix 1304.1 Zabbix运行架构 1304.1.1 Zabbix应用组件 1314.1.2 Zabbix服务进程 1314.1.3 Zabbix监控术语 1324.2 安装、部署Zabbix监控平台 1334.2.1 LNMP环境部署 1344.2.2 编译安装Zabbix Server 1374.2.3 创建数据库和初始化表 1384.2.4 配置Zabbix Server端 1384.2.5 安装与配置Zabbix Agent 1404.2.6 安装Zabbix GUI 1414.2.7 测试Zabbix Server监控 1444.3 Zabbix Web配置详解 1444.3.1 模板的管理与使用 1444.3.2 创建应用集 1454.3.3 创建监控项 1464.3.4 创建触发器 1494.3.5 创建主机组和主机 1524.3.6 触发器动作配置 1544.3.7 报警媒介类型配置 1574.3.8 监控状态查看 1584.4 Zabbix自定义监控项 1604.4.1 Zabbix Agent端开启自定义监控项功能 1604.4.2 让监控项接收参数 1604.5 Zabbix的主动模式与被动模式 1614.6 自动发现与自动注册 1624.7 Zabbix运维监控实战案例 1684.7.1 Zabbix监控MySQL应用实战 1684.7.2 Zabbix监控Apache应用实战 1744.7.3 Zabbix监控Nginx应用实战 1784.7.4 Zabbix监控PHP-FPM应用实战 1824.7.5 Zabbix监控Tomcat应用实战 1884.7.6 Zabbix监控Redis实例应用实战 193第5章 分布式监控系统Ganglia 2015.1 Ganglia简介 2015.2 Ganglia的组成 2015.3 Ganglia的工作原理 2035.3.1 Ganglia数据流向分析 2035.3.2 Ganglia工作模式 2045.4 Ganglia的安装 2045.4.1 yum源安装方式 2045.4.2 源码方式 2055.5 配置一个Ganglia分布式监控系统 2075.5.1 Ganglia配置文件介绍 2075.5.2 Ganglia监控系统架构图 2075.5.3 Ganglia监控管理端配置 2075.5.4 Ganglia的客户端配置 2085.5.5 Ganglia的Web端配置 2095.6 Ganglia监控系统的管理和维护 2105.7 Ganglia监控扩展实现机制 2115.7.1 扩展Ganglia监控功能的方法 2115.7.2 通过gmetric接口扩展Ganglia监控 2125.7.3 通过Python插件扩展Ganglia监控 2135.7.4 实战:利用Python接口监控Nginx运行状态 2145.8 Ganglia在实际应用中要考虑的问题 2175.8.1 网络IO可能存在瓶颈 2175.8.2 CPU可能存在瓶颈 2175.8.3 gmetad rrd数据写入可能存在瓶颈 217 第3篇 集群架构篇第6章 高性能集群软件Keepalived 2206.1 集群的定义 2206.2 集群的特点与功能 2216.2.1 高可用性与可扩展性 2216.2.2 负载均衡与错误恢复 2216.2.3 心跳检测与漂移IP 2216.3 集群的分类 2226.3.1 高可用集群 2226.3.2 负载均衡集群 2236.3.3 分布式计算集群 2246.4 HA集群中的相关术语 2256.5 Keepalived简介 2256.5.1 Keepalived的用途 2266.5.2 VRRP协议与工作原理 2266.5.3 Keepalived工作原理 2276.5.4 Keepalived的体系结构 2276.6 Keepalived安装与配置 2296.6.1 Keepalived的安装过程 2296.6.2 Keepalived的全局配置 2306.6.3 Keepalived的VRRPD配置 2316.6.4 Keepalived的LVS配置 2346.7 Keepalived基础功能应用实例 2376.7.1 Keepalived基础HA功能演示 2376.7.2 通过VRRP_script实现对集群资源的监控 243第7章 高性能负载均衡集群LVS 2477.1 LVS简介 2477.2 LVS体系结构 2477.3 IP负载均衡与负载调度算法 2487.3.1 IP负载均衡技术 2497.3.2 负载均衡机制 2497.3.3 LVS负载调度算法 2557.3.4 适用环境 2567.4 LVS的安装与使用 2567.4.1 安装IPVS管理软件 2577.4.2 ipvsadm的用法 2577.5 通过Keepalived搭建LVS高可用性集群系统 2587.5.1 实例环境 2587.5.2 配置Keepalived 2597.5.3 配置Real Server节点 2617.5.4 启动Keepalived LVS集群系统 2637.6 测试高可用LVS负载均衡集群系统 2637.6.1 高可用性功能测试 2637.6.2 负载均衡测试 2647.6.3 故障切换测试 2647.7 LVS经常使用的集群网络架构 2657.7.1 内网集群,外网映射VIP 2657.7.2 全外网LVS集群环境 266第8章 高性能负载均衡软件HAProxy 2688.1 高性能负载均衡软件HAProxy 2688.1.1 HAProxy简介 2688.1.2 四层和七层负载均衡的区别 2698.1.3 HAProxy与LVS的异同 2708.2 HAProxy基础配置与应用实例 2708.2.1 快速安装HAProxy集群软件 2718.2.2 HAProxy基础配置文件详解 2718.2.3 通过HAProxy的ACL规则实现智能负载均衡 2778.2.4 管理与维护HAProxy 2798.2.5 使用HAProxy的Web监控平台 2828.3 搭建HAProxy Keepalived高可用负载均衡系统 2838.3.1 搭建环境描述 2838.3.2 配置HAProxy负载均衡服务器 2848.3.3 配置主、备Keepalived服务器 2868.4 测试HAProxy Keepalived高可用负载均衡集群 2898.4.1 测试Keepalived的高可用功能 2898.4.2 测试负载均衡功能 290第4篇 线上服务器安全、调优、自动化运维篇第9章 线上服务器安全运维 2929.1 账户和登录安全 2929.1.1 删除特殊的账户和账户组 2929.1.2 关闭系统不需要的服务 2939.1.3 密码安全策略 2949.1.4 合理使用su、sudo命令 2999.1.5 删减系统登录欢迎信息 3009.1.6 禁止Control-Alt-Delete键盘关闭命令 3019.2 远程访问和认证安全 3019.2.1 采用SSH方式而非telnet方式远程登录系统 3019.2.2 合理使用shell历史命令记录功能 3039.2.3 启用Tcp_Wrappers防火墙 3059.3 文件系统安全 3079.3.1 锁定系统重要文件 3079.3.2 文件权限检查和修改 3099.3.3 /tmp、/var/tmp、/dev/shm安全设定 3099.4 系统软件安全管理 3119.4.1 软件自动升级工具yum 3119.4.2 yum的安装与配置 3119.4.3 yum的特点与基本用法 3139.4.4 几个不错的yum源 3159.5 Linux后门入侵检测与安全防护工具 3169.5.1 rootkit后门检测工具RKHunter 3179.5.2 Linux安全防护工具ClamAV的使用 3209.5.3 Linux.BackDoor.Gates.5(文件级别rootkit)网络带宽攻击案例 3229.6 服务器遭受攻击后的处理过程 3269.6.1 处理服务器遭受攻击的一般思路 3269.6.2 检查并锁定可疑用户 3279.6.3 查看系统日志 3289.6.4 检查并关闭系统可疑进程 3299.6.5 检查文件系统的完好性 3299.7 云服务器被植入挖矿病毒案例实录以及Redis安全防范 3309.7.1 问题现象 3309.7.2 分析问题 3319.7.3 问题解决 3369.7.4 深入探究Redis是如何被植入 338第10章 线上服务器性能调优案例 34610.1 线上Linux服务器基础优化策略 34610.1.1 系统基础配置与调优 34610.1.2 系统安全与防护策略 35110.1.3 系统内核参数调优 35510.2 系统性能调优规范以及对某电商平台优化分析案例 35810.2.1 CPU性能评估以及相关工具 35810.2.2 内存性能评估以及相关工具 36010.2.3 磁盘I/O性能评估以及相关工具 36110.2.4 网络性能评估以及相关工具 36310.2.5 系统性能分析标准 36610.2.6 动态、静态内容结合的电商网站优化案例 36610.3 一次Java进程占用CPU过高问题的排查方法与案例分析 37610.3.1 案例故障描述 37610.3.2 Java中进程与线程的概念 37710.3.3 排查Java进程占用CPU过高的思路 37810.3.4 Tomcat配置调优 38310.3.5 Tomcat Connector 3种运行模式(BIO、NIO、APR)的比较与优化 385第11章 自动化运维工具Ansible 39111.1 Ansible的安装 39111.2 Ansible的架构与运行原理 39211.3 Ansible主机和组的配置 39411.4 ansible.cfg与默认配置 39611.5 Ad-Hoc与command模块 39611.5.1 Ad-Hoc是什么 39611.5.2 command模块 39711.5.3 shell模块 39811.5.4 raw模块 39811.5.5 script模块 39911.6 Ansible其他常用功能模块 39911.6.1 ping模块 39911.6.2 file模块 40011.6.3 copy模块 40111.6.4 service模块 40211.6.5 cron模块 40211.6.6 yum模块 40311.6.7 user模块与group模块 40411.6.8 synchronize模块 40511.6.9 setup模块 40511.6.10 get_url模块 40611.7 ansible-playbook简单使用 40611.7.1 剧本简介 40611.7.2 剧本文件的格式 40611.7.3 剧本的构成 40711.7.4 剧本执行结果解析 40811.7.5 ansible-playbook收集facts信息案例 40911.7.6 两个完整的ansible-playbook案例 410 第5篇 虚拟化、大数据运维篇第12章 KVM虚拟化技术与应用 41412.1 KVM虚拟化架构 41412.1.1 KVM与QEMU 41412.1.2 KVM虚拟机管理工具 41412.1.3 宿主机与虚拟机 41512.2 VNC的安装与使用 41512.2.1 启动VNC Server 41512.2.2 重启VNC Server 41512.2.3 客户端连接 41612.3 查看硬件是否支持虚拟化 41612.4 安装KVM内核模块和管理工具 41612.4.1 安装KVM内核 41712.4.2 安装virt管理工具 41712.4.3 加载KVM内核 41712.4.4 查看内核是否开启 41712.4.5 KVM管理工具服务相关 41712.5 宿主机网络配置 41812.5.1 建立桥接器 41812.5.2 配置桥接设备 41812.5.3 重启网络服务 41912.6 使用KVM技术安装虚拟机 41912.7 虚拟机复制 42112.7.1 本机复制 42112.7.2 控制台管理虚拟机 42212.7.3 虚拟机的迁移 42212.8 KVM虚拟化常用管理命令 42312.8.1 查看KVM虚拟机配置文件及运行状态 42312.8.2 KVM虚拟机开机 42312.8.3 KVM虚拟机关机或断电 423第13章 ELK大规模日志实时处理系统应用实战 42613.1 ELK架构介绍 42613.1.1 核心组成 42613.1.2 Elasticsearch介绍 42613.1.3 Logstash介绍 42713.1.4 Kibana介绍 42813.1.5 ELK工作流程 42813.2 ZooKeeper基础与入门 42913.2.1 ZooKeeper概念介绍 42913.2.2 ZooKeeper应用举例 43013.2.3 ZooKeeper工作原理 43013.2.4 ZooKeeper集群架构 43113.3 Kafka基础与入门 43213.3.1 Kafka基本概念 43213.3.2 Kafka术语 43213.3.3 Kafka拓扑架构 43313.3.4 主题与分区 43413.3.5 生产者生产机制 43413.3.6 消费者消费机制 43413.4 Filebeat基础与入门 43513.4.1 什么是Filebeat 43513.4.2 Filebeat架构与运行原理 43513.5 ELK常见应用架构 43613.5.1 *简单的ELK架构 43613.5.2 典型ELK架构 43713.5.3 ELK集群架构 43813.6 用ELK Filebeat Kafka ZooKeeper构建大数据日志分析平台 43813.6.1 典型ELK应用架构 43913.6.2 环境与角色说明 43913.6.3 安装JDK并设置环境变量 44013.6.4 安装并配置Elasticsearch集群 44113.6.5 安装并配置ZooKeeper集群 45013.6.6 安装并配置Kafka Broker集群 45213.6.7 安装并配置Filebeat 45713.6.8 安装并配置Logstash服务 46013.6.9 安装并配置Kibana展示日志数据 46613.6.10 调试并验证日志数据流向 47013.7 Logstash配置语法详解 47213.7.1 Logstash基本语法组成 47213.7.2 Logstash输入插件 47213.7.3 Logstash编码插件(codec) 47613.7.4 Logstash过滤插件 47713.7.5 Logstash输出插件 48813.8 ELK收集Apache访问日志实战案例 48913.8.1 ELK收集日志的几种方式 49013.8.2 ELK收集Apache访问日志的应用架构 49013.8.3 Apache的日志格式与日志变量 49113.8.4 自定义Apache日志格式 49213.8.5 验证日志输出 49213.8.6 配置Filebeat 49313.8.7 配置Logstash 49413.8.8 配置Kibana 49613.9 ELK收集Nginx访问日志实战案例 49813.9.1 ELK收集Nginx访问日志应用架构 49813.9.2 Nginx的日志格式与日志变量 49913.9.3 自定义Nginx日志格式 50013.9.4 验证日志输出 50113.9.5 配置Filebeat 50113.9.6 配置Logstash 50213.9.7 配置Kibana 50413.10 通过ELK收集MySQL慢查询日志数据 50513.10.1 开启慢查询日志 50513.10.2 慢查询日志分析 50913.10.3 配置Filebeat收集MySQL慢查询日志 51013.10.4 通过Logstash的grok插件过滤、分析MySQL配置日志 51113.10.5 通过Kibana创建MySQL慢查询日志索引 51313.11 通过ELK收集Tomcat访问日志和状态日志 51513.11.1 Tomcat日志解析 51513.11.2 配置Tomcat的访问日志和运行状态日志 51613.11.3 配置Filebeat 51813.11.4 通过Logstash的grok插件过滤、分析Tomcat配置日志 51913.11.5 配置Zabbix输出并告警 52113.11.6 通过Kibana平台创建Tomcat访问日志索引 522第14章 高可用分布式集群Hadoop部署全攻略 52414.1 Hadoop生态圈知识 52414.1.1 Hadoop生态概况 52414.1.2 HDFS 52514.1.3 MapReduce(分布式计算框架)离线计算 52514.1.4 HBase(分布式列存数据库) 52514.1.5 ZooKeeper(分布式协作服务) 52614.1.6 Hive(数据仓库) 52614.1.7 Pig(ad-hoc脚本) 52714.1.8 Sqoop(数据ETL/同步工具) 52714.1.9 Flume(日志收集工具) 52714.1.10 Oozie(工作流调度器) 52714.1.11 YARN(分布式资源管理器) 52714.1.12 Spark(内存DAG计算模型) 52914.1.13 Kafka(分布式消息队列) 52914.2 Hadoop的伪分布式部署 52914.2.1 Hadoop发行版介绍 52914.2.2 CDH发行版本 53014.2.3 CDH与操作系统的依赖 53014.2.4 伪分布式安装Hadoop 53014.2.5 使用Hadoop HDFS命令进行分布式存储 53414.2.6 在Hadoop中运行MapReduce程序 53414.3 高可用Hadoop2.x体系结构 53514.3.1 两个NameNode的地位关系 53514.3.2 通过JournalNode保持NameNode元数据的一致性 53514.3.3 NameNode的自动切换功能 53614.3.4 高可用Hadoop集群架构 53614.3.5 JournalNode集群 53714.3.6 ZooKeeper集群 53814.4 部署高可用的Hadoop大数据平台 53814.4.1 安装配置环境介绍 53914.4.2 ZooKeeper安装过程 53914.4.3 Hadoop的安装 54014.4.4 分布式Hadoop的配置 54214.5 Hadoop集群启动过程 54814.5.1 检查各个节点的配置文件的正确性 54914.5.2 启动ZooKeeper集群 54914.5.3 格式化ZooKeeper集群 54914.5.4 启动JournalNode 54914.5.5 格式化集群NameNode 55014.5.6 启动主节点的NameNode服务 55014.5.7 NameNode主、备节点同步元数据 55014.5.8 启动备机上的NameNode服务 55114.5.9 启动ZKFC 55114.5.10 启动DataNode服务 55214.5.11 启动ResourceManager和NodeManager服务 55214.5.12 启动HistoryServer服务 55214.6 Hadoop日常运维问题总结 55314.6.1 下线DataNode 55314.6.2 DataNode磁盘出现故障 55414.6.3 安全模式导致的错误 55514.6.4 NodeManager出现Java heap space 55514.6.5 Too many fetch-failures错误 55514.6.6 Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out错误 55514.6.7 java.net.NoRouteToHostException: No route to host错误 55614.6.8 新增DataNode 556第15章 分布式文件系统HDFS与分布式计算YARN 55815.1 分布式文件系统HDFS 55815.1.1 HDFS结构与架构 55815.1.2 名字节点工作机制 55915.1.3 二级名字节点工作机制 56015.1.4 HDFS运行机制以及数据存储单元(block) 56115.1.5 HDFS写入数据流程解析 56215.1.6 HDFS读取数据流程解析 56315.2 MapReduce与YARN的工作机制 56415.2.1 **代Hadoop组成与结构 56415.2.2 第二代Hadoop组成与结构 566

封面

Linux高效运维实战

书名:Linux高效运维实战

作者:高俊峰

页数:568

定价:¥139.0

出版社:人民邮电出版社

出版日期:2020-07-01

ISBN:9787115521316

PDF电子书大小:70MB 高清扫描完整版

百度云下载:http://www.chendianrong.com/pdf

发表评论

邮箱地址不会被公开。 必填项已用*标注