配置DNS服务和编译安装MariaDB
1、简述DNS服务器原理,并搭建主从服务器
DNS服务的原理
DNS服务负责维护IP地址和网站域名的对应关系。人们上网时主要通过网站的域名访问互联网的各种资源。互联网中的计算机是通过IP地址识别彼此的身份。
DNS服务器可以将域名解析为IP地址,此时称为正向解析。除此之外DNS服务器也可以将IP地址解析为域名,此时称为反向解析。当人们访问访问网站时,进行的是正向解析。
某台电脑访问www.example.com的流程如下:
1、用户的电脑首先查询本地的hosts文件和dns缓存是否有www.example.com这个域名的解析记录。如果有,就直接根据解析记录访问www.example.com。如果没有就会向此电脑设置的DNS服务器发出解析域名的请求。
2、DNS服务器收到请求后先查看本服务器是否有该域名的解析记录。如果有,DNS服务器就直接将解析记录发送给用户电脑。如果没有,DNS服务器会将这个解析请求发送给根域名服务器。
3、根域名服务器收到DNS服务器的查询请求后,将该网站域名中的一级域名即.com对应的域名服务器的IP地址发送给DNS服务器。
4、DNS服务器收到.com域名服务器的IP地址后,向.com域名服务器查询www.example.com的IP地址。.com域名服务器将该网站域名的二级域名即example.com对应的域名服务器的IP地址发送给DNS服务器。
5、DNS服务器收到example.com域名服务器的IP地址后,向example.com域名服务器发送查询请求。example.com域名服务器将www.example.com域名的服务器IP地址发送给DNS服务器。
6、DNS服务器收到www.example.com域名对应的IP地址后,将此信息发送到用户电脑。
7、用户电脑收到www.example.com域名对应的IP地址后,直接访问对应服务器,并且产生此域名的dns缓存。
在首次解析一个网站的域名时,使用了两种查询方式。
递归查询:用户电脑依次查询hosts文件、本地dns缓存、DNS服务器。
迭代查询:DNS服务器依次查询根域名服务器、一级域名服务器、二级域名服务器、三级域名服务器乃至更多级别的域名的过程。
搭建DNS主从服务器
搭建并且测试DNS主从服务器需要四台虚拟机
- DNS主服务器
- DNS从服务器
- Web服务器
- DNS客户端
每台虚拟机都要提前完成以下两点配置
- 关闭防火墙firewslld服务
- 关闭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.confsed -i 's/allow-query { localhost; };/#allow-query { localhost; };/' /etc/named.confsed -i '21a \\tallow-transfer {192.168.0.51;};' /etc/named.confsed -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 slavemaster A 192.168.0.12 slave A 192.168.0.51www A 192.168.0.50EOF# 检查配置文件是否存在问题named-checkconf && echo "config OK"# 启动dns服务systemctl start named# 2、配置从DNS服务端yum install bind -ysed -i 's/listen-on port 53 { 127.0.0.1; };/#listen-on port 53 { 127.0.0.1; };/' /etc/named.confsed -i 's/allow-query { localhost; };/#allow-query { localhost; };/' /etc/named.confsed -i '21a \\tallow-transfer {none;};' /etc/named.confsed -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.htmlsystemctl start httpd# 4、配置客户端进行测试# 设置dns服务器的IP地址cat > /etc/resolv.conf << EOFnameserver 192.168.0.12nameserver 192.168.0.51EOF# 测试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-utilscat > /etc/named.conf << EOFacl 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";EOFecho '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.zonesecho 'zone "example.org" { type master; file "example.org.zone.bj";};' > /etc/named.rfc1912.zones.bjecho 'zone "example.org" { type master; file "example.org.zone.sh";};' > /etc/named.rfc1912.zones.shecho 'zone "example.org" { type master; file "example.org.zone.other";};' > /etc/named.rfc1912.zones.otherchgrp 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 mastermaster A 192.168.0.12websrv A 192.168.0.13www CNAME websrvEOFcat > /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 mastermaster A 192.168.0.12websrv A 172.168.0.12www CNAME websrvEOFcat > /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 mastermaster A 192.168.0.13websrv A 127.0.0.1www CNAME websrvEOFchgrp named /var/named/example.org.zone.{bj,sh,other}named-checkconfsystemctl start named# 2、进行测试# 使用192.168.0.0/24网段的虚拟机进行测试yum install -y bind-utilsecho "nameserver 192.168.0.12" > /etc/resolv.confdig www.example.org @192.168.0.12# 使用172.16.0.0/16网段的虚拟机进行测试yum install -y bind-utilsecho "nameserver 172.16.10.11" > /etc/resolv.confdig www.example.org @172.16.10.11# 使用DNS网段的虚拟机进行测试echo "nameserver 192.168.0.12" > /etc/resolv.confdig 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 mysqlcd mariadb-10.2.36# 使用cmake生成makefilecmake . \-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# 初始化MariaDBcd /app/mysqlscripts/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/mysqldchkconfig --add mysqldservice mysqld start# 安全初始化MariaDBmysql_secure_installation# 使用root身份登录数据库mysql -uroot -p
更多相关文章
- 服务器软件大盘点!
- JQuery.AJAX - 我的服务器可以返回一大块数据吗?
- jQuery向服务器请求数据并处理
- 如何使用XMLHttpRequest向服务器发送数组
- 使用js和ajax从django服务器检索数据
- 使用jQuery.ajax post函数将javascript数组中的数据传递给服务器
- ASP.NET下使用jQuery UI下的Dialog,服务器端按钮无响应的问题。
- Jquery注册服务器控件事件与判断控件的值
- 与symfony一起使用ajax时出现500内部服务器错误