DNSサービスを構成し、MariaDBをコンパイルしてインストールします

1. DNSサーバーの原理を簡単に説明し、マスタースレーブサーバーを構築します

DNSサービスの原則

DNSサービスは、IPアドレスとWebサイトのドメイン名の間の対応を維持する責任があります。オンラインになると、主にWebサイトのドメイン名を介してインターネット上のさまざまなリソースにアクセスします。インターネット上のコンピューターは、IPアドレスを使用して相互に識別します。
DNSサーバーはドメイン名をIPアドレスに解決できます。これは、現時点ではフォワード解決と呼ばれています。さらに、DNSサーバーはIPアドレスをドメイン名に解決することもできます。これは現時点では逆解決と呼ばれています。人々がウェブサイトを訪問するとき、それは前方分析です。
コンピューターがwww.example.comにアクセスするプロセスは次のとおりです
。1。ユーザーのコンピューターは、最初にローカルホストファイルとDNSキャッシュを照会して、ドメイン名www.example.comの解決レコードがあるかどうかを確認します。その場合は、分析記録に基づいて直接www.example.comにアクセスしてください。そうでない場合は、ドメイン名を解決する要求をこのコンピューターによって設定されたDNSサーバーに送信します。
2. DNSサーバーが要求を受信した後、最初にサーバーにドメイン名の解決レコードがあるかどうかを確認します。その場合、DNSサーバーは解決レコードをユーザーのコンピューターに直接送信します。そうでない場合、DNSサーバーはこの解決要求をルートドメインネームサーバーに送信します。
3. DNSサーバーからクエリ要求を受信した後、ルートドメインネームサーバーは、Webサイトドメイン名の第1レベルのドメイン名、つまり.comに対応するドメインネームサーバーのIPアドレスをDNSサーバーに送信します。
4. .comドメインネームサーバーのIPアドレスを受信した後、DNSサーバーは.comドメインネームサーバーにwww.example.comのIPアドレスを照会します。.comドメインネームサーバーは、Webサイトドメイン名の第2レベルのドメイン名、つまりexample.comに対応するドメインネームサーバーのIPアドレスをDNSサーバーに送信します。
5. example.comドメインネームサーバーのIPアドレスを受信した後、DNSサーバーはexample.comドメインネームサーバーにクエリ要求を送信します。example.comドメインネームサーバーは、www.example.comドメイン名のサーバーIPアドレスをDNSサーバーに送信します。
6. DNSサーバーは、www.example.comドメイン名に対応するIPアドレスを受信すると、この情報をユーザーのコンピューターに送信します。
7.ユーザーコンピュータは、www.example.comドメイン名に対応するIPアドレスを受信すると、対応するサーバーに直接アクセスし、このドメイン名のDNSキャッシュを生成します。

Webサイトのドメイン名を初めて解決するときは、2つのクエリ方法が使用されました。
再帰クエリ:ユーザーコンピュータは、ホストファイル、ローカルdnsキャッシュ、およびDNSサーバーを順番にクエリします。
反復クエリ:DNSサーバーがルートドメインネームサーバー、第1レベルのドメインネームサーバー、第2レベルのドメインネームサーバー、第3レベルのドメインネームサーバー、さらに多くのドメイン名を順番にクエリするプロセス。

DNSマスタースレーブサーバーを構築する

DNSマスターサーバーとスレーブサーバーを構築してテストするには、4台の仮想マシンが必要です

  • DNSマスターサーバー
  • DNSスレーブサーバー
  • Webサーバー
  • DNSクライアント

各仮想マシンは、事前に次の2つの構成を完了する必要があります

  1. ファイアウォールfirewslldサービスをオフにします
  2. SELinuxをオフにします
# 1、配置主DNS服务端

# 安装bind软件
yum install -y bind 

# 编辑配置文件
sed -i 's/listen-on port 53 { 127.0.0.1; };/#listen-on port 53 { 127.0.0.1; };/' /etc/named.conf
sed -i 's/allow-query     { localhost; };/#allow-query     { localhost; };/' /etc/named.conf
sed -i '21a \\tallow-transfer {192.168.0.51;};' /etc/named.conf
sed -i '$a \
zone "example.com" IN { \
    type master; \
    file  "example.com.zone"; \
};' /etc/named.rfc1912.zones  

cat > /var/named/example.com.zone << EOF
\$TTL 1D
@   IN SOA  master admin.example.com. (
                10  ; serial                    
                1D  ; refresh                    
                1H  ; retry                    
                1W  ; expire                    
                3H )    ; minimum            
            NS   master
            NS   slave
master      A    192.168.0.12      
slave       A    192.168.0.51
www         A    192.168.0.50
EOF

# 检查配置文件是否存在问题
named-checkconf && echo "config OK"

# 启动dns服务
systemctl start named

# 2、配置从DNS服务端

yum install bind -y

sed -i 's/listen-on port 53 { 127.0.0.1; };/#listen-on port 53 { 127.0.0.1; };/' /etc/named.conf
sed -i 's/allow-query     { localhost; };/#allow-query     { localhost; };/' /etc/named.conf
sed -i '21a \\tallow-transfer {none;};' /etc/named.conf
sed -i '$a \
zone "example.com" IN { \
    type slave; \
    masters {192.168.0.12;}; \
    file  "slaves/example.com.slave"; \
};' /etc/named.rfc1912.zones 

systemctl start named

# 检查配置是否正确
ls  /var/named/slaves/example.com.slave

# 3、配置Web服务器

yum install -y httpd 
echo www.example.com  > /var/www/html/index.html
systemctl start httpd

# 4、配置客户端进行测试

# 设置dns服务器的IP地址
cat > /etc/resolv.conf  << EOF
nameserver 192.168.0.12
nameserver 192.168.0.51
EOF

# 测试DNS服务器的配置
curl www.example.com

# 也可以使用ping命令进行测试
ping www.example.com

# 让DNS主服务器停止DNS服务,再次使用客户端进行测试
curl www.example.com

2.スマートDNSを構築して実装する


# 1、配置DNS服务器
# 使用ip命令配置第二个ip地址
ip addr add 172.16.10.11/16 dev ens37 

yum install -y bind bind-utils

cat > /etc/named.conf << EOF
acl beijingnet { 
    192.168.0.0/24; 
}; 
acl shanghainet { 
    172.16.0.0/16; 
}; 
acl othernet { 
    any; 
}; 
options {
    listen-on-v6 port 53 { ::1; };
    directory   "/var/named";
    dump-file   "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    recursing-file  "/var/named/data/named.recursing";
    secroots-file   "/var/named/data/named.secroots";
    recursion yes;
    dnssec-enable yes;
    dnssec-validation yes;
    bindkeys-file "/etc/named.root.key";
    managed-keys-directory "/var/named/dynamic";
    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
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";
EOF

echo '
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";
' >> /etc/named.rfc1912.zones

echo '
zone "example.org" {
    type master;
    file "example.org.zone.bj";
};
' > /etc/named.rfc1912.zones.bj

echo '
zone "example.org" {
    type master;
    file "example.org.zone.sh";
};
' > /etc/named.rfc1912.zones.sh

echo '
zone "example.org" {
    type master;
    file "example.org.zone.other";
};
' > /etc/named.rfc1912.zones.other

chgrp named /etc/named.rfc1912.zones.{bj,sh,other}

cat > /var/named/example.org.zone.bj << EOF
\$TTL 1D
@   IN  SOA     master admin.example.org. (
                        10  ;   serial
                        1D  ;   refesh
                        1H  ;   retry
                        1W  ;   expire
                        3H )    ;   minium
            NS      master
master      A       192.168.0.12
websrv      A       192.168.0.13
www         CNAME   websrv
EOF

cat > /var/named/example.org.zone.sh << EOF
\$TTL 1D
@   IN  SOA     master admin.example.org. (
                        10  ;   serial
                        1D  ;   refesh
                        1H  ;   retry
                        1W  ;   expire
                        3H )    ;   minium
            NS      master
master      A       192.168.0.12
websrv      A       172.168.0.12
www         CNAME   websrv
EOF

cat > /var/named/example.org.zone.other << EOF
\$TTL 1D
@   IN  SOA     master admin.example.org. (
                        10  ;   serial
                        1D  ;   refesh
                        1H  ;   retry
                        1W  ;   expire
                        3H )    ;   minium
            NS      master
master      A       192.168.0.13
websrv      A       127.0.0.1
www         CNAME   websrv
EOF

chgrp named /var/named/example.org.zone.{bj,sh,other}

named-checkconf
systemctl start named

# 2、进行测试

# 使用192.168.0.0/24网段的虚拟机进行测试
yum install -y bind-utils
echo "nameserver 192.168.0.12" > /etc/resolv.conf
dig www.example.org @192.168.0.12

# 使用172.16.0.0/16网段的虚拟机进行测试
yum install -y bind-utils
echo "nameserver 172.16.10.11" > /etc/resolv.conf
dig www.example.org @172.16.10.11

# 使用DNS网段的虚拟机进行测试
echo "nameserver 192.168.0.12" > /etc/resolv.conf
dig www.example.org @127.0.0.1

Mariadbをコンパイルしてインストールすると、起動後に通常どおりログインできます


# 卸载系统自带的mariadb-libs包
yum remove mariadb-libs -y

# 下载Mariadb 10.2版本的源码文件
wet https://mirrors.huaweicloud.com/mariadb/mariadb-10.2.36/source/mariadb-10.2.36.tar.gz

# 验证文件的完整性,将输出内容与华为开源镜像站里对应的sha256sum.txt的内容进行对比
sha256sum mariadb-10.2.36.tar.gz 

# 解压源码压缩文件
tar -xf mariadb-10.2.36.tar.gz 

# 安装mariadb依赖的软件包
yum install -y git gcc gcc-c++ make cmake perl \
pcre-devel openssl-devel bison bison-devel libxml2-devel \
libevent-devel ncurses-devel libaio-devel zlib-devel \
libcurl-devel libarchive-devel boost-devel

# 创建mysql用户
useradd -r -s /sbin/nologin -d /usr/local/mysql -M mysql

cd mariadb-10.2.36

# 使用cmake生成makefile
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 \
> /dev/null && echo OK

# 编译并且安装mariadb
# -j参数用于指定编译的线程数,可以提高编译速度,不能设置得太大,否则会造成虚拟机死机
make -j 7 > /dev/null && make install > /dev/null && echo OK

# 设置环境变量,实现直接使用mysql命令
echo 'PATH=/app/mysql/bin:$PATH' > /etc/profile.d/mysql.sh && . /etc/profile.d/mysql.sh

# 初始化MariaDB
cd /app/mysql
scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql > /dev/null && echo OK

# 复制配置文件
cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf

# 将启动脚本复制到/etc/init.d/,实现通过chkconfig命令管理mysqld服务
cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start

# 安全初始化MariaDB
mysql_secure_installation

# 使用root身份登录数据库
mysql -uroot -p

おすすめ

転載: blog.51cto.com/14920534/2593876