本实例中,我们将展现一个前端拥有2个分布式主机(均为独立IP)的个人博客站点,2个主机通过NFS服务共享站点文件,并通过TCP连接Mariadb数据库,当客户访问该站点时,DNS将将返回轮询的A记录,从而实现2台主机的httpd程序复杂均衡。
准备环境:
NFS Server的构建
[root@wordpress ~]# mkdir /share
[root@wordpress share]# wget https://cn.wordpress.org/wordpress-4.8.1-zh_CN.tar.gz
[root@wordpress share]# tar xf wordpress-4.8.1-zh_CN.tar.gz
[root@wordpress share]# yum -y install nfs-utils rpcbind
[root@wordpress share]# systemctl enable nfs-server rpcbind
[root@wordpress share]# systemctl start rpcbind
[root@wordpress share]# systemctl start nfs-server
[root@wordpress share]# vim /etc/exports.d/wp.exports
/share/wordpress 192.168.1.5(rw,async) 192.168.1.15(rw,async)
[root@wordpress share]# exportfs -r
[root@wordpress share]# exportfs -v
/share/wordpress
192.168.1.5(rw,async,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/share/wordpress
192.168.1.15(rw,async,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
[root@wordpress share]# chmod -R 777 /share/wordpress #授予文件系统写权限
配置Mariadb服务器
MariaDB [(none)]> create database blog; #创建数据库
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all on blog.* to wpadmin@'192.168.1.%' identified by 'wpmanager'; #创建并授权用户
Query OK, 0 rows affected (0.00 sec)
[root@mysql ~]# mysql -uwpadmin -pwpmanager -h192.168.1.10 #登录验证
MariaDB [(none)]> show databases; #查看数据库
+--------------------+
| Database |
+--------------------+
| information_schema |
| blog |
+--------------------+
2 rows in set (0.00 sec)
配置Web服务器(httpd+php)
[root@apache ~]# yum -y install nfs-utils #负载主机2执行同样操作 此处略过 下同
[root@apache ~]# showmount -e 192.168.1.20 #查看NFS服务器上共享的文件
Export list for 192.168.1.20:
/share/wordpress 192.168.1.15,192.168.1.5
[root@apache ~]# echo '192.168.1.20:/share/wordpress /usr/local/httpd24/htdocs nfs rw 0 0' >> /etc/fstab
[root@apache ~]# mount -a
[root@apache ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 18143556 2190204 15025048 13% /
tmpfs 953124 0 953124 0% /dev/shm
/dev/sda1 289293 40484 233449 15% /boot
192.168.1.20:/share/wordpress 33624832 1659904 30233856 6% /usr/local/httpd24/htdocs
[root@apache ~]# rm -f /usr/local/httpd24/htdocs/index.php
[root@apache ~]# ls /usr/local/httpd24/htdocs/
license.txt wp-blog-header.php wp-cron.php wp-login.php wp-trackback.php
readme.html wp-comments-post.php wp-includes wp-mail.php xmlrpc.php
wp-activate.php wp-config-sample.php wp-links-opml.php wp-settings.php
wp-admin wp-content wp-load.php wp-signup.php
打开浏览器,输入http://192.168.1.15/或http://192.168.1.5/ , 根据页面信息填入数据库信息和站点信息即可。如图:
$TTL 1D
@ IN SOA dns rname.invalid. (
20171017 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns
dns A 192.168.1.100
@ A 192.168.1.100
www A 192.168.1.100
blog A 192.168.1.5 #分别对应负载的2台Web Server
blog A 192.168.1.15
测试
[root@apache htdocs]# ping blog.zhimajihua.cn
PING blog.zhimajihua.cn (192.168.1.5) 56(84) bytes of data.
64 bytes from 192.168.1.5: icmp_seq=1 ttl=64 time=0.024 ms
64 bytes from 192.168.1.5: icmp_seq=2 ttl=64 time=0.055 ms
64 bytes from 192.168.1.5: icmp_seq=3 ttl=64 time=0.053 ms
...
[root@apache htdocs]# ping blog.zhimajihua.cn
PING blog.zhimajihua.cn (192.168.1.15) 56(84) bytes of data.
64 bytes from 192.168.1.15: icmp_seq=1 ttl=64 time=1.44 ms
64 bytes from 192.168.1.15: icmp_seq=2 ttl=64 time=0.635 ms
64 bytes from 192.168.1.15: icmp_seq=3 ttl=64 time=0.595 ms
...