架构设计

架构图:

image-20240411113351174

实现逻辑:

该架构是一个基于Linux的分布式WordPress网站部署,结合了NFS和MySQL数据库,支持负载均衡和内容共享。

该分布式网络应用架构,其中包含四台服务器,分别承担不同的角色以支持WordPress网站的运行和管理。该架构支持冗余和资源共享,优化了资源利用率和可用性。

  1. 数据库服务器(IP地址:10.0.0.131):
    • 一台服务器专门配置为MySQL数据库服务器,存储WordPress网站的所有数据,包括文章内容、用户信息和网站设置等。
  2. 网络文件系统(NFS)服务器(IP地址:10.0.0.137):
    • NFS服务器配置了共享目录/data/wordpress/wp-content/uploads,该目录存储WordPress网站的上传内容,如媒体文件和用户上传的内容。
  3. 两台Web服务器(IP地址:10.0.0.107和10.0.0.134):
    • 每台服务器都运行着Linux, Apache(HTTPD)和PHP-FPM,以提供网页内容和执行WordPress PHP脚本。
    • 这两台Web服务器配置为通过NFS挂载共享的wp-content/uploads目录到本地路径/var/www/html/wp-content/uploads。这样,无论哪台服务器处理用户请求,都能保证用户访问到相同的上传内容。
  4. 客户端访问和域名解析:
    • 客户端计算机(如代表用户访问网站的个人电脑)通过设置hosts文件,将域名(例如blog.yuyu.org)解析到两台Web服务器的IP地址。这允许您测试负载均衡和冗余策略,确保两台Web服务器都能独立响应客户端的请求。

安装NFS

[root@nfs ~]# yum install nfs-utils
Last metadata expiration check: 3:11:19 ago on Thu 11 Apr 2024 09:54:09 AM CST.
Package nfs-utils-1:2.5.4-20.el9.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@nfs ~]# systemctl enable --now nfs-server
[root@nfs ~]# mkdir -pv /data/wordpress/wp-content/uploads
[root@nfs ~]# cat /etc/exports
/data/wordpress/wp-content/uploads/     10.0.0.0/24(rw)
[root@nfs ~]# exportfs -r
[root@nfs ~]# exportfs -v
/data/wordpress/wp-content/uploads
                10.0.0.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)

# 因为lap机器上的apache用户的id就是48,如果这里不设置成48的话,客户端挂载以后是写不进去的                
[root@nfs ~]# chown -R 48:48 /data/wordpress/wp-content/

安装MySQL 8.0

[root@mysql ~]# yum install mysql-server
Last metadata expiration check: 4:02:41 ago on Thu 11 Apr 2024 09:53:25 AM CST.
Package mysql-server-8.0.36-1.el9_3.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@mysql ~]# systemctl enable --now mysqld
[root@mysql ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 335
Server version: 8.0.36 Source distribution

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database wordpress;
mysql> create user wordpress@'10.0.0.%' identified by '123456';
mysql> grant all on wordpress.* to wordpress@'10.0.0.%';

安装LAP

# 本次两台服务器使用的Rocky Linux 9.0和Rocky Linux 9.2
# 安装httpd、php-fpm、php-mysqlnd、nfs-utils
[root@Rocky9 themes]#dnf -y install httpd php-fpm php-mysqlnd nfs-utils
Last metadata expiration check: 3:37:21 ago on Thu 11 Apr 2024 09:24:45 AM CST.
Package httpd-2.4.57-5.el9.x86_64 is already installed.
Package php-fpm-8.0.30-1.el9_2.x86_64 is already installed.
Package php-mysqlnd-8.0.30-1.el9_2.x86_64 is already installed.
Package nfs-utils-1:2.5.4-20.el9.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@Rocky9 themes]#
#开机自启动并启动
[root@Rocky9 ~]# systemctl enable --now httpd php-fpm
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.
[root@Rocky9 ~]# showmount -e 10.0.0.137
Export list for 10.0.0.137:
/data/wordpress/wp-content/uploads 10.0.0.0/24
[root@Rocky9 ~]# vi /etc/fstab
10.0.0.137:/data/wordpress/wp-content/uploads/  /var/www/html/wp-content/uploads/               nfs     _netdev         0 0
[root@Rocky9 ~]# mkdir -pv /var/www/html/wp-content/uploads/
# 上传wordpress压缩包latest-zh_CN.zip
[root@Rocky9 ~]# unzip latest-zh_CN.zip
[root@Rocky9 ~]# ls
[root@Rocky9 ~]#ls
anaconda-ks.cfg  latest-zh_CN.zip  original-ks.cfg  wordpress
[root@Rocky9 ~]# cp -ar wordpress/* /var/www/html
#修改所属主和组
[root@Rocky9 ~]# chown -R apache.apache /var/www/html
[root@Rocky9 ~]# mount -a
[root@Rocky9 themes]#df
Filesystem                                    1K-blocks    Used Available Use% Mounted on
devtmpfs                                           4096       0      4096   0% /dev
tmpfs                                            479376       0    479376   0% /dev/shm
tmpfs                                            191752    7120    184632   4% /run
/dev/sda2                                     104806400 1987436 102818964   2% /
/dev/sda3                                      52403200  398400  52004800   1% /data
/dev/sda1                                       9976648  146248   9302016   2% /boot
10.0.0.137:/data/wordpress/wp-content/uploads  52363264  480000  51883264   1% /var/www/html/wp-content/uploads
tmpfs                                             95872       0     95872   0% /run/user/0
[root@Rocky9 themes]

客户端访问

# 在windows/system32/drivers/etc/hosts配置映射关系
10.0.0.107 blog.yuyu.org
http://blog.yuyu.org

image-20240411141723430

image-20240411141821363

Categories: NFS+LAMP

邢宇宇

我是一名热情的云原生架构师和Java开发者,专注于构建可扩展的大数据解决方案。我的职业旅程始于对代码的热爱和创新技术的追求。我拥有在云计算和大数据领域深厚的技术背景,这使我能够设计和实现高效、稳健的系统。 我擅长使用Java来开发高性能的应用程序,同时也深入研究了如何利用云服务来优化数据处理过程。我热衷于探索新技术,如容器化、微服务架构和自动化,这些都是当今构建和部署现代软件解决方案的关键元素。 在我的博客中,我分享我的专业知识和行业见解,探讨最佳实践,以及如何克服在云原生生态系统中遇到的挑战。我相信通过共享和协作,我们可以推动技术的发展,创造出更好的解决方案来解决复杂问题。欢迎加入我的技术之旅,与我一起深入云原生的世界!

0 Comments

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注