遇到的问题是,你想让两台服务器的某个目录下面的文件保持一致。看了一法方法,比如用 Rsync 同步目录,NFS 共享目录。这里再介绍一下用 GlusterFS 的方法。我在本地创建了几台 CentOS 7 系统的虚拟机。
虚拟机balancer:192.168.33.60
web1:192.168.33.61
web2:192.168.33.62
database:192.168.33.63
第一步:编辑 hosts 文件连接到 web1 与 web2 ,编辑 hosts 文件:
vi /etc/hosts为 web1 与 web2 的 hosts 文件都添加:
192.168.33.61 web1
192.168.33.62 web2
这样 web1 知道 web2 是谁,web2 也知道 web1 是谁。
第二步:安装 GlusterFS在 web1 与 web2 上都安装 GulsterFS
curl download.gluster.org/pub/gluster/glusterfs/LATEST/CentOS/glusterfs-epel.repo -o /etc/yum.repos.d/glusterfs-epel.repo yum -y install glusterfs-server systemctl start glusterd systemctl enable glusterd 第三步:互联两台服务器在 web1 上执行:
gluster peer probe web2返回:
peer probe: success.在 web2 上执行:
gluster peer probe web1返回:
peer probe: success. 第四步:创建共享卷在 web1 与 web2 上创建存储 GlusterFS 管理的文件的目录。
mkdir /gluster-storage在 web1 上,创建可复制的 GlusterFS 卷 volume1,执行:
gluster volume create volume1 replica 2 transport tcp web1:/gluster-storage web2:/gluster-storage force返回:
volume create: volume1: success: please start the volume to access data在 web1 上,启动创建的 GlusterFS 卷:
gluster volume start volume1返回:
volume start: volume1: success查看创建与启动的 GlusterFS 卷,执行:
gluster volume info返回:
Volume Name: volume1 Type: Replicate Volume ID: 53ac1214-5dfd-4c6f-82f5-31b16b052cc9 Status: Started Number of Bricks: 1 x 2 = 2 Transport-type: tcp Bricks: Brick1: web1:/gluster-storage Brick2: web2:/gluster-storage现在我们有了运行的 GlusterFS 卷,下面可以挂载它,这样我们就可以使用它作为复制的文件系统了。
第五步:挂载共享存储先挂载到 web1 上,编辑 fstab :
vi /etc/fstab在这个文件的底部添加下面这行代码,这里使用 /storage-pool 作为挂载点,你可以把它替换成自己想要的地方。
web1:/volume1 /storage-pool glusterfs defaults,_netdev 0 0保存并退出,在 web1 上,我们可以把 GlusterFS 卷挂载到 /storage_pool 文件系统上:
mkdir /storage-pool mount /storage-pool返回:
WARNING: getfattr not found, certain checks will be skipped.. (注:不太清楚具体的意思,待查 ... )这样会在 web1 上挂载一个共享的卷,/storage-pool ,执行 df -h ,你会看到挂载的文件系统。在 web2 上做的事跟这个差不多。
在 web2 上,编辑 fstab:
vi /etc/fstab添加下面这行在文件底部,使用 /storage-pool 作为挂载点:
web2:/volume1 /storage-pool glusterfs defaults,_netdev 0 0在 web2 上,把 GlusterFS 卷挂载到 /storage_pool 上:
mkdir /storage-pool mount /storage-pool 第六步:测试在 web1 与 web2 上测试,比如你可以在 web1 上的 /storage-pool 这个目录的下面创建一个文件,然后到 web2 上的 /storage-pool 上看一下,然后在创建一个新的文件,到 web1 的 /storage-pool 里面再看一下。