如何使用NFS扩展WordPress网站
了解如何使用NFS在多个服务器上扩展WordPress网站。
如何确保托管我们网站的所有服务器具有相同的内容?
解决此问题的一种方法是使用NFS或者网络文件系统共享来存储内容。共享可以添加到每台服务器,从而使其可以立即访问所有新内容。无需摆弄rsync或者自定义脚本即可将内容复制到每台服务器。
服务器设置
我们的教程将使用以下服务器
服务器 | 操作系统 | 角色 | IP | CPU | RAM |
---|---|---|---|---|---|
proxy-1 | Ubuntu 16.04 | NGINX负载平衡器 | 10.0.5.10 | 1 | 1 GB |
nfs-1 | Ubuntu 16.04 | Ubuntu nfs服务器 | 10.0.5.11 | 1 | 2 GB |
wordpress-1 | Ubuntu 16.04 | wordpress服务器 | 10.0.5.12 | 1 | 1GB |
wordpress-2 | Ubuntu 16.04 | wordpress服务器 | 10.0.5.13 | 1 | 1 GB |
wordpress-3 | Ubuntu 16.04 | wordpress服务器 | 10.0.5.14 | 1 | 1 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导出。