游戏搭建如何负载均衡( 三 )


除了wordpress运行所需要的配置文件之外,上传的文件和通过wordpress接口安装的插件的安装文件和这些插件上传的文件都需要去同步 。在预备知识文章中,我们将wordpress安装在/var/www/example.com路径下--我们将在所有的例子中都会使用这个路径,但是你需要将这个路径替换为你wordpress的实际安装路径 。有很多方法在服务器之间同步文件--NFS或者glusterFS都是不错的选择 。
我们将使用glusterFS来满足我们所有的同步需求,因为它允许每个应用服务器来存储应用程序文件的副本,同时也会保持文件系统的一致性 。下图是我们共享存储方案的概念图:如果你对本小节中使用的glusterFS完全不熟悉,请参考这个GlusterFS教程(https://www.digitalocean.com/community/tutorials/how-to-create-a-redundant-storage-pool-using-glusterfs-on-ubuntu-servers),这是本小节的基础 。注意:下面的内容将经常在wordpress-1和wordpress-2服务器之间跳转,请确保在正确服务器上运行响应命令,否则你将遇到麻烦 。
编辑hosts文件如果你有一个内部DNS,而且这个DNS记录了你VPS的内部IP地址,那么你可以跳过这一步直接配置并执行glusterFS相关命令 。否则,需要在wordpress-1和wordpress-2上编辑/etc/hosts文件:sudo vi /etc/hosts增加以下两行,将红色字替换为你应用服务器的各自ip:wordpress_1_private_IP wordpress-1wordpress_2_private_IP wordpress-2保存并退出 。安装GlusterFS并配置一个冗余盘在wordpress-1和wordpress-2上使用apt-get命令安装glusterFS服务端软件:sudo apt-get install glusterfs-server在wordpress-1上,运行以下命令来和wordpress-2保持对等:sudo gluster peer probe wordpress-2在wordpress-2上,运行以下命令来和wordpress-1保持对等:sudo gluster peer probe wordpress-1在wordpress-1和wordpress-2上,创建路径用来存储glusterFS所管理的文件,运行:sudo mkdir /gluster-storage在wordpress-1上,创建glusterFS副本,我们称作volume1,glusterFS 会将它存放在/gluster-storage中的数据保存在你所有的应用服务器上,运行:sudo gluster volume create volume1 replica 2 transport tcp wordpress-1:/gluster-storage wordpress-2:/gluster-storage force预期输出以下结果:volume create: volume1: success: please start the volume to access data再次在wordpress-1上,运行一下命令来启动刚刚创建的glusterFS卷,在volume1上运行:sudo gluster volume start volume1预期输出以下结果:volume start: volume1: success在wordpress-1上,如果你想查看刚创建和启动的glusterFS卷的信息,运行:sudo gluster volume info你需要明白的是目前有两个glusterFS“同盟”,每个对应一个wordpress服务器 。现在我们已经运行了一个glusterFS盘,为了能够使用它来同步文件,我们需要将该盘挂载 。
挂载共享存储首先挂载wordpress-1上的文件系统 。在wordpress-1上,修改fstab文件来使共享文件系统可以随机启动:sudo vi /etc/fstab添加以下行到fstab来将/storage-pool目录作为挂载点:wordpress-1:/volume1/storage-pool glusterfs defaults,_netdev 0 0保存并退出 。在wordpress-1上,现在将glusterFS盘挂载至/storage_pool文件系统:sudo mkdir /storage-poolsudo mount /storage-pool在wordpress-1上挂载共享盘/storage-pool后,你可以运行df -h命令来列出当前已挂载的文件 。
接下来,我们将使用类似的流程来挂载wordpress-2上的共享文件系统 。在wordpress-2上,编辑fstab来使共享系统随机启动:sudo vi /etc/fstab添加以下行到fstab来将/storage-pool目录作为挂载点:wordpress-2:/volume1 /storage-pool glusterfs defaults,_netdev 0 0在wordpress-2上,现在将glusterFS盘挂载至/storage_pool文件系统:sudo mkdir /storage-poolsudo mount /storage-pool现在,所有在/storage-pool文件系统中创建、修改或删除的文件都会在两个wordpress服务器之间同步,即使当其中一个服务器暂时故障时也会同步 。将wordpress文件移至共享存储下一步是将wordpress-1的wordpress文件移动到共享存储中 。请将红色字体替换为你自己的值 。
/var/www/example.com表示wordpress文件的位置(nginx也会在这里查找文件),example.com本身只是根目录 。在wordpress-1上,运行以下命令来移动wordpress文件至共享文件系统/storage-pool:sudo mv /var/www/example.com /storage-pool/sudo chown www-da