Linux服务器搭建实战详解的目录

Linux服务器搭建实战详解的目录,第1张

第1章 Linux系统概述 1

11 Linux的发展 1

12 Linux常见版本 2

121 Red Hat Linux 2

122 Debian Linux 2

123 Ubuntu Linux 3

13 Linux操作系统 3

131 Linux操作系统结构 3

132 Linux操作系统特点 5

133 Linux操作系统的应用领域 6

134 Red Hat Enterprise Linux 5 7

14 Red Hat Enterprise Linux 5的两个版本 8

15 安装和管理Red Hat Enterprise Linux 8

151 安装前的准备 8

152 与其他操作系统并存的问题 10

153 Red Hat Enterprise Linux的安装阶段 11

16 Linux操作系统的引导与登录 19

161 多系统引导管理器——GRUB及LILO 19

162 Linux的启动过程 20

163 Linux的关闭与重新引导 20

164 Linux系统的登录和退出 20

17 GNOME和KDE桌面管理器 22

171 GNOME桌面环境 23

172 KDE桌面环境 31

173 定制自己的桌面 42

第2章 FTP服务器 45

21 FTP服务简介 45

211 FTP工作原理 45

212 匿名用户访问的产生 46

213 FTP服务的连接模式 46

214 几种流行的FTP服务器软件 48

22 安装vsFTPd服务 49

221 安装vsFTPd软件 49

222 FTP服务的启动与关闭 50

23 vsFTPd的相关配置 52

231 配置匿名用户登录环境 53

232 监听地址与控制端口 53

233 FTP模式与数据端口 54

234 ASCII模式 55

235 超时选项 55

236 负载控制 55

237 用户设置 56

238 用户登录控制 57

239 目录访问控制 57

2310 文件操作控制 58

2311 新增文件权限设置 58

2312 日志设置 58

24 安装与配置PureFTPD服务器的 59

241 安装Apache服务 59

242 安装MySQL数据库 61

243 安装PureFTPD 62

244 生成PureFTPD服务管理脚本 64

245 配置匿名用户登录环境 64

246 安装Zend Optimizer 65

247 WebPureFTP的安装与配置 66

248 生成MySQL数据库 67

249 生成pure-ftpd数据库配置文件 68

2410 使用webpureftp管理虚拟用户 68

25 FTP服务器的访问 69

251 Linux环境下访问FTP服务器 69

252 Windows环境下访问FTP服务器 70

第3章 电子邮件服务器 71

31 电子邮件服务概述 71

311 电子邮件服务简介 71

312 邮件专有名词解释 72

313 POP3与SMTP协议 73

32 Postfix邮件服务器 74

321 安装Postfix邮件服务器 74

322 Postfix配置文件 76

323 Postfix基本配置 77

324 虚拟别名域 80

325 用户别名 80

326 SMTP认证 81

327 启动和停止Postfix服务 83

328 配置与访问电子邮件客户端 84

33 POP和IMAP邮件服务 87

331 dovecot服务 87

332 CyrusImapd服务 88

34 Web支持电子邮件 92

341 Squirrelmail的安装与配置 92

342 登录Squirrelmail 94

第4章 Web服务器 95

41 Web概述 95

411 Web服务简介 95

412 HTTP协议简介 96

413 Web服务器软件 99

42 Apache概述 99

421 Apache的诞生 100

422 安装Apache服务 101

43 启动与停止Apache服务 103

44 Apache服务的基本配置方法 106

441 httpdconf配置文件 106

442 Apache服务主配置文件的构成 107

45 Apache服务器控制存取的方式 112

451 Options选项 113

452 浏览权限的设置 113

46 Apache服务的高级配置 116

461 虚拟目录简介 116

462 配置与管理虚拟主机 117

463 用户认证和授权 119

464 配置SSI 123

465 MIME类型简介 124

47 创建并配置动态网站 124

471 创建并配置JSP动态网站 124

472 创建并配置CGI动态网站 131

第5章 DHCP服务器 133

51 DHCP服务概述 133

511 DHCP服务的实现原理 133

512 IP地址租约和更新 134

513 DHCP服务器分配的IP地址类型 135

52 安装DHCP服务 137

521 做好DHCP服务器安装前的准备 137

522 安装DHCP服务的方法 138

523 启动及停止DHCP服务 141

53 配置DHCP服务 142

531 DHCP配置文件及格式 142

532 配置IP作用域 145

533 配置客户机的IP 选项 146

534 设置租约期限 147

535 保留特定的IP地址 147

536 多网段的IP地址的分配 148

537 DHCP服务器配置实例 149

54 配置DHCP客户机 150

541 以Linux操作系统作为客户端配置 150

542 以Windows操作系统作为客户端配置 152

第6章 DNS服务器 155

61 DNS服务概述 155

611 DNS服务简介 155

612 DNS提供的服务 156

613 DNS查询原理和规划 156

614 DNS域名解析 158

62 DNS服务的安装 158

621 安装DNS服务 159

622 安装Chroot软件包 159

623 DNS服务的启动与停止 160

63 配置主要名称服务器 161

631 主配置文件 161

632 设置根区域和主区域 162

633 设置反向解析区域 165

634 根服务器信息文件 166

635 区域文件 166

636 反向解析区域文件 169

637 功能实现 170

638 测试DNS服务器 170

64 配置辅助DNS服务器 174

65 配置缓存Cache-only服务器 175

66 DNS客户端的配置 176

661 在Linux下配置DNS客户端 176

662 在Windows下配置DNS客户端 177

第7章 代理服务器 179

71 代理服务器概述 179

711 代理服务器的工作流程 179

712 代理服务器的作用及相关应用 180

72 安装Squid Server 181

721 Squid简介 181

722 Squid Server的安装 182

73 Squid Server的基本配置 184

731 设置监听的IP和端口 184

732 设置缓存大小 184

733 访问控制设置 186

734 指定Squid可以使用内存的理想值 188

735 其他参数设置 188

736 设置错误提示为中文 189

737 初始化Squid Server 189

74 启动与停止代理服务器 192

741 设置Squid服务随系统的启动而自动启动 193

742 重新载入配置文件 195

75 Squid Server高级配置 195

751 实现透明代理 195

752 Squid安全设置 197

753 Squid外部程序支持选项 199

76 Squid日志管理 199

761 日志选项 199

762 Squid代理服务器日志系统的构成 199

763 日志及流量分析软件——Webalizer 200

764 Webalizer软件的应用 204

77 不同环境下的代理客户端的配置 205

771 Linux系统下Firefox代理设置 205

772 Windows系统下IE代理配置 207

第8章 Samba服务器 209

81 Samba服务概述 209

811 Samba服务简介 209

812 Samba服务的安装 209

813 Samba服务的图形化配置方法 212

814 启动、停止和重启Samba服务 216

82 Samba服务的配置文件 216

821 Samba服务的主要配置文件 217

822 Samba服务的密码文件 217

823 Samba服务的日志文件 218

83 smbconf文件详解 218

831 smbconf文件结构 219

832 smbconf文件的语法和变量 220

833 smbconf文件详解 220

834 smbconf文件中的段 223

835 Samba服务具体参数设置 223

84 Samba服务功能实现 225

841 指定Samba所要加入的工作组 225

842 注释说明服务器 226

843 限制可访问服务器IP地址的范围 226

844 打印机设置 227

845 设置guest账号匿名登录 228

846 设置日志文件名、存放路径及大小 228

847 服务器安全设置 229

848 具体的共享设置 232

85 共享的资源访问 234

851 不同客户端主机的资源访问 234

852 本机Windows分区和Linux分区的资源互访 235

第9章 NFS服务器 237

91 NFS服务简介 237

911 使用NFS的优势 237

912 NFS服务的组件 238

92 RPC简介 238

93 安装并配置NFS服务 239

931 安装NFS服务 239

932 配置NFS服务 240

933 NFS文件的存取权限 242

94 启动与停止NFS服务 243

95 在客户端挂载NFS文件系统 244

951 查看NFS服务器信息 244

952 加载NFS服务器共享目录 245

953 自动挂接NFS文件系统 246

第10章 LDAP目录服务 247

101 目录服务概述 247

1011 X500简介 247

1012 初识LDAP 248

1013 X500与LDAP 251

1014 流行的目录服务产品 252

102 深入认识LDAP 254

1021 LDAP的几种基本模型 254

1022 如何规划目录树 256

1023 LDAP的应用领域 257

103 安装LDAP 257

1031 安装Berkeley DB 257

1032 安装OpenLDAP 260

104 配置OpenLDAP 261

1041 OpenLDAP的基本配置 261

1042 启动OpenLDAP服务器 262

105 为OpenLDAP建立初始化数据 263

106 LDAP图形界面管理工具简介 264

1061 主要的LDAP图形界面管理工具 264

1062 安装phpLDAPadmin 266

107 配置phpLDAPadmin 268

1071 生成phpLDAPadmin主配置文件 268

1072 phpLDAPadmin的基本配置 268

108 使用OpenLDAPadmin管理目录树 271

1081 进入phpLDAPadmin 271

1082 创建组织单元 272

1083 创建用户组 274

1084 创建用户账号 276

109 实现LDAP服务的身份验证 277

1091 实现Linux系统用户验证 277

1092 实现FTP用户验证 279

1093 实现Web用户验证 280

第11章 SSH服务器 281

111 SSH服务概述 281

1111 SSH服务简介 281

1112 公钥加密体系结构 282

112 SSH服务的安装 283

113 配置SSH服务器 283

114 SSH服务的启动和停止 286

1141 启动SSH服务 286

1142 重启SSH服务 287

1143 自动启动SSH服务 287

1144 停止SSH服务 288

115 使用SSH客户端 288

1151 SSH客户端在Windows平台下的使用 288

1152 SSH客户端在Linux平台下的使用 289

第12章 MySQL数据库的配置 293

121 MySQL概述 293

1211 MySQL简介 293

1212 MySQL的应用领域 294

122 安装MySQL 295

1221 安装前的准备 295

1222 MySQL的具体安装过程 295

123 启动与停止MySQLD服务 298

124 配置及使用MySQL服务 298

1241 修改MySQL管理员的口令 299

1242 MySQL数据库的创建和使用 299

1243 MySQL数据表的创建和使用 300

1244 索引的创建和删除 304

1245 用户的创建和删除 305

1246 用户权限的设置 306

125 图形化配置MySQL 309

1251 安装phpMyAdmin 309

1252 配置phpMyAdmin虚拟目录 310

1253 使用phpMyAdmin 311

第13章 使用Webmin配置各种服务 313

131 Webmin的概述 313

1311 Webmin简介 313

1312 Webmin特性 313

1313 Webmin主要功能 314

132 安装和配置Webmin 317

1321 Perl语言解释器的安装 318

1322 Net-SSLeay perl和OpenSSL的安装 318

1323 安装与访问Webmin 319

1324 设置Webmin为中文界面 321

1325 停止和启动Webmin服务 322

133 用Webmin配置服务 323

1331 Samba服务的配置 323

1332 NFS服务的配置 327

1333 DNS服务的配置 328

1334 Web服务的配置 331

1335 网络防火墙与NAT服务配置 336

1336 代理服务配置 342

1337 SSH服务的配置 349

第14章 Linux命令行 351

141 Linux Shell概述 351

1411 Linux Shell简介 351

1412 系统默认Shell——Bash Shell 351

1413 设置使用其他Shell 352

142 启动Shell 353

1421 终端启动Shell 353

1422 直接启用Shell 354

1423 直接启动命令行窗口 354

143 Shell指令详解 355

1431 目录及文件管理指令 355

1432 信息显示指令 360

1433 网络基本配置指令 363

1434 关机和注销指令 366

144 配置Shell环境 367

1441 Shell环境变量 367

1442 环境变量设置 369

1443 Shell环境配置文件 370

145 使用vim文本编辑器 371

1451 vim编辑器简介 371

1452 常用vim指令 372

1453 vim的定制 376

第15章 Linux操作系统中的 网络连通性测试 377

151 网络线路的连通性测试 377

1511 双绞线的线芯 377

1512 测试直通双绞线 378

1513 测试交叉双绞线 378

1514 利用ping命令测试网络连通性 379

152 路由跟踪 382

1521 traceroute命令 382

1522 traceroute显示代码 383

1523 traceroute命令选项的应用 384

153 Linux图形界面下测试网络 386

1531 进入“Network Tools”窗口 386

1532 网络设备查询 387

1533 网络连通性测试 387

1534 网络信息统计 388

1535 网络路由跟踪 388

1536 网络端口扫描 389

1537 网络查阅 389

1538 查询登录用户的信息 390

1539 域名查询工具 390

第16章 Linux网络管理 391

161 静态IP地址管理工具 391

1611 IP地址 391

1612 子网掩码 392

1613 TCP/IP配置文件 392

1614 在图形界面下配置以太网络 392

1615 在命令模式下配置以太网 397

162 动态IP地址分配工具 400

1621 获取动态IP地址 400

1622 安装DHCP服务 401

1623 DHCP服务的启动与停止 404

1624 DHCP服务的配置 405

163 网络地址表管理工具 407

1631 显示ARP缓存 407

1632 管理ARP缓存 408

第17章 软件基础管理 409

171 Kickstart简介 409

1711 安装Kickstart 409

1712 Debian/Ubuntu的自动化安装 419

172 Linux操作系统中的软件包管理 420

1721 RPM简介 420

1722 RPM软件包管理系统的应用 423

173 Debian的软件包管理系统 434

1731 DPKG简介 434

1732 DPKG软件包管理系统应用 435

第18章 软件包高级管理 441

181 APT——高级软件包管理 441

1811 APT概述 441

1812 应用APT软件包管理系统 442

182 YUM——智能化的RPM软件包管理 452

1821 YUM概述 452

1822 应用YUM软件包管理系统 453

183 Linux内核的升级 462

1831 获取内核源代码 463

1832 配置内核 464

1833 编译内核 467

1834 安装内核 469

第19章 用户和进程管理 471

191 用户管理 471

1911 用户账号文件 471

1912 用户群组文件 474

1913 命令行方式的用户管理 476

1914 图形界面方式的用户管理 486

1915 命令行方式的群组管理 486

192 进程管理 490

1921 进程及作业 490

1922 进程控制 490

1923 作业控制 494

第20章 管理Linux文件系统及磁盘 497

201 管理Linux文件系统 497

2011 Linux文件系统结构 497

2012 常见的文件系统 497

2013 文件类型 498

2014 文件压缩与归档 498

2015 文件链接 503

2016 安装文件系统 505

202 磁盘管理 507

2021 硬盘简介 507

2022 管理磁盘分区 509

2023 使用磁盘管理命令 529

2024 磁盘配额管理问题 539

第21章 Linux系统安全 549

211 系统安全基础设置 549

2111 BIOS安全 549

2112 账号安全 549

212 系统安全高级设置 552

2121 重要文件 552

2122 防止攻击系统 553

2123 开启安全服务 555

2124 审计日志 556

2125 文件和目录许可 558

域名系统,在TCP/IP 网络中有非常重要的地位,能够提供域名与IP地址的解析服务,而不用去记住能够被机器直接读取的IP数串。

通过域名,最终得到该域名对应的IP地址的过程叫做域名解析。

DNS协议运行在UDP协议之上,使用端口53号

DNS域名空间中,树的最大深度不得超过127层,树种每个节点最长可以存储63个字符。

2、域和域名

DNS树的每一个完全合格域名(FQDN)标识。FQDN能准确表示出其对于DNS域树根的位置,也就是节点到DNS树根的完整表述方式。

例如:google为com域的子域,其表示方法为googglecom,而www为google域中的子域,可以使用wwwgooglecom表示。

注意:FQDN有严格的命名限制,长度不能超过256字节,只允许使用字符a-z,0-9,A-Z和减号(-)。

号只允许在域名标志之间和域名结尾使用。

域名不区分大小写,从最顶层到下层,可以分成:根域、顶级域、二级域、子域。

互联网的域名空间最顶层的是根域(root),记录这Interne的重要DNS信息,有Internet域名注册授权机构管理,该机构把域名空间各部分的管理责任分配给链接到Internet的各个组织。

全球有13个根域服务器:

1个为主根域服务器,在美国;其余12个为辅助根域服务器,

其中9个在美国;欧洲2个,分别在英国和瑞迪;亚洲一个,在日本。

3、域名的分类和等级

域名可以分为3中类型的顶级域分别是:

组织域:采用3个字符表示,表示组织的主要功能和活动,比如com为商业机构组织,edu为教育机构组织,gov为政府机构组织,mil为军事机构组织,net为网络机构组织,org为非盈利机构组织,int为国际机构组织。

地址域:采用两个字符的国家或地区代号,如cn表示中国,jp表示日本、hk表示香港,kr表示韩国,us表示美国。

反向域:特殊域,名字为in-addrarpa,用于将IP地址映射到名字(反向查询)

二、DNS相关概念

1、DNS服务器

运行DNS服务器程序的计算机,存储DNS数据库信息。

2、DNS缓存

DNS服务器在解析客户机的域名请求时,如果本地没有该域名的记录,则会询问其它DNS服务器,当其它域名将解析结果返回给DNS服务器是,DNS将对应的记录保存在本地,生成DNS缓存,当下一次客户机再次请求是,DNS服务器则可以直接使用缓存中的DNS记录。

3、DNS查询方式:递归查询和迭代查询

递归查询:当客户机向DNS服务器发起域名解析请求时,DNS服务器首先查看自己本机的DNS记录,如果没有则会想其它DNS服务器发起解析请求。

迭代查询:当客户机向DNS服务器发起域名解析请求是,DNS服务器不会给客户机解析地址,而是告诉客户机另外一台DNS服务器,客户即再向这台服务器发起地址解析请求。

4、正向解析和反向解析

正向解析:指域名解析到IP地址的解析过程。

反向解析:指IP地址解析到域名的解析过程。

5、DNS资源记录

1)SOA资源记录

每个区在区的开始都包含了一个起始授权记录(Start of Authority Record),简称SOA记录

SOA定义了域的全局参数,进行整个域的管理设置。一个区域文件只允许存在唯一的SOA记录。

2)NS资源记录

NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析,每个区在区根处至少包含一个NS记录。

3)A资源记录

地址(A)资源记录把FQDN映射到IP地址。因为有次记录,所以DNS服务器能解析FQDN域名对应的IP地址。

4)PTR资源记录

相对于A记录,指针(PTR)记录把IP地址映射到FQDN。用于反向查询,通过IP地址,找到域名。

5)CNAME资源记录

别名记录(CNAME)资源记录创建特定FQDN的别名。用户可以使用CNAME记录来隐藏用户网络的实现细节,使链接的客户机无法知道真正的域名。

6)MX资源记录

邮件交换(MX)资源记录,为DNS域名指定邮件交换服务器。

三、DNS服务器安装及相关配置文件

1、安装DNS

BIND 简介:

BIND 全称为Berkeley Internet Name Domain(伯克利因特网名称域系统),BIND 主要有三个版本:BIND4、BIND8、BIND9。

BIND8版本:融合了许多提高效率、稳定性和安全性的技术,而BIND9 增加了一些超前的理念:IPv6支持、密钥加密、多处理器支持、线程安全操作、增量区传送等等。

安装命令:

[root@xuegod ~]# yum -y install bind bind-chroot bind-utils

安装包的作用:

bindx86_64 32:994-73el7_6 #DNS服务的主程序包

bind-chrootx86_64 32:994-73el7_6 #提高安全性

#bind-chroot是bind的一个功能,使bind可以在一个chroot 的模式下运行,也就是说,bind运行时的/(根)目录,并不是系统真正的/(根)目录,只是系统中的一个子目录而已,这样做的目的是为了提高安全性,因为在chroot的模式下,bind可以访问的范围仅限于这个子目录的范围里,无法进一步提升,进入到系统的其他目录中。

bind-utils-994-50el7x86_64rpm #该包为客户端工具,系统默认已经安装的了,它用于搜索域名指令。

2、DNS服务器相关配置文件

[root@xuegod ~]# ls /etc/namedconf -l

-rw-r----- 1 root named 1808 1月 30 01:23 /etc/namedconf

namedconf是BIND的核心配置文件,它包含了BIND的基本配置,但其并不包括区域数据

/var/name/目录为DNS数据库文件存放目录,每一个域文件都放在这里

3、启动服务器

[root@xuegod ~]# systemctl start named

[root@xuegod ~]# systemctl enable named

Created symlink from /etc/systemd/system/multi-usertargetwants/namedservice to /usr/lib/systemd/system/namedservice

[root@xuegod ~]# netstat -antup | grep 53

tcp 0 0 127001:53 0000: LISTEN 3501/named

4、服务的使用方法

在客户端上配置好DNS服务器地址

[root@xuegod140 ~]# vim /etc/resolvconf

[root@xuegod140 ~]# cat /etc/resolvconf

Generated by NetworkManager

nameserver 1921681130

resolvconf文件,添加DNS,此文件的生效范围是全局的,即是所有网卡都可以生效。

修改网卡添加的DNS,此方法添加DNS仅对当前网卡生效。

DNS1=1921681130

5、配置文件详解

要求:配置DNS服务器解析:xuegodcn

[root@xuegod etc]# cp /etc/namedconf /etc/namedconfbak

DNS配置文件整体分为三段:

options:对全局生效

zone:针对某个区域生效

type:指定区域类型

type主要分为六种

Master:主DNS服务器,拥有区域数据文件,并对此区域提供管理梳理

Slave:辅助DNS服务器,拥有主DNS服务器的区域数据文件的副本,辅助DNS服务器会从主DNS服务器同步所有区域数据

Stub:stub区域和slave类似,但其只复制主DNS服务器上的NS记录,而不像slave复制DNS服务器的所有数据

Forward:一个forward zone是每个区域的配置转发的主要部分。一个zone语句中的type forward可以包括一个forward和/或forwarders子句,它会在区域名称给定的域中查询。如果没有forwarders语句或者forwarder是空表,那么这个域就不会转发,消除了options语句中有关转发的配置

Hint:根域名服务器的初始化组指定使用线索区域hint zone,当服务器启动时,它使用跟线索来查找根域名服务器,并找到最近的根域名服务器列表

四、实战-为公司搭建一个DNS服务器

1、配置正向解析区域

修改配置文件,授权DNS服务器管理xuegodcn区域,并把该区域的区域文件命名为xuegodcn

options {

listen-on port 53 { any; }; #把原来的127001改为any。

listen-on-v6 port 53 { any; }; #把原来的::1,改为any。

directory “/var/named”;

dump-file “/var/named/data/cache_dumpdb”;

statistics-file “/var/named/data/named_statstxt”;

memstatistics-file “/var/named/data/named_mem_statstxt”;

allow-query { any; }; #把原来的localhost,改为any。

recursion yes;

dnssec-enable yes;

dnssec-validation yes;

dnssec-lookaside auto; #加入此项。

1

2

3

4

5

1

2

3

4

5

zone “xuegodcn” IN { #把原来的 改为xuegodcn。

type master; #把原来的hint,改为master。

file “xuegodcnzone”; #把原来的namedca,改为xuegodcnzone。

};

include “/etc/namedrfc1912zones”;

include “/etc/namedrootkey”;

2、创建zone文件

[root@xuegod etc]# cd /var/named #进入zone工作目录

[root@xuegod named]# ll -d namedlocalhost

-rw-r----- 1 root named 152 6月 21 2007 namedlocalhost

[root@xuegod named]# cp -a namedlocalhost xuegodcnzone

#-a参数,复制后的文件保留源文件权限

[root@xuegod named]# ll -d xuegodcnzone

-rw-r----- 1 root named 152 6月 21 2007 xuegodcnzone

[root@xuegod named]# vim xuegodcnzone

[root@xuegod named]# cat xuegodcnzone

$TTL 1D

xuegodcn IN SOA dnsxuegodcn rootxuegodcn (

0 ; serial #系列

1D ; refresh #刷新

1H ; retry #重试

1W ; expire #到期

3H ) ; minimum #最低限度

xuegodcn NS dnsxuegodcn #NS资源记录

dnsxuegodcn A 1921681130 #A资源记录

wwwxuegodcn A 1921681130 #A资源记录

www1xeugodcn CNAME wwwxuegodcn #CNAME记录

3、重启DNS服务:

[root@xuegod named]# systemctl restart named

4、修改客户机的DNS记录

[root@xuegod140 ~]# vim /etc/resolvconf

[root@xuegod140 ~]# cat /etc/resolvconf

Generated by NetworkManager

nameserver 1921681130

5、删除网卡配置文件的DNS记录

[root@xuegod140 ~]# cd /etc

[root@xuegod140 etc]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

[root@xuegod140 etc]# cat !$ | grep DNS1 #删除DNS1的行

cat /etc/sysconfig/network-scripts/ifcfg-ens33 | grep DNS1

6、测试结果:

[root@xuegod140 etc]# ping wwwxuegodcn

PING wwwxuegodcn (1921681130) 56(84) bytes of data

64 bytes from 1921681130 (1921681130): icmp_seq=1 ttl=64 time=0216 ms

64 bytes from 1921681130 (1921681130): icmp_seq=2 ttl=64 time=0359 ms

[root@xuegod140 etc]# ping www1xuegodcn

PING wwwxuegodcn (1921681130) 56(84) bytes of data

64 bytes from 1921681130 (1921681130): icmp_seq=1 ttl=64 time=0216 ms

64 bytes from 1921681130 (1921681130): icmp_seq=2 ttl=64 time=0255 ms

[root@xuegod140 etc]# ping dnsxuegodcn

PING dnsxuegodcn (1921681130) 56(84) bytes of data

64 bytes from 1921681130 (1921681130): icmp_seq=1 ttl=64 time=0170 ms

64 bytes from 1921681130 (1921681130): icmp_seq=2 ttl=64 time=0294 ms

总结:实验容易错误点

1)区文件的权限,需要注意,这里直接使用cp -a参数拷贝,保留文件的权限和属组、属主

2)服务端的防火墙必须要关闭,如果不关闭,就要放通DNS53号端口

3)客户端指定DNS地址时,resolv文件需要表示全局生效,本地网卡修改表示当前网卡生效

4)可以的话最好关闭NetworkManager

7、zone配置文件的参数说明

$TTL 1D:设置有效地址解析记录的默认缓存时间,默认为1天也就是1D。

xuegodcn IN SOA dns xuegodcn root xuegodcn

#原来的@表示当前的域xuegodcn,为方便大家记忆,在此直接写成xuegodcn

#设置SOA记录为:dnsxuegodcn

#在此配置文件中写域名时,都把根 也需要写上。

#域管理邮箱rootxuegodcn 由于@有其他含义,所以用“”代替@。

0 :更新序列号,用于标示数据库的变换,可以在10位以内,如果存在辅助DNS区域,建议每次更新完数据库,手动加1。

1D :刷新时间,从域名服务器更新该地址数据库文件的间隔时间,默认为1天。

1H :重试延时,从域名服务器更新地址数据库失败以后,等待多长时间,默认为1小时。

1W :到期,失效时间,超过该时间仍无法更新地址数据库,则不再尝试,默认为一周。

3H :设置无效地址解析记录(该数据库中不存在的地址)默认缓存时间。设置无效记录,最少缓存时间为3小时。

NS @ :域名服务器记录,用于设置当前域的DNS服务器的域名地址,

A 127001: 设置域名服务器的A记录,地址为ipv4的地址127001,可以设置成192168100102

AAAA ::1:设置域名服务器的A记录,地址为ipv6的地址。

资源记录参数详解:

CNAME 资源记录

别名(CNAME)资源记录用于为某个主机指定一个别名

CNAME 资源记录语法格式:

别名 CNAME 主机名

www1xuegodcn CNAME wwwxuegodcn

MX 资源记录

MX(邮件交换器)资源记录提供邮件传递信息。该记录会指定区域内的邮件服务器名称。

MX 资源记录语法格式:

mail A 192168163

MX 192168163

PTR 资源记录

指针(PTR)资源记录。该记录与A 记录相反,用于查询IP 地址与主机名的对应关系。

根区域是一个较为特殊的区域,记录列出全球根域名服务器信息,域名通常用“”表示,如表 5-1 所示。

在这里插入描述

五、实战-DNS递归查询和搭建DNS转发服务器

1、使用DNS递归查询

修改配置文件:

[root@xuegod130 etc]# vim /etc/namedconf #修改DNS配置文件,修改如下内容。

options {

listen-on port 53 { any ; }; #把原来的127001改为any。

listen-on-v6 port 53 { any; }; #把原来的::1,改为any。

directory “/var/named”;

dump-file “/var/named/data/cache_dumpdb”;

statistics-file “/var/named/data/named_statstxt”;

memstatistics-file “/var/named/data/named_mem_statstxt”;

allow-query { any; }; #把原来的localhost,改为any。

recursion yes; #默认是支持递归查询。

#dnssec-enable yes;

#dnssec-validation yes;

#dnssec-lookaside auto;

只需要把以上三条内容注释了,其它内容不用改,这样客户端才能通过这个DNS进行递归查询,把dns加密通讯功能关闭,才可以和根服务器时行迭代查询。:

2、重启DNS服务,使配置文件生效:

[root@xuegod63 ~]# systemctl restart named

3、在xuego140主机上进行测试:

[root@localhost network-scripts]# ping wwwbaiducom

PING wwwashifencom (61135169105) 56(84) bytes of data

64 bytes from 61135169105: icmp_seq=1 ttl=55 time=318 ms

64 bytes from 61135169105: icmp_seq=3 ttl=55 time=147 ms

4、 搭建DNS转发服务器

[root@xuegod130 ~]# vim /etc/namedconf

options {

listen-on port 53 { any; }; #把原来的127001改为any。

listen-on-v6 port 53 { any; }; #把原来的::1,改为any。

directory “/var/named”;

dump-file “/var/named/data/cache_dumpdb”;

statistics-file “/var/named/data/named_statstxt”;

memstatistics-file “/var/named/data/named_mem_statstxt”;

allow-query { any; }; #把原来的localhost,改为any。

recursion yes; #允许递归查询

#dnssec-enable yes; #注释以下三行。

#dnssec-validation yes;

#dnssec-lookaside auto;

zone “xuegodcn” IN {

#type master; #注释此项

type forward; #添加此项,类型为转发。

#file “xuegodcnzone”; #注释此项

forward only ; #仅执行转发操作,only:仅转发,first:先查找本地zone,再转发。

forwarders { 8888; }; #指定转发查询请求的DNS服务器列表。

};

重启DNS服务,使配置文件生效:

[root@xuegod63 ~]# systemctl restart named

在xuegod140主机上进行测试:

[root@localhost network-scripts]# ping wwwbaiducom

PING wwwashifencom (61135169105) 56(84) bytes of data

64 bytes from 61135169105: icmp_seq=1 ttl=55 time=318 ms

64 bytes from 61135169105: icmp_seq=3 ttl=55 time=147 ms

六、实战-搭建DNS主从服务器

1、搭建一个主DNS服务器A,配置内容如下

[root@xuegod63 ~]# vim /etc/namedconf

options {

listen-on port 53 { any; }; #把原来的127001改为any。

listen-on-v6 port 53 { any; }; #把原来的::1,改为any。

directory “/var/named”;

dump-file “/var/named/data/cache_dumpdb”;

statistics-file “/var/named/data/named_statstxt”;

memstatistics-file “/var/named/data/named_mem_statstxt”;

allow-query { any; }; #把原来的localhost,改为any。

recursion yes;

#dnssec-enable yes;

#dnssec-validation yes;

#dnssec-lookaside auto;

zone “xuegodcn” IN {

type master; #指定类型为master。

file “xuegodcnzone”; #指定为xuegodcnzone。

allow-transfer { 19216810/24; }; #指定允许哪个网段的从DNS服务器,可以同步主DNS服务器zone文件,不写默认为所有。

};

include “/etc/namedrfc1912zones”;

重启DNS服务,使配置文件生效:

[root@xuegod63 ~]# systemctl restart named

2、从DNS服务器的配置

要求:主从系统时间一定要保持一致。

不需要拿出来。

微信小程序的服务器是云服务器,是在腾讯那边了,您没办法直接拿出来。

腾讯微信(faq)是一种更快速的短邮,具有跨平台沟通、显示实时输入状态等功能,与传统的短信沟通方式相比,更灵活、智能,且节省资费。

没有固定IP地址的情况下,只能使用类似于”花生壳“之类的动态域名解析来实现,但这样做意义不大,原因至少有3条:

1、动态域名解析极其不稳定,服务器的动态解析客户端消耗资源高;

2、你的拨号上网方式,一般上行(从你服务器到外网)带宽很窄,512K-1M,通常带宽提供商告诉你的20M、50M的都是下行带宽(从外网进你服务器);

3、一台机器24小时365天开机,一年的电费远远高于租用一个几百元虚拟主机的价钱。

因此,劝你使用网络服务商的虚机主机比较好,如果你执意要自己架设的话,你可以搜索一下”花生壳“,联系他们,咨询详细操作方法,(有些路由器上也集成了花生壳)

1背景

MySQL的cluster方案有很多官方和第三方的选择,选择多就是一种烦恼,因此,我们考虑MySQL数据库满足下三点需求,考察市面上可行的解决方案:

高可用性:主服务器故障后可自动切换到后备服务器可伸缩性:可方便通过脚本增加DB服务器负载均衡:支持手动把某公司的数据请求切换到另外的服务器,可配置哪些公司的数据服务访问哪个服务器

需要选用一种方案满足以上需求。在MySQL官方网站上参考了几种解决方案的优缺点:

综合考虑,决定采用MySQL Fabric和MySQL Cluster方案,以及另外一种较成熟的集群方案Galera Cluster进行预研。

2MySQLCluster

简介:

MySQL Cluster 是MySQL 官方集群部署方案,它的历史较久。支持通过自动分片支持读写扩展,通过实时备份冗余数据,是可用性最高的方案,声称可做到99999%的可用性。

架构及实现原理:

MySQL cluster主要由三种类型的服务组成:

NDB Management Server:管理服务器主要用于管理cluster中的其他类型节点(Data Node和SQL Node),通过它可以配置Node信息,启动和停止Node。 SQL Node:在MySQL Cluster中,一个SQL Node就是一个使用NDB引擎的mysql server进程,用于供外部应用提供集群数据的访问入口。Data Node:用于存储集群数据;系统会尽量将数据放在内存中。

缺点及限制:

对需要进行分片的表需要修改引擎Innodb为NDB,不需要分片的可以不修改。NDB的事务隔离级别只支持Read Committed,即一个事务在提交前,查询不到在事务内所做的修改;而Innodb支持所有的事务隔离级别,默认使用Repeatable Read,不存在这个问题。外键支持:虽然最新的Cluster版本已经支持外键,但性能有问题(因为外键所关联的记录可能在别的分片节点中),所以建议去掉所有外键。Data Node节点数据会被尽量放在内存中,对内存要求大。

数据库系统提供了四种事务隔离级别:

ASerializable(串行化):一个事务在执行过程中完全看不到其他事务对数据库所做的更新(事务执行的时候不允许别的事务并发执行。事务串行化执行,事务只能一个接着一个地执行,而不能并发执行。)。

BRepeatable Read(可重复读):一个事务在执行过程中可以看到其他事务已经提交的新插入的记录,但是不能看到其他其他事务对已有记录的更新。

CRead Commited(读已提交数据):一个事务在执行过程中可以看到其他事务已经提交的新插入的记录,而且能看到其他事务已经提交的对已有记录的更新。

DRead Uncommitted(读未提交数据):一个事务在执行过程中可以看到其他事务没有提交的新插入的记录,而且能看到其他事务没有提交的对已有记录的更新。

3MySQL Fabric

简介:

为了实现和方便管理MySQL 分片以及实现高可用部署,Oracle在2014年5月推出了一套为各方寄予厚望的MySQL产品 -- MySQL Fabric, 用来管理MySQL 服务,提供扩展性和容易使用的系统,Fabric当前实现了两个特性:高可用和使用数据分片实现可扩展性和负载均衡,这两个特性能单独使用或结合使用。

MySQL Fabric 使用了一系列的python脚本实现。

应用案例:由于该方案在去年才推出,目前在网上暂时没搜索到有大公司的应用案例。

架构及实现原理:

Fabric支持实现高可用性的架构图如下:

Fabric使用HA组实现高可用性,其中一台是主服务器,其他是备份服务器, 备份服务器通过同步复制实现数据冗余。应用程序使用特定的驱动,连接到Fabric 的Connector组件,当主服务器发生故障后,Connector自动升级其中一个备份服务器为主服务器,应用程序无需修改。

Fabric支持可扩展性及负载均衡的架构如下:

使用多个HA 组实现分片,每个组之间分担不同的分片数据(组内的数据是冗余的,这个在高可用性中已经提到)

应用程序只需向connector发送query和insert等语句,Connector通过MasterGroup自动分配这些数据到各个组,或从各个组中组合符合条件的数据,返回给应用程序。

缺点及限制:

影响比较大的两个限制是:

自增长键不能作为分片的键;事务及查询只支持在同一个分片内,事务中更新的数据不能跨分片,查询语句返回的数据也不能跨分片。

测试高可用性

服务器架构:

功能

IP

Port

Backing store(保存各服务器配置信息)

20020016824

3306

Fabric 管理进程(Connector)

20020016824

32274

HA Group 1 -- Master

20020016823

3306

HA Group 1 -- Slave

20020016825

3306

安装过程省略,下面讲述如何设置高可用组、添加备份服务器等过程

首先,创建高可用组,例如组名group_id-1,命令:

mysqlfabric group create group_id-1

往组内group_id-1添加机器20020016825和20020016823:

mysqlfabric group add group_id-1 20020016825:3306

mysqlfabric group add group_id-1 20020016823:3306

然后查看组内机器状态:

由于未设置主服务器,两个服务的状态都是SECONDARY

提升其中一个为主服务器:

mysqlfabric group promote group_id-1 --slave_id 00f9831f-d602-11e3-b65e-0800271119cb

然后再查看状态:

设置成主服务器的服务已经变成Primary。

另外,mode属性表示该服务器是可读写(READ_WRITE),或只读(READ_ONLY),只读表示可以分摊查询数据的压力;只有主服务器能设置成可读写(READ_WRITE)。

这时检查25服务器的slave状态:

可以看到它的主服务器已经指向23

然后激活故障自动切换功能:

mysqlfabric group activate group_id-1

激活后即可测试服务的高可以性

首先,进行状态测试:

停止主服务器23

然后查看状态:

可以看到,这时将25自动提升为主服务器。

但如果将23恢复起来后,需要手动重新设置23为主服务器。

实时性测试:

目的:测试在主服务更新数据后,备份服务器多久才显示这些数据

测试案例:使用java代码建连接,往某张表插入100条记录,看备份服务器多久才能同步这100条数据

测试结果:

表中原来有101条数据,运行程序后,查看主服务器的数据条数:

可见主服务器当然立即得到更新。

查看备份服务器的数据条数:

但备份服务器等待了1-2分钟才同步完成(可以看到fabric使用的是异步复制,这是默认方式,性能较好,主服务器不用等待备份服务器返回,但同步速度较慢)

对于从服务器同步数据稳定性问题,有以下解决方案:

使用半同步加强数据一致性:异步复制能提供较好的性能,但主库只是把binlog日志发送给从库,动作就结束了,不会验证从库是否接收完毕,风险较高。半同步复制会在发送给从库后,等待从库发送确认信息后才返回。可以设置从库中同步日志的更新方式,从而减少从库同步的延迟,加快同步速度。 安装半同步复制:

在mysql中运行

install plugin rpl_semi_sync_master soname 'semisync_masterso';

install plugin rpl_semi_sync_slave soname 'semisync_slaveso';

SET GLOBAL rpl_semi_sync_master_enabled=ON;

SET GLOBAL rpl_semi_sync_slave_enabled=ON;

修改mycnf :

rpl_semi_sync_master_enabled=1

rpl_semi_sync_slave_enabled=1

sync_relay_log=1

sync_relay_log_info=1

sync_master_info=1

稳定性测试:

测试案例:使用java代码建连接,往某张表插入1w条记录,插入过程中将其中的master服务器停了,看备份服务器是否有这1w笔记录

测试结果,停止主服务器后,java程序抛出异常:

但这时再次发送sql命令,可以成功返回。证明只是当时的事务失败了。连接切换到了备份服务器,仍然可用。

翻阅了mysql文档,有章节说明了这个问题:

里面提到:当主服务器当机时,我们的应用程序虽然是不需做任何修改的,但在主服务器被备份服务器替换前,某些事务会丢失,这些可以作为正常的mysql错误来处理。

数据完整性校验:

测试主服务器停止后,备份服务器是否能够同步所有数据。

重启了刚才停止主服务器后,查看记录数

可以看到在插入1059条记录后被停止了。

现在看看备份服务器的记录数是多少,看看在主服务器当机后是否所有数据都能同步过来

大约经过了几十秒,才同步完,数据虽然不是立即同步过来,但没有丢失。

12、分片:如何支持可扩展性和负载均衡

fabric分片简介:当一台机器或一个组承受不了服务压力后,可以添加服务器分摊读写压力,通过Fabirc的分片功能可以将某些表中数据分散存储到不同服务器。我们可以设定分配数据存储的规则,通过在表中设置分片key设置分配的规则。另外,有些表的数据可能并不需要分片存储,需要将整张表存储在同一个服务器中,可以将设置一个全局组(Global Group)用于存储这些数据,存储到全局组的数据会自动拷贝到其他所有的分片组中。

4Galera Cluster

简介:

Galera Cluster号称是世界上最先进的开源数据库集群方案

主要优点及特性:

真正的多主服务模式:多个服务能同时被读写,不像Fabric那样某些服务只能作备份用同步复制:无延迟复制,不会产生数据丢失热备用:当某台服务器当机后,备用服务器会自动接管,不会产生任何当机时间自动扩展节点:新增服务器时,不需手工复制数据库到新的节点支持InnoDB引擎对应用程序透明:应用程序不需作修改

架构及实现原理:

首先,我们看看传统的基于mysql Replication(复制)的架构图:

Replication方式是通过启动复制线程从主服务器上拷贝更新日志,让后传送到备份服务器上执行,这种方式存在事务丢失及同步不及时的风险。Fabric以及传统的主从复制都是使用这种实现方式。

而Galera则采用以下架构保证事务在所有机器的一致性:

客户端通过Galera Load Balancer访问数据库,提交的每个事务都会通过wsrep API 在所有服务器中执行,要不所有服务器都执行成功,要不就所有都回滚,保证所有服务的数据一致性,而且所有服务器同步实时更新。

缺点及限制:

由于同一个事务需要在集群的多台机器上执行,因此网络传输及并发执行会导致性能上有一定的消耗。所有机器上都存储着相同的数据,全冗余。若一台机器既作为主服务器,又作为备份服务器,出现乐观锁导致rollback的概率会增大,编写程序时要小心。不支持的SQL:LOCK / UNLOCK TABLES / GET_LOCK(), RELEASE_LOCK()…不支持XA Transaction

目前基于Galera Cluster的实现方案有三种:Galera Cluster for MySQL、Percona XtraDB Cluster、MariaDB Galera Cluster。

我们采用较成熟、应用案例较多的Percona XtraDB Cluster。

应用案例:

超过2000多家外国企业使用:

包括:

集群部署架构:

功能

IP

Port

Backing store(保存各服务器配置信息)

20020016824

3306

Fabric 管理进程(Connector)

20020016824

32274

HA Master 1

20020016824

3306

HA Master 2

20020016825

3306

HA Master 3

20020016823

3306

41、测试数据同步

在机器24上创建一个表:

立即在25 中查看,可见已被同步创建

使用Java代码在24服务器上插入100条记录

立即在25服务器上查看记录数

可见数据同步是立即生效的。

42、测试添加集群节点

添加一个集群节点的步骤很简单,只要在新加入的机器上部署好Percona XtraDB Cluster,然后启动,系统将自动将现存集群中的数据同步到新的机器上。

现在为了测试,先将其中一个节点服务停止:

然后使用java代码在集群上插入100W数据

查看100w数据的数据库大小:

这时启动另外一个节点,启动时即会自动同步集群的数据:

启动只需20秒左右,查看数据大小一致,查看表记录数,也已经同步过来

5对比总结

MySQL Fabric

Galera Cluster

使用案例

2014年5月才推出,目前在网上暂时没搜索到有大公司的应用案例

方案较成熟,外国多家互联网公司使用

数据备份的实时性

由于使用异步复制,一般延时几十秒,但数据不会丢失。

实时同步,数据不会丢失

数据冗余

使用分片,通过设置分片key规则可以将同一张表的不同数据分散在多台机器中

每个节点全冗余,没有分片

高可用性

通过Fabric Connector实现主服务器当机后的自动切换,但由于备份延迟,切换后可能不能立即查询数据

使用HAProxy实现。由于实时同步,切换的可用性更高。

可伸缩性

添加节点后,需要先手工复制集群数据

扩展节点十分方便,启动节点时自动同步集群数据,100w数据(100M)只需20秒左右

负载均衡

通过HASharding实现

使用HAProxy实现负载均衡

程序修改

需要切换成jdbc:mysql:fabric的jdbc类和url

程序无需修改

性能对比

使用java直接用jdbc插入100条记录,大概2000+ms

跟直接操作mysql一样,直接用jdbc插入100条记录,大概600ms

6实践应用

综合考虑上面方案的优缺点,我们比较偏向选择Galera 如果只有两台数据库服务器,考虑采用以下数据库架构实现高可用性、负载均衡和动态扩展:

如果三台机器可以考虑:

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » Linux服务器搭建实战详解的目录

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情