环境准备

ip地址 用途
172.30.200.240 Glusterfs server1
172.30.200.241 Glusterfs server2
172.30.200.242 Glusterfs server3
172.30.200.243 Glusterfs客户端

步骤1,保证至少有三台服务器

  • 名字分别是 "server1", "server2" and "server3"
  • 网络连通
  • 至少两块硬盘,其中一块盘用于GlusterFS存储服务,例如(/dev/sdb)
  • 设置NTP服务器。

配置hostname

### 172.30.200.240
echo "server1" >/etc/hostname
### 172.30.200.241
echo "server2" >/etc/hostname
### 172.30.200.242
echo "server3" >/etc/hostname

重启上述各台服务器,让HOSTNAME生效

配置host解析

echo "172.30.200.240 server1" >>/etc/hosts
echo "172.30.200.241 server2" >>/etc/hosts
echo "172.30.200.242 server3" >>/etc/hosts

配置ntp客户端同步时间

yum install -y ntpdate
### 同步阿里云的时间服务
[root@linux-node2 ~]# ntpdate ntp2.aliyun.com
7 Nov 13:27:06 ntpdate[1656]: adjust time server 203.107.6.88 offset -0.000860 sec ### 写一个crontab
[root@linux-node2 ~]# crontab -l
*/5 * * * * /usr/sbin/ntpdate ntp2.aliyun.com >/dev/null 2>&1

步骤2,格式化和配置硬盘

三台服务器都需要配置

1.配置新划分的sdb盘,如下

[root@server2 ~]# fdisk /dev/sdb

欢迎使用 fdisk (util-linux 2.34)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。 设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x10c33a14 的新 DOS 磁盘标签。 命令(输入 m 获取帮助):n
分区类型
p 主分区 (0个主分区,0个扩展分区,4空闲)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认 1):
第一个扇区 (2048-41943039, 默认 2048):
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): 创建了一个新分区 1,类型为“Linux”,大小为 20 GiB。 命令(输入 m 获取帮助):p
Disk /dev/sdb:20 GiB,21474836480 字节,41943040 个扇区
磁盘型号:Virtual disk
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x10c33a14 设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sdb1 2048 41943039 41940992 20G 83 Linux 命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。

2.格式化和加载/dev/sdb1

mkfs.xfs -i size=512 /dev/sdb1
mkdir -p /data/brick1
echo '/dev/sdb1 /data/brick1 xfs defaults 1 2' >> /etc/fstab
mount -a && mount
df -h

步骤3,安装GlusterFS

安装软件

yum install glusterfs-server

启动GlusterFS 管理的守护进程

CentOS 6
# service glusterd start
# service glusterd status
CentOS 7
# systemctl start glusterd.service
# systemctl status glusterd.service

步骤4,配置防火墙

iptables -I INPUT -p all -s 172.30.200.240 -j ACCEPT
iptables -I INPUT -p all -s 172.30.200.241 -j ACCEPT
iptables -I INPUT -p all -s 172.30.200.242 -j ACCEPT

如果想简单,也可以关闭防火墙

systemctl stop firewalld.service

步骤5,配置 trusted pool

在server1服务器上面,设置如下:

# gluster peer probe server2
# gluster peer probe server3

查看server1中,peer status的信息

# gluster peer status

你应该可以看到如下的信息(UUID是不同的)

Number of Peers: 2

Hostname: server2
Uuid: f7b97263-1da0-4572-8340-3be3182f9db3
State: Peer in Cluster (Connected) Hostname: server3
Uuid: a89c3006-1b66-44af-bebd-bafa367d69e1
State: Peer in Cluster (Connected)

步骤6,设置GlusterFS卷

所有的服务器,执行如下命令:

# mkdir -p /data/brick1/gv0

任何一台服务器,执行如下命令:

# gluster volume create gv0 replica 3 server1:/data/brick1/gv0 server2:/data/brick1/gv0 server3:/data/brick1/gv0
volume create: gv0: success: please start the volume to access data
# gluster volume start gv0
volume start: gv0: success

确认卷的信息是否正常:

# gluster volume info

你应该可以看到如下的信息(Volume ID 是不同的)

Volume Name: gv0
Type: Replicate
Volume ID: 53e05780-146d-41ca-bdfc-b2152fafb2a0
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: server1:/data/brick1/gv0
Brick2: server2:/data/brick1/gv0
Brick3: server3:/data/brick1/gv0
Options Reconfigured:
transport.address-family: inet
storage.fips-mode-rchecksum: on
nfs.disable: on
performance.client-io-threads: off

备注:如果状态不是 "Started",可以查看/var/log/glusterfs/glusterd.log诊断错误

步骤7,测试GlusterFS卷能否正常使用

这里测试的客户端的服务器IP:172.30.200.243

安装客户端

yum install -y glusterfs glusterfs-fuse

配合host

[root@localhost ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.30.200.240 server1
172.30.200.241 server2
172.30.200.242 server3

创建目录并挂载glusterfs

# mkdir -p /data
# mount -t glusterfs server1:/gv0 /data

测试文件存储

for i in `seq -w 1 100`; do cp -rp /var/log/messages /data/copy-test-$i; done
[root@localhost data]# ls -lA /data/copy* | wc -l
100

这里看到的文件为100个。

现在去Glusterfs服务器集群中,对每台服务器进行查询。可以看到每一个服务器上面,都有100个文件

[root@server1 ~]#  ls -lA /data/brick1/gv0/copy* |wc -l
100
[root@server2 ~]# ls -lA /data/brick1/gv0/copy* |wc -l
100
[root@server3 ~]# ls -lA /data/brick1/gv0/copy* |wc -l
100

【分布式存储】Glusterfs快速搭建的更多相关文章

  1. 通过ELK快速搭建一个你可能需要的集中化日志平台

    在项目初期的时候,大家都是赶着上线,一般来说对日志没有过多的考虑,当然日志量也不大,所以用log4net就够了,随着应用的越来越多,日志散 落在各个服务器的logs文件夹下,确实有点不大方便,这个时候 ...

  2. Docker Data Center系列(一)- 快速搭建云原生架构的实践环境

    本系列文章演示如何快速搭建一个简单的云原生架构的实践环境. 基于这个基础架构,可以持续部署微服务架构的应用栈,演练敏捷开发过程,提升DevOps实践能力. 1 整体规划 1.1 拓扑架构 1.2 基础 ...

  3. 快速搭建ELK集中化日志管理平台

    由于我们的项目是分布式,服务分布于多个服务器上,每次查看日志都要登录不同服务器查看,而且查看起来还比较麻烦,老大让搭一个集中化日志管理的东西,然后就在网上找到了这个东西ELK ELK就是elastic ...

  4. Nginx学习笔记--001-Nginx快速搭建

    Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由Igor Sysoev为俄罗斯访问量第二的R ...

  5. Github pages + jekyll 博客快速搭建

    Github pages + jekyll 博客快速搭建 寻找喜欢的模版 https://github.com/jekyll/jekyll/wiki/sites http://jekyllthemes ...

  6. NodeJS 最快速搭建一个HttpServer

    最快速搭建一个HttpServer 在目录里放一个index.html cd D:\Web\InternalWeb start http-server -i -p 8081

  7. 利用yeoman快速搭建React+webpack+es6脚手架

    自从前后端开始分离之后,前端项目工程化也显得越来越重要了,之前写过一篇搭建基于Angular+Requirejs+Grunt的前端项目教程,有兴趣的可以点这里去看 但是有些项目可以使用这种方式,但有些 ...

  8. 基于Docker快速搭建多节点Hadoop集群--已验证

    Docker最核心的特性之一,就是能够将任何应用包括Hadoop打包到Docker镜像中.这篇教程介绍了利用Docker在单机上快速搭建多节点 Hadoop集群的详细步骤.作者在发现目前的Hadoop ...

  9. 基于 Jenkins 快速搭建持续集成环境

      什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火 ...

随机推荐

  1. C# 中代码执行 ping 操作

    在代码中可以通过调用 System.Net.NetworkInformation 命名控件下的 Ping 类的 Send() 方法来实现,代码如下: var ping = new System.Net ...

  2. nginx基础(3)

    目录 HTTP首部 1.通用首部 2.请求首部 2.1 必有首部 2.2 条件请求首部 2.3 安全相关首部 3.响应首部 3.1 必有首部 3.2 协商首部 3.3 安全相关首部 4.实体首部 4. ...

  3. 在浏览器地址栏输入www.baidu.com到打开百度首页这期间到底发生了什么?

    刚才无意间看到这么一个面试题,觉得有点意思,我想从五层网络模型的角度说说我的看法. 1.首先通过DNS域名系统向域名服务器发送域名解析请求来得到百度的IP地址39.156.69.79:2.系统通过AR ...

  4. SQl Server 中的decimal( m , n )的意思

    create table sc( cno ), sno ), grade ,), primary key(cno,sno), foreign key(cno) references cou(cno), ...

  5. UDP组播

    多播(组播) 组播组可以是永久的也可以是临时的.组播组地址中,有一部分由官方分配的,称为永久组播组.永久组播组保持不变的是它的ip地址,组中的成员构成可以发生变化.永久组播组中成员的数量都可以是任意的 ...

  6. Spring 中的观察者模式

    一.Spring 中观察者模式的四个角色 1. 事件(ApplicationEvent) ApplicationEvent 是所有事件对象的父类.ApplicationEvent 继承自 jdk 的 ...

  7. javascript中的toString()

    基本介绍 javascript中的toString方法是我们在写前端时经常要用的一个函数,也就是将我们的变量转换成字符串的方法. javascript中各种类型的toString方法 javascri ...

  8. .NET Application,Session,Cookie,ViewState,Cache对象用法

    作用域 保存地址 生命周期Application 应用程序 服务器内存 IIS启动Session 整个站点 服务器内存 Session到时 默认20分钟Cashe 应用程序 服务器内存 应用程序的周期 ...

  9. ubuntu18.04 安装 WPS 2019

    ubuntu自带的文字处理软件对来自windows下office或在WPS创建的ppt有点不兼容,看到WPS有linux版本的,便果断安装试一试. 一.卸载原生liboffice sudo apt-g ...

  10. Python中7个不一样的代码写法

    打印index 对于一个列表,或者说一个序列我们经常需要打印它的index,一般传统的做法或者说比较low的写法: 更优雅的写法是多用enumerate 两个序列的循环 我们会经常对两个序列进行计算或 ...