遇到的问题是,你想让两台服务器的某个目录下面的文件保持一致。看了一法方法,比如用 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 里面再看一下。
GlusterFS 的详细介绍:请点这里
GlusterFS 的下载地址:请点这里