如何使用NFS扩展WordPress网站

时间:2020-01-09 10:39:40  来源:igfitidea点击:

了解如何使用NFS在多个服务器上扩展WordPress网站。
如何确保托管我们网站的所有服务器具有相同的内容?
解决此问题的一种方法是使用NFS或者网络文件系统共享来存储内容。共享可以添加到每台服务器,从而使其可以立即访问所有新内容。无需摆弄rsync或者自定义脚本即可将内容复制到每台服务器。

服务器设置

我们的教程将使用以下服务器

服务器操作系统角色IPCPURAM
proxy-1Ubuntu 16.04NGINX负载平衡器10.0.5.1011 GB
nfs-1Ubuntu 16.04Ubuntu nfs服务器10.0.5.1112 GB
wordpress-1Ubuntu 16.04wordpress服务器10.0.5.1211GB
wordpress-2Ubuntu 16.04wordpress服务器10.0.5.1311 GB
wordpress-3Ubuntu 16.04wordpress服务器10.0.5.1411 GB

NGINX负载平衡

我们的解决方案使用NGINX服务器在三台WordPress服务器之间平衡负载。我们可以使用自己喜欢的任何负载均衡器。关键是我们只有一个终结点,可以将请求推送到后端WordPress服务器之一。

  • SSH到Nginx服务器。

  • 安装NGINX。

sudo apt install nginx
  • 在文本编辑器(例如VI)中打开NGINX配置文件。
sudo vi /etc/nginx/nginx.conf
  • 配置NGINX以将代理HTTP请求反向转发到我们的三个后端WordPress服务器。已部署的NGINX服务器在/etc/nginx/nginx.conf中具有以下基本配置设置。对于生产来说,这可能不是理想的配置文件。这只是一个示例,说明了如何在三台服务器之间平衡负载。
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {

    # List of servers that host WordPress
    upstream wordpress {
      server 10.0.5.12:8080;
      server 10.0.5.13:8080;
      server 10.0.5.14:8080;
    }

    server {
      listen 80;
      location / {
        # Pass all requests to the backend wordpress servers.
        proxy_pass http://wordpress;
      }
    }

    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;

    keepalive_timeout  65;

}
  • 保存更改并退出文本编辑器。

  • 重新启动NGINX以应用我们的设置。

创建一个NFS共享

我们将需要创建所有WordPress服务器都可以挂载的NFS共享。最好的方法是部署专用的NFS服务器。在本教程中,我们将部署Ubuntu 16.04服务器来托管我们的NFS共享。

  • 登录到NFS服务器。

  • 创建一个目录来承载共享内容。

sudo mkdir -p /srv/exports/wordpress
  • 安装NFS服务器内核软件包
sudo apt install nfs-kernel-server
  • NFS软件包安装将创建一个名为/ etc / exports的文件。在文本编辑器中打开此文件。
sudo vi /etc/exports
  • 添加条目以导出共享的WordPress目录。导出文件应类似于以下内容。
/srv/exports/wordpress 10.0.5.0/24(rw,sync,no_root_squash,no_subtree_check)

如果我们不熟悉NFS导出,则以上行将目录/ srv / exports / wordpress导出到10.0.5.0/24子网中的任何服务器。它允许读写访问。 sync选项可确保所有写入操作均已完成。

  • 导出新的NFS共享。
sudo exportfs

在WordPress服务器上挂载NFS共享

在每台WordPress服务器上,我们都需要安装共享。在我们的共享中,我们创建了几个目录-主题,插件,上载。我们可以分别安装每个文件,以确保所有WordPress网站都使用相同的相应文件。

我们将假设WordPress文件托管在/ var / www / html中。如果不是,请修改以下说明,以便它们引用安装目录。

  • SSH进入第一个WordPress服务器。

  • 在文本编辑器中打开fstab文件。

sudo vi /etc/fstab
  • 将以下行添加到文件中。每个安装不同的共享WordPress目录。
10.0.5.11:/srv/exports/wordpress /var/www/html nfs auto 0 0
  • 保存更改并退出文本编辑器。

  • 挂载。

sudo mount -a
  • 下载最新的WordPress版本。
wget http://wordpress.org/latest.tar.gz
  • 将WordPress tar的内容提取到NFS挂载的共享中。
tar xvf latest.tar.gz -C /var/www/html --strip-components=1
  • 在其余的WordPress服务器上执行NFS挂载任务(至5)。

测试WordPress网站

既然每个WordPress服务器都已安装共享,请测试我们是否可以上传新内容。如果上传成功,请登录每个WordPress服务器并检查上传目录的内容。

我们应该看到已在每台WordPress服务器上上传的文件。

风险

使用NFS是跨多个服务器扩展WordPress网站的一种简单方法。但是,像其他任何事情一样,在遵循此示例时,我们应该意识到一些危险。

关注的主要方面是NFS服务器成为单点故障。如果它由于任何原因脱机,WordPress网站将无法提供共享内容。

如果主题和插件存储在共享中(如我们在示例中所做的那样),则不会加载网站。

通过使NFS服务器具有尽可能多的冗余来保护自己。将共享放置在具有足够保护的RAID卷上。添加多个网络接口以实现容错功能。每晚备份NFS导出。