架构简介:
这里其实就是使用的LAMP+NFS组合,将结构化数据存储在mysql数据库服务器中(例如论坛用户数据,文字内容等等),非结构化数据(例如附件数据,多媒体文件)存储在NFS服务器上的文件系统中;其具体架构为:2台web服务器,1台NFS服务器,1台mysql服务器,1台DNS服务器;如下图所示
web服务器1:172.16.20.241,CentOS6
web服务器2:172.16.20.242,CentOS6
DNS服务器:172.16.20.244,CentOS6
mysql服务器:172.16.20.243,CentOS7
NFS服务器:172.16.20.245,CentOS7
具体配置:
1、NFS服务器配置,172.16.20.245:
[iyunv@localhost ~]# yum install nfs-utils -y
[iyunv@localhost ~]# systemctl start nfs
[iyunv@localhost ~]# systemctl start rpcbind
[iyunv@localhost ~]# mkdir /web // 创建一个目录用于存放wordpress并导出
[iyunv@localhost ~]# unzip wordpress-4.7.4-zh_CN.zip
[iyunv@localhost ~]# cp -r wordpress
[iyunv@localhost ~]# vim /etc/exports
/web/wordpress 172.16.20.241(rw,no_root_squash) 172.16.20.242(rw,no_root_squash) // 导出wordpress目录,并设置root用户允许访问,因为必须要以root用户的身份运行,才能安装wordpress
[iyunv@localhost ~]# chown -R :apache /web/wordpress // 由于wordpress用于httpd服务,因此apache用户需要有此目录的读写权限
[iyunv@localhost ~]# chmod -R g+rw /web/wordpress
[iyunv@localhost ~]# systemctl restart nfs // 重启服务使exports导出的目录生效
[iyunv@localhost ~]# showmount -e 172.16.20.245 // 使用此命令可以查看目标主机已导出的目录
Export list for 172.16.20.245:
/web/wordpress 172.16.20.242,172.16.20.241
[iyunv@localhost ~]#
2、mysql服务器配置,172.16.20.243:
[iyunv@localhost ~]# yum install mysql-server -y //这里使用rpm包简易安装,更专业的做法是使用二进制格式安装,将mysql数据存放到一个单独的磁盘中,便于管理和容灾
[iyunv@localhost ~]# mysql
mysql> create database web; //创建wordpress用的数据库
Query OK, 1 row affected (0.00 sec)
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> grant all privileges on web.* to 'user1'@'%' identified by 'redhat'; //给web数据库授权一个专用用户user1并设置密码,这里可能会有人想,直接用root用户就行了;但是这样是不安全的,而且rpm包安装的mysql默认是禁止root用户远程登录,并且直接以root用户登陆数据库也非常的不安全
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges; //手动刷新权限表,使新作出的更改立即生效
Query OK, 0 rows affected (0.00 sec)
mysql> select host,user,password from user;
+-----------------------+-------+-------------------------------------------+
| host | user | password |
+-----------------------+-------+-------------------------------------------+
| localhost | root | |
| localhost.localdomain | root | |
| 127.0.0.1 | root | |
| localhost | | |
| localhost.localdomain | | |
| % | user1 | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |
+-----------------------+-------+-------------------------------------------+
6 rows in set (0.00 sec)
// 这里可以看出我们新建的user1用户已经生效了
mysql>
3、DNS服务器配置,172.16.20.244:
[iyunv@localhost ~]# yum install bind -y
[iyunv@localhost ~]# vim /etc/named.ca
修改以下选项
listen-on port 53 { 172.16.20.244; 127.0.0.1; };
allow-query { any; };
dnssec-enable no;
dessec-validation no;
[iyunv@localhost ~]# vim /etc/named.rfc1912.zones
添加如下行
zone "gumpti.com" IN {
type master;
file "gumpti.com.zone";
};
// 添加一个主区域
[iyunv@localhost ~]# vim /var/named/gumpti.com.zone
$TTL 1D
$ORIGIN gumpti.com.
@ IN SOA ns1.gumpti.com. admin.gumpti.com (
2017120201
1M
5M
7D
1D )
IN NS ns1.gumpti.com.
IN NS www.gumpti.com.
ns1 IN A 172.16.20.244
www IN A 172.16.20.241
www IN A 172.16.20.242
[iyunv@localhost ~]# service named start
[iyunv@localhost ~]# dig -t A www.gumpti.com @172.16.20.244 //查看A记录是否生效
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.3 <<>> -t A www.gumpti.com @172.16.20.244
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 215
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.gumpti.com. IN A
;; ANSWER SECTION:
www.gumpti.com. 86400 IN A 172.16.20.241
www.gumpti.com. 86400 IN A 172.16.20.242
;; AUTHORITY SECTION:
gumpti.com. 86400 IN NS www.gumpti.com.
gumpti.com. 86400 IN NS ns1.gumpti.com.
;; ADDITIONAL SECTION:
ns1.gumpti.com. 86400 IN A 172.16.20.244
;; Query time: 24 msec
;; SERVER: 172.16.20.244#53(172.16.20.244)
;; WHEN: Wed Dec 06 15:11:42 CST 2017
;; MSG SIZE rcvd: 123
// 再执行一次dig命令查看两条A记录的轮询效果是否生效
[iyunv@localhost ~]# dig -t A www.gumpti.com @172.16.20.244
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.3 <<>> -t A www.gumpti.com @172.16.20.244
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27457
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.gumpti.com. IN A
;; ANSWER SECTION:
www.gumpti.com. 86400 IN A 172.16.20.242
www.gumpti.com. 86400 IN A 172.16.20.241
;; AUTHORITY SECTION:
gumpti.com. 86400 IN NS ns1.gumpti.com.
gumpti.com. 86400 IN NS www.gumpti.com.
;; ADDITIONAL SECTION:
ns1.gumpti.com. 86400 IN A 172.16.20.244
;; Query time: 0 msec
;; SERVER: 172.16.20.244#53(172.16.20.244)
;; WHEN: Wed Dec 06 15:13:24 CST 2017
;; MSG SIZE rcvd: 123
[iyunv@localhost ~]#
4、配置WEB服务器1,172.16.20.241:
[iyunv@localhost ~]# showmount -e 172.16.20.245
Export list for 172.16.20.245:
/web/wordpress 172.16.20.242,172.16.20.241
[iyunv@localhost /]# mkdir /www/wordpress -pv
[iyunv@localhost ~]# mount -t nfs 172.16.20.245:/web/wordpress /www/wordpress/
// 挂载NFS服务器172.16.20.245导出的/web/wordpress到本地的/www/wordpress目录
[iyunv@localhost ~]# yum install httpd php php-mysql -y
[iyunv@localhost ~]# vim /etc/httpd/conf/httpd.conf
修改如下行
DocumentRoot "/www/wordpress/"
<Directory "/www/wordpress/">
[iyunv@localhost ~]# cp /www/wordpress/wp-config-sample.php /www/wordpress/wp-config.php
[iyunv@localhost ~]# vim /www/wordpress/wp-config.php
// 修改wordpress的配置文件
define('DB_NAME', 'web'); // 指定wordpress使用的数据库为web数据库
define('DB_USER', 'user1'); // 指定wordpress使用的连接数据库的用户为user1
define('DB_PASSWORD', 'redhat'); // 指定wordpress使用的用户user1的密码
define('DB_HOST', '172.16.20.243'); // 指定wordpress使用的数据库的服务器IP
[iyunv@localhost ~]# service httpd start
5、配置WEB服务器2,172.16.20.242:
[iyunv@localhost ~]# showmount -e 172.16.20.245
Export list for 172.16.20.245:
/web/wordpress 172.16.20.242,172.16.20.241
[iyunv@localhost /]# mkdir /www/wordpress -pv
[iyunv@localhost ~]# mount -t nfs 172.16.20.245:/web/wordpress /www/wordpress/
// 挂载NFS服务器172.16.20.245导出的/web/wordpress到本地的/www/wordpress目录
[iyunv@localhost ~]# yum install httpd php php-mysql -y
[iyunv@localhost ~]# vim /etc/httpd/conf/httpd.conf
修改如下行
DocumentRoot "/www/wordpress/"
<Directory "/www/wordpress/">
[iyunv@localhost ~]# service httpd start
// 已经在WEB1上修改过wordpress的配置文件,这里WEB1和WEB2都是挂载的NFS服务器上的wordpress目录,使用的同一份wordpress文件
6、查看配置效果
将客户端主机的DNS服务器设置为172.16.20.244
然后在浏览器中输入地址www.gumpti.com
成功显示wordpress界面,会提示需要安装,安装并注册一个管理员账号,然后进入管理界面(实验中我注册的管理员账号为181)
点击“用户”按钮,添加一个用户(实验中我添加的是157)
然后发布几篇文章
保存后登陆另一台服务器172.16.20.242就可以查看到wordpress页面中有181用户发布的文章
也可以使用新添加的用户157登陆,也可以看到文章的发布
以上在WEB1上安装了wordpress并发布了文章,通过WEB2可以成功访问并看到相同的内容,并且可以使用不同的账号在WEB2中登陆,说明实验已经成功。
总结 :
LAMP+NFS的架构比较简单,但在实际生产环境中使用的并不多,更实用的是分布式文件系统而不是NFS,NFS性能有限,只是在小公司在过渡期中使用。
此次实验做的比较匆忙:
1、关于NFS导出的wordpress权限问题并没有做太多的研究
2、在WEB2中登陆后,网页地址依旧会跳转到WEB1,这里是还没有考究出原因,需要继续学习
3、DNS也只配置了正向解析域,没有配置反向解析域
后续再来继续填坑。
写的比较潦草,如有遗漏错误和争议之处,欢迎大家的批评指正和讨论,谢谢。
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com