1、简述DNS服务器原理,并搭建主-辅服务器。
(1) 以客户端请求www.magedu.com为例描述DNS服务器原理:
1) 查询本机上的/etc/hosts文件,看里面是否有www.magedu.com对应的IP地址
2) 查询本机上的DNS服务缓存,看里面是否有www.magedu.com对应的IP地址记录
3) 将请求发送给主机上配置的DNS代理解析服务器(如223.5.5.5),DNS代理解析服务器将用户请求转发至DNS缓存服务器进行查询,如果没有结果
4) DNS代理解析服务器将用户请求转发至根服务器
5) 根服务器返回.com域名服务器的IP, DNS代理解析服务器将用户请求转发至.com域名服务器
6) .com域名服务器返回magedu.com域名服务器的IP,DNS代理解析服务器将用户请求转发至magedu.com域名服务器
7) magedu.com域名服务器查询本地配置文件,得到对应的IP,返回查询结果给DNS代理解析服务器
8) DNS代理解析服务器将www.magedu.com和对应的IP发送给DNS缓存服务器进行保存,同时将查询结果返回给用户
9) 用户得到查询结果,并保存到本机的DNS服务缓存
(2) 搭建主-辅服务器:
1) 环境要求
需要四台主机
DNS主服务器:10.0.0.81
DNS从服务器: 10.0.0.73
web服务器:10.0.0.71
DNS客户端:10.0.0.72
2) 提前准备
关闭SElinux
关闭防火墙
时间同步
3) 主DNS服务端配置
安装DNS服务
yum install bind -y
配置/etc/named.conf
vim /etc/named.conf
注释掉下面两行
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
只允许从服务器进行区域传输
allow-transfer { 从服务器IP;};
配置/etc/named.rfc1912.zones
vim /etc/named.rfc1912.zones
加上这段
zone "magedu.org" {
type master;
file "magedu.org.zone";
};
配置/var/named/magedu.org.zone
vim /var/named/magedu.org.zone
$TTL 1D
@ IN SOA master admin.magedu.org. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
NS slave
master A 10.0.0.81
slave A 10.0.0.73
启动服务
systemctl start named #第一次启动服务
rndc reload #不是第一次启动服务
4) 从DNS服务器配置
安装DNS服务
yum install bind -y
配置/etc/named.conf
vim /etc/named.conf
注释掉下面两行
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
不允许其它主机进行区域传输
allow-transfer { none;};
配置/etc/named.rfc1912.zones
vim /etc/named.rfc1912.zones
zone "magedu.org" {
type slave;
masters { 主服务器IP;};
file "slaves/magedu.org.slave";
};
启动服务
systemctl start named #第一次启动服务
rndc reload #不是第一次启动服务
查看区域数据库文件是否生成
ls /var/named/slaves/magedu.org.slave
5) 客户端测试主从DNS服务架构
配置网卡
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1=主服务器
DNS2=从服务器
验证主DNS服务器是否可以查询
dig www.magedu.org
curl www.magedu.org
在主服务器上停止DNS服务
systemctl stop named
验证从DNS服务器仍然可以查询
dig www.magedu.org
curl www.magedu.org
2、搭建并实现智能DNS。
(1) 环境要求
需要五台主机
DNS主服务器和web服务器1:10.0.0.81/24,172.16.0.81/16
web服务器2:10.0.0.82/24
web服务器3:172.16.0.82/16
DNS客户端1:10.0.0.71/24
DNS客户端2:172.16.0.71/16
(2) 前提准备
关闭SElinux
关闭防火墙
时间同步
(3) DNS 服务器的网卡配置
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:59:ff:53 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.81/24 brd 10.0.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe59:ff53/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:cf:6b:b8 brd ff:ff:ff:ff:ff:ff
inet 172.16.0.81/16 brd 172.16.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
(4) 主DNS服务端配置文件实现view
安装DNS服务
yum install bind -y
配置/etc/named.conf
vim /etc/named.conf
在文件最前面加下面行
acl beijingnet {
192.168.8.0/24;
};
acl shanghainet {
172.16.0.0/16;
};
acl othernet {
any;
};
注释掉下面两行
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
创建view
view beijingview {
match-clients { beijingnet;};
include "/etc/named.rfc1912.zones.bj";
};
view shanghaiview {
match-clients { shanghainet;};
include "/etc/named.rfc1912.zones.sh";
};
view otherview {
match-clients { othernet;};
include "/etc/named.rfc1912.zones.other";
};
include "/etc/named.root.key";
(5) 实现区域配置文件
vim /etc/named.rfc1912.zones.bj
zone "." IN {
type hint;
file "named.ca";
};
zone "magedu.org" {
type master;
file "magedu.org.zone.bj";
};
vim /etc/named.rfc1912.zones.sh
zone "." IN {
type hint;
file "named.ca";
};
zone "magedu.org" {
type master;
file "magedu.org.zone.sh";
};
vim /etc/named.rfc1912.zones.other
zone "." IN {
type hint;
file "named.ca";
};
zone "magedu.org" {
type master;
file "magedu.org.zone.other";
};
chgrp named /etc/named.rfc1912.zones.bj
chgrp named /etc/named.rfc1912.zones.sh
chgrp named /etc/named.rfc1912.zones.other
(6) 创建区域数据库文件
vim /var/named/magedu.org.zone.bj
$TTL 1D
@ IN SOA master admin.magedu.org. (
2019042214 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 10.0.0.81
websrv A 10.0.0.82
www CNAME websrv
vim /var/named/magedu.org.zone.sh
$TTL 1D
@ IN SOA master admin.magedu.org. (
2019042214 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 172.16.0.81
websrv A 172.16.0.82
www CNAME websrv
vim /var/named/magedu.org.zone.other
$TTL 1D
@ IN SOA master admin.magedu.org. (
2019042214 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 10.0.0.81
websrv A 127.0.0.1
www CNAME websrv
修改所属组
chgrp named /var/named/magedu.org.zone.bj
chgrp named /var/named/magedu.org.zone.sh
chgrp named /var/named/magedu.org.zone.other
启动服务
systemctl start named #第一次启动服务
rndc reload #不是第一次启动服务
(7) 实现位于不同区域的三个WEB服务器
分别在三台主机上安装http服务
在web服务器1:10.0.0.81/24实现
yum install httpd
echo www.magedu.org in Other > /var/www/html/index.html
systemctl start httpd
在web服务器2:10.0.0.82/24
yum install httpd
echo www.magedu.org in Beijing > /var/www/html/index.html
systemctl start httpd
在web服务器3:172.16.0.81/16
yum install httpd
echo www.magedu.org in Shanghai > /var/www/html/index.html
systemctl start httpd
(8) 客户端测试
分别在三台主机*问
DNS客户端1:10.0.0.71/24 实现,确保DNS指向10.0.0.81
curl www.magedu.org
www.magedu.org in Beijing
DNS客户端2:172.16.0.71/16 实现,确保DNS指向172.16.0.81
curl www.magedu.org
www.magedu.org in Shanghai
DNS客户端3:10.0.0.81 实现,,确保DNS指向127.0.0.1
curl www.magedu.org
www.magedu.org in Other
3、通过编译、二进制安装MySQL5.7
(1) 源码编译安装mysql 5.7.32
1) 安装相关依赖包
yum -y install bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel gcc gcc-c++ cmake ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel
2) 做准备用户和数据目录
useradd -r -s /sbin/nologin -d /data/mysql mysql
3) 准备数据库目录
mkdir /data/mysql
chown mysql.mysql /data/mysql
4) 源码编译安装
下载并解压缩源码包
tar xvf mysql-5.7.32.tar.gz
源码编译安装mariadb
cd mysql-5.7.32/
cmake . \
-DCMAKE_INSTALL_PREFIX=/app/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DMYSQL_USER=mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
make && make install
5) 准备环境变量
echo 'PATH=/app/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
6) 生成数据库文件
cd /app/mysql/
scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql
7) 准备配置文件
cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf
8) 准备启动脚本,并启动服务
cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start
9) 安全初始化
mysql_secure_installation
(2) 二进制安装MySQL5.7
1) 安装相关包
yum -y install libaio numactl-libs
2) 创建用户和组
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
3) 准备程序文件
tar xf mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz –C /usr/local
cd /usr/local/
ln -s mysql-5.7.29-linux-glibc2.12-x86_64/ mysql
chown -R root.root /usr/local/mysql/
4) 准备环境变量
echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
5) 准备配置文件
cp /etc/my.cnf{,.bak}
vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
skip_name_resolve=1
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock
6) 生成数据库文件,并提取root密码
mysqld --initialize --user=mysql --datadir=/data/mysql
...省略...
2019-07-04T13:03:54.258140Z 1 [Note] A temporary password is generated for
root@localhost: LufavlMka6,! #注意生成root的初始密码
grep password /data/mysql/mysql.log
2019-12-26T13:31:30.458826Z 1 [Note] A temporary password is generated for
root@localhost: LufavlMka6,!
awk '/temporary password/{print $NF}' /data/mysql/mysql.log
LufavlMka6,!
7) 准备服务脚本和启动
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start
8) 修改口令
mysqladmin -uroot -p'LufavlMka6,!' password magedu
9) 测试登录
mysql -uroot -pmagedu