天天看点

GlusterFS部署安装集群测试第1章 安装部署(两台都操作)

GlusterFS集群部署

适用于比较大的存储  例如kvm镜像

官方文档

<code>#yum安装centos-release-gluster</code>

<code>#yum安装glusterfs-server</code>

<code>wget -O </code><code>/etc/yum</code><code>.repos.d</code><code>/epel</code><code>.repo http:</code><code>//mirrors</code><code>.aliyun.com</code><code>/repo/epel-6</code><code>.repo</code>

<code>[root@master ~]</code><code># yum install -y glusterfs-server</code>

安装完成后启动

<code>[root@master ~]</code><code># /etc/init.d/glusterd start</code>

<code>Starting glusterd:                                         [  OK  ]</code>

<code>[root@master ~]</code><code># gluster peer probe 192.168.80.123   另一个机器的iP</code>

<code>peer probe: success.</code>

<code>[root@master ~]</code><code># gluster peer status   每个服务器执行都可以</code>

<code>Number of Peers: 1</code>

<code>Hostname: 192.168.80.123</code>

<code>Uuid: 49e15d0e-d499-427a-87aa-fe573a7fd345</code>

<code>State: Peer </code><code>in</code> <code>Cluster (Connected)</code>

<code>192.168.80.123 机器1</code>

<code>192.168.80.201 机器2</code>

测试

两台服务器分别创建

<code>[root@master ~]</code><code>#  mkdir /data/exp1 -p   机器1</code>

<code>[root@master ~]</code><code>#  mkdir /data/exp2 -p   机器2</code>

在机器1操作

<code>[root@lanyezi yum.repos.d]</code><code># gluster volume create test-volume 192.168.80.123:/data/exp1/ 192.168.80.201:/data/exp2</code>

<code>volume create: </code><code>test</code><code>-volume: failed: The brick 192.168.80.123:</code><code>/data/exp1</code> <code>is being created </code><code>in</code> <code>the root partition. It is recommended that you don</code><code>'t use the system'</code><code>s root partition </code><code>for</code> <code>storage backend. Or use </code><code>'force'</code> <code>at the end of the </code><code>command</code> <code>if</code> <code>you want to override this behavior.</code>

<code>[root@lanyezi yum.repos.d]</code><code># gluster volume create test-volume 192.168.80.123:/data/exp1/ 192.168.80.201:/data/exp2 force</code>

<code>volume create: </code><code>test</code><code>-volume: success: please start the volume to access data</code>

分布式卷创建成功

<code>[root@lanyezi yum.repos.d]</code><code># gluster volume info</code>

<code> </code> 

<code>Volume Name: </code><code>test</code><code>-volume</code>

<code>Type: Distribute</code>

<code>Volume ID: 099ad2bc-b83c-4713-9e70-49fc054b5163</code>

<code>Status: Created</code>

<code>Snapshot Count: 0</code>

<code>Number of Bricks: 2</code>

<code>Transport-</code><code>type</code><code>: tcp</code>

<code>Bricks:</code>

<code>Brick1: 192.168.80.123:</code><code>/data/exp1</code>

<code>Brick2: 192.168.80.201:</code><code>/data/exp2</code>

<code>Options Reconfigured:</code>

<code>transport.address-family: inet</code>

<code>nfs.disable: on</code>

<code>[root@master ~]</code><code>#  mkdir /data/exp3 -p   机器1</code>

<code>[root@master ~]</code><code>#  mkdir /data/exp4 -p   机器2</code>

<code>[root@lanyezi yum.repos.d]</code><code># gluster volume create repl-volume replica 2 transport tcp 192.168.80.123:/data/exp3/ 192.168.80.201:/data/exp4</code>

<code>Replica 2 volumes are prone to </code><code>split</code><code>-brain. Use Arbiter or Replica 3 to avoid this. See: http:</code><code>//docs</code><code>.gluster.org</code><code>/en/latest/Administrator</code><code>%20Guide</code><code>/Split</code><code>%20brain%20and%20ways%20to%20deal%20with%20it/.</code>

<code>Do you still want to </code><code>continue</code><code>?</code>

<code> </code><code>(y</code><code>/n</code><code>) y</code>

<code>volume create: repl-volume: failed: The brick 192.168.80.123:</code><code>/data/exp3</code> <code>is being created </code><code>in</code> <code>the root partition. It is recommended that you don</code><code>'t use the system'</code><code>s root partition </code><code>for</code> <code>storage backend. Or use </code><code>'force'</code> <code>at the end of the </code><code>command</code> <code>if</code> <code>you want to override this behavior.</code>

<code>[root@lanyezi yum.repos.d]</code><code># gluster volume create repl-volume replica 2 transport tcp 192.168.80.123:/data/exp3/ 192.168.80.201:/data/exp4 force</code>

<code>volume create: repl-volume: success: please start the volume to access data</code>

<code>[root@lanyezi yum.repos.d]</code><code># gluster volume info repl-volume</code>

<code>Volume Name: repl-volume</code>

<code>Type: Replicate</code>

<code>Volume ID: 089c6f46-8131-473a-a6e7-c475e2bd5785</code>

<code>Number of Bricks: 1 x 2 = 2</code>

<code>Brick1: 192.168.80.123:</code><code>/data/exp3</code>

<code>Brick2: 192.168.80.201:</code><code>/data/exp4</code>

<code>performance.client-io-threads: off</code>

两台机器分别操作

<code>[root@master ~]</code><code>#  mkdir /data/exp5 -p   机器1</code>

<code>[root@master ~]</code><code>#  mkdir /data/exp6 -p   机器2</code>

创建

<code>[root@lanyezi exp3]</code><code># gluster volume create raid0-volume stripe 2 transport tcp 192.168.80.123:/data/exp5/ 192.168.80.201:/data/exp6 force</code>

<code>volume create: raid0-volume: success: please start the volume to access data</code>

<code>[root@lanyezi exp3]</code><code># gluster volume info raid0-volume</code>

<code>Volume Name: raid0-volume</code>

<code>Type: Stripe</code>

<code>Volume ID: 123ddf8e-9081-44ba-8d9d-0178c05c6a68</code>

<code>Brick1: 192.168.80.123:</code><code>/data/exp5</code>

<code>Brick2: 192.168.80.201:</code><code>/data/exp6</code>

查看

<code>[root@lanyezi exp3]</code><code># gluster volume status</code>

<code>Volume raid0-volume is not started</code>

<code>Volume repl-volume is not started</code>

<code>Volume </code><code>test</code><code>-volume is not started</code>

启动

<code>[root@master exp4]</code><code># gluster volume start raid0-volume</code>

<code>volume start: raid0-volume: success</code>

<code>[root@master exp4]</code><code># gluster volume start repl-volume</code>

<code>volume start: repl-volume: success</code>

<code>[root@master exp4]</code><code># gluster volume start test-volume</code>

<code>volume start: </code><code>test</code><code>-volume: success</code>

再查看

<code>[root@master exp4]</code><code># gluster volume status</code>

<code>Status of volume: raid0-volume</code>

<code>Gluster process                             TCP Port  RDMA Port  Online  Pid</code>

<code>------------------------------------------------------------------------------</code>

<code>Brick 192.168.80.123:</code><code>/data/exp5</code>             <code>49152     0          Y       43622</code>

<code>Brick 192.168.80.201:</code><code>/data/exp6</code>             <code>49152     0          Y       43507</code>

<code>Task Status of Volume raid0-volume</code>

<code>There are no active volume tasks</code>

<code>Status of volume: repl-volume</code>

<code>Brick 192.168.80.123:</code><code>/data/exp3</code>             <code>49153     0          Y       43657</code>

<code>Brick 192.168.80.201:</code><code>/data/exp4</code>             <code>49153     0          Y       43548</code>

<code>Self-heal Daemon on localhost               N</code><code>/A</code>       <code>N</code><code>/A</code>        <code>Y       43569</code>

<code>Self-heal Daemon on 192.168.80.123          N</code><code>/A</code>       <code>N</code><code>/A</code>        <code>Y       43678</code>

<code>Task Status of Volume repl-volume</code>

<code>Status of volume: </code><code>test</code><code>-volume</code>

<code>Brick 192.168.80.123:</code><code>/data/exp1</code>             <code>49154     0          Y       43704</code>

<code>Brick 192.168.80.201:</code><code>/data/exp2</code>             <code>49154     0          Y       43608</code>

<code>Task Status of Volume </code><code>test</code><code>-volume</code>

通过info查看

<code>[root@master exp4]</code><code># gluster volume info</code>

<code>Status: Started</code>

测试挂载

在随便一台服务器挂载(前提需要有glusterfs-client这个服务)

<code>[root@master exp4]</code><code># mount.glusterfs 192.168.80.123:/test-volume /mnt/g1/</code>

<code>[root@master exp4]</code><code># mount.glusterfs 192.168.80.123:/repl-volume /mnt/g2</code>

<code>[root@master exp4]</code><code># mount.glusterfs 192.168.80.123:/raid0-volume /mnt/g3</code>

<code>[root@master exp4]</code><code># df -h|column -t</code>

<code>Filesystem                    Size  Used  Avail  Use%     Mounted   on</code>

<code>/dev/sda3</code>                     <code>18G   5.7G  12G    34%      /</code>

<code>tmpfs                         491M  0     491M   0%       </code><code>/dev/shm</code>

<code>/dev/sda1</code>                     <code>190M  31M   150M   17%      </code><code>/boot</code>

<code>192.168.80.123:</code><code>/test-volume</code>

<code>36G                           7.8G  27G   23%    </code><code>/mnt/g1</code>

<code>192.168.80.123:</code><code>/repl-volume</code>

<code>18G                           5.7G  12G   34%    </code><code>/mnt/g2</code>

<code>192.168.80.123:</code><code>/raid0-volume</code>

<code>36G                           7.8G  27G   23%    </code><code>/mnt/g3</code>

分布式卷

随机选择一台服务器写到/data/exp1 或2

复制式卷

两台复制写到/data/exp* 相当于raid1 写两份

调带式卷

两台服务器都操作

<code>[root@lanyezi exp3]</code><code># mkdir /exp1 /exp2</code>

创建逻辑卷(+force强制创建)

[

<code>root@lanyezi ~]</code><code># gluster volume create hehe-volume replica 2 transport tcp 192.168.80.123:/exp1/ 192.168.80.123:/exp2/ 192.168.80.201:/exp1/ 192.168.80.201:/exp2/  force</code>

<code>volume create: hehe-volume: success: please start the volume to access data</code>

<code>[root@lanyezi ~]</code><code># gluster volume start hehe-volume</code>

<code>volume start: hehe-volume: success</code>

查询

<code>[root@lanyezi ~]</code><code># gluster volume info hehe-volume</code>

<code>Volume Name: hehe-volume</code>

<code>Type: Distributed-Replicate</code>

<code>Volume ID: 321c8da7-43cd-40ad-a187-277018e43c9e</code>

<code>Number of Bricks: 2 x 2 = 4</code>

<code>Brick1: 192.168.80.123:</code><code>/exp1</code>

<code>Brick2: 192.168.80.123:</code><code>/exp2</code>

<code>Brick3: 192.168.80.201:</code><code>/exp1</code>

<code>Brick4: 192.168.80.201:</code><code>/exp2</code>

<code>创建挂载目录并挂载</code>

<code>[root@lanyezi ~]</code><code># mkdir /mnt/g5</code>

<code>[root@lanyezi ~]</code><code># mount.glusterfs 192.168.80.123:/hehe-volume /mnt/g5/</code>

<code>[root@lanyezi ~]</code><code># df -h</code>

<code>Filesystem            Size  Used Avail Use% Mounted on</code>

<code>/dev/sda3</code>              <code>18G  2.2G   15G  13% /</code>

<code>tmpfs                 491M     0  491M   0% </code><code>/dev/shm</code>

<code>/dev/sda1</code>             <code>190M   31M  150M  17% </code><code>/boot</code>

<code>192.168.80.123:</code><code>/hehe-volume</code>

<code>                       </code><code>18G  3.9G   14G  23% </code><code>/mnt/g5</code>

测试成果

<code>[root@lanyezi ~]</code><code># man tcp &gt; /mnt/g5/tcp1.txt</code>

<code>[root@lanyezi ~]</code><code># man tcp &gt; /mnt/g5/tcp2.txt</code>

<code>[root@lanyezi ~]</code><code># man tcp &gt; /mnt/g5/tcpe.txt</code>

<code>[root@lanyezi ~]</code><code># man tcp &gt; /mnt/g5/tcp4.txt</code>

机器1

<code>[root@lanyezi ~]</code><code># tree /exp*</code>

<code>/exp1</code>

<code>├── tcp2.txt</code>

<code>├── tcp4.txt</code>

<code>└── tcpe.txt</code>

<code>/exp2</code>

机器2

<code>[root@master ~]</code><code># tree /exp*</code>

<code>└── tcp1.txt</code>

<code>0 directories, 2 files</code>

这样的分布不均匀 所以这些目录里的文件创建的时候跟逻辑卷的顺序有关系

我们再来测试创建不同顺序的复制卷

<code>[root@lanyezi ~]</code><code># gluster volume create hehehe-volume replica 2 transport tcp 192.168.80.123:/exp3/ 192.168.80.201:/exp3/ 192.168.80.123:/exp4/ 192.168.80.201:/exp4/ force</code>

<code>volume create: hehehe-volume: success: please start the volume to access data</code>

<code>[root@lanyezi ~]</code><code># gluster volume start hehehe-volume</code>

<code>volume start: hehehe-volume: success</code>

查看状态

<code>[root@lanyezi ~]</code><code># gluster volume info hehehe-volume</code>

<code>Volume Name: hehehe-volume</code>

<code>Volume ID: 2f24e2cf-bb86-4fe8-a2bc-23f3d07f6f86</code>

<code>Brick1: 192.168.80.123:</code><code>/exp3</code>

<code>Brick2: 192.168.80.201:</code><code>/exp3</code>

<code>Brick3: 192.168.80.123:</code><code>/exp4</code>

<code>Brick4: 192.168.80.201:</code><code>/exp4</code>

挂载

<code>[root@lanyezi ~]</code><code># mkdir /mnt/gg</code>

<code>[root@lanyezi ~]</code><code># mount.glusterfs 192.168.80.123:/hehehe-volume /mnt/gg</code>

测试写入文件

<code>[root@lanyezi gg]</code><code># man tcp  &gt; /mnt/gg/tcp1.txt</code>

<code>[root@lanyezi gg]</code><code># man tcp  &gt; /mnt/gg/tcp2.txt</code>

<code>[root@lanyezi gg]</code><code># man tcp  &gt; /mnt/gg/tcp3.txt</code>

<code>[root@lanyezi gg]</code><code># man tcp  &gt; /mnt/gg/tcp4.txt</code>

机器1查看

<code>[root@lanyezi gg]</code><code># ll /exp3</code>

<code>total 168</code>

<code>-rw-r--r-- 2 root root 51310 Oct 20 11:02 tcp2.txt</code>

<code>-rw-r--r-- 2 root root 51310 Oct 20 11:02 tcp3.txt</code>

<code>-rw-r--r-- 2 root root 51310 Oct 20 11:02 tcp4.txt</code>

<code>[root@lanyezi gg]</code><code># ll /exp4</code>

<code>total 56</code>

<code>-rw-r--r-- 2 root root 51310 Oct 20 11:02 tcp1.txt</code>

机器2查看

<code>[root@master ~]# ll /exp3/</code>

<code>total </code><code>168</code>

<code>-rw-r--r-- </code><code>2</code> <code>root root </code><code>51310</code> <code>Dec </code><code>25</code> <code>18</code><code>:</code><code>05</code> <code>tcp2.txt</code>

<code>-rw-r--r-- </code><code>2</code> <code>root root </code><code>51310</code> <code>Dec </code><code>25</code> <code>18</code><code>:</code><code>05</code> <code>tcp3.txt</code>

<code>-rw-r--r-- </code><code>2</code> <code>root root </code><code>51310</code> <code>Dec </code><code>25</code> <code>18</code><code>:</code><code>05</code> <code>tcp4.txt</code>

<code>[root@master ~]# ll /exp4/</code>

<code>total </code><code>56</code>

<code>-rw-r--r-- </code><code>2</code> <code>root root </code><code>51310</code> <code>Dec </code><code>25</code> <code>18</code><code>:</code><code>05</code> <code>tcp1.txt</code>

这样分布就均匀了 数据库也分布复制成功

<code>[root@master ~]</code><code># mkdir /data/exp9</code>

<code>[root@master ~]</code><code># gluster volume add-brick test-volume 192.168.80.201:/data/exp9/ force    添加的是已经存在的卷</code>

<code>volume add-brick: success</code>

<code>[root@master ~]</code><code># gluster volume info test-volume</code>

<code>Number of Bricks: 3</code>

<code>Brick3: 192.168.80.201:</code><code>/data/exp9</code>   <code>新增加的卷</code>

重新平衡一下分布式券

<code>[root@master g1]</code><code># gluster volume rebalance test-volume start</code>

<code>volume rebalance: </code><code>test</code><code>-volume: success: Rebalance on </code><code>test</code><code>-volume has been started successfully. Use rebalance status </code><code>command</code> <code>to check status of the rebalance process.</code>

<code>ID: aa05486b-11df-4bac-9ac7-2237a8c12ad6</code>

删除brick 数据会丢失

<code>[root@lanyezi gg]</code><code># gluster volume remove-brick test-volume 192.168.80.201:/data/exp9 start</code>

<code>volume remove-brick start: success</code>

<code>ID: 4f16428a-7e9f-4b7b-bb07-2917a2f14323</code>

再次查看

<code>[root@master g1]</code><code># gluster volume status test-volume</code>

<code>Brick 192.168.80.123:</code><code>/data/exp1</code>             <code>49158     0          Y       1237</code>

<code>Brick 192.168.80.201:</code><code>/data/exp9</code>             <code>49159     0          Y       44717</code>

<code>Task                 : Remove brick       </code>

<code>ID                   : 4f16428a-7e9f-4b7b-bb07-2917a2f14323</code>

<code>Removed bricks:    </code>

<code>192.168.80.201:</code><code>/data/exp9</code>

<code>Status               : completed</code>

再次删除

<code>[root@master g1]</code><code># gluster volume remove-brick test-volume 192.168.80.201:/data/exp9 force</code>

<code>Removing brick(s) can result </code><code>in</code> <code>data loss. Do you want to Continue? (y</code><code>/n</code><code>) y</code>

<code>volume remove-brick commit force: success</code>

再次查看状态

删除卷之后再平衡一下

<code>[root@lanyezi gg]</code><code># gluster volume rebalance test-volume start</code>

<code>ID: 747d499c-8f20-4514-b3af-29d93ce3a995</code>

<code>[root@lanyezi gg]</code><code># gluster volume info test-volume</code>

<code>performance.client-io-threads: on</code>

本文转自 蓝叶子Sheep 51CTO博客,原文链接:http://blog.51cto.com/dellinger/2054693,如需转载请自行联系原作者

继续阅读