1. 程式人生 > >在Centos6.5版本分散式安裝Glusterfs3.8版本

在Centos6.5版本分散式安裝Glusterfs3.8版本

1. 登入root使用者

sudo su root

2. 設定主機名

修改hostname檔案,以及hosts檔案新增如下設定,使叢集中的主機可以通過主機名進行訪問:

10.0.101.2 gfs1

10.0.101.191 gfs2

10.0.101.213 gfs3

10.0.101.61 gfs_cli

10.20.32.19 VM_32_19_centos

10.20.52.19 VM_52_19_centos

10.10.64.27 VM_64_27_centos

3. 檢視防火牆狀態

systemctl status firewalld

* firewalld.service - firewalld - dynamic firewall daemon

   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)

   Active: inactive (dead)

處於關閉狀態,不做修改。

4. 下載安裝包

選擇glusterfs3.8版本,下載

glusterfs-libs-3.8.7-1.el6.x86_64.rpm

glusterfs-3.8.7-1.el6.x86_64.rpm

glusterfs-client-xlators-3.8.7-1.el6.x86_64.rpm

glusterfs-fuse-3.8.7-1.el6.x86_64.rpm

glusterfs-api-3.8.7-1.el6.x86_64.rpm

glusterfs-cli-3.8.7-1.el6.x86_64.rpm

userspace-rcu-0.7.16-2.el6.x86_64.rpm

glusterfs-server-3.8.7-1.el6.x86_64.rpm

glusterfs-geo-replication-3.8.7-1.el6.x86_64.rpm

5. 檢視linux系統是否存在glusterfs相關外掛

rpm –qa | grep gluster

如果返回為空,則無需任何操作,如果返回相關已經安裝的rpm包,先進行解除安裝,然後進行後續安裝

6. 安裝glusterfs3.8

yum install nfs-utils

安裝指令碼:

#!/bin/bash

rpm -ivh glusterfs-libs-3.8.7-1.el6.x86_64.rpm \

glusterfs-3.8.7-1.el6.x86_64.rpm \

glusterfs-client-xlators-3.8.7-1.el6.x86_64.rpm \

glusterfs-fuse-3.8.7-1.el6.x86_64.rpm \

glusterfs-api-3.8.7-1.el6.x86_64.rpm \

glusterfs-cli-3.8.7-1.el6.x86_64.rpm \

userspace-rcu-0.7.16-2.el6.x86_64.rpm \

glusterfs-server-3.8.7-1.el6.x86_64.rpm \

glusterfs-geo-replication-3.8.7-1.el6.x86_64.rpm

注意:根據環境作適當調整。

7. 啟動glusterd服務

/etc/init.d/glusterd start

chkconfig glusterd on

chkconfig glusterfsd on

檢視當前glusterd服務啟動狀態:

chkconfig --list | grep glusterd

8. 配置gluster信任池

gfs1上執行:

gluster peer probe gfs2

檢查加入可信任儲存池中的伺服器狀態

 命令:gluster peer status

[[email protected] soft]# gluster peer status

Number of Peers: 1

Hostname: gfs2

Uuid: d0c78a12-95e4-4904-a7f9-5f28ec5a6213

State: Peer in Cluster (Connected)

9. 建立兩副本模式

1)、建立兩副本

gluster volume create dfs-vm-2 replica 2 gfs1:/data/brick gfs2:/data/brick

刪除dfs-vm-2

setfattr -x trusted.glusterfs.volume-id /data/brick

setfattr -x trusted.gfid /data/brick

rm -rf /data/brick/.glusterfs

Es生產環境建立snapshot

/data/es_data/snapshot

gluster volume create es-snapshot 10.10.36.36:/data/es_data/snapshot 

10. 建立三副本模式

1)、建立三副本

gluster volume create gfs_vm replica 3 gfs1:/data/brick gfs2:/data/brick gfs3:/data/brick

檢視建立的卷的資訊

 命令:gluster volume info

Volume Name: gfs_vm

Type: Replicate

Volume ID: b89cbb0a-a72c-4069-8abc-c68d2394dcbe

Status: Created

Snapshot Count: 0

Number of Bricks: 1 x 3 = 3

Transport-type: tcp

Bricks:

Brick1: gfs1:/data/brick

Brick2: gfs2:/data/brick

Brick3: gfs3:/data/brick

Options Reconfigured:

transport.address-family: inet

performance.readdir-ahead: on

nfs.disable: on

 啟動volumes

gluster volume start gfs_vm

volume start: gfs_vm: success

11. 配置客戶端

1.軟體準備:

glusterfs-libs-3.8.7-1.el6.x86_64.rpm

glusterfs-3.8.7-1.el6.x86_64.rpm

glusterfs-client-xlators-3.8.7-1.el6.x86_64.rpm

glusterfs-fuse-3.8.7-1.el6.x86_64.rpm

2.安裝rpm包指令碼:

#!/bin/bash

rpm -ivh glusterfs-libs-3.8.7-1.el6.x86_64.rpm \

glusterfs-3.8.7-1.el6.x86_64.rpm \

glusterfs-client-xlators-3.8.7-1.el6.x86_64.rpm \

glusterfs-fuse-3.8.7-1.el6.x86_64.rpm

3.掛載gluster叢集設定

mkdir /gfsdata

mount.glusterfs gfs1:/gfs_vm /gfsdata

4.使用df命令檢視掛載結果:

[[email protected] soft]# df

Filesystem     1K-blocks    Used Available Use% Mounted on

/dev/vda1       51605116 2327640  46656112   5% /

/dev/vdb        41284928  290740  38897036   1% /data

gfs1:/gfs_vm    41284864  182912  39004800   1% /gfsdata

可以檢視到gfs1:/gfs_vm 已經成功掛載到/gfsdata中去了

5.測試

/gfsdata寫入檔案

vim test

輸入:hello glusterfs

在叢集gfs1 gfs2 gfs3/data/brick目錄下均可以看到該檔案存在。

12. 超時時間設定

glusterfs叢集中某臺伺服器斷線,判斷超時時間,該時間的設定關係到glusterfs掛載客戶端訪問速度。設定命令如下:

 gluster volume set gfs_vm network.ping-timeout 10

腦裂測試

1. 高可用性測試

1)、情景一:glusterfs叢集存在一臺主機存活

gfs2gfs3斷網情況下,glusterfs叢集只存在一臺主機:

此時可以保證正常的讀取操作無法寫入檔案此時檔案均處於read-only狀態。

這個是glusterfs預設機制導致的,當叢集中的機器少於50%時,客戶端便無法向叢集中寫入檔案,此時檔案處於只讀狀態。

2)、情景二:glusterfs叢集存在兩臺主機存活

gfs3斷網情況下:

echo “hello glusterfs” >> hello

在伺服器gfs1gfs2均可以看到該檔案。

開啟gfs3網路設定,檔案亦同步到gfs3伺服器,無腦裂現象產生。

3)、在執行情景三的時候:每臺伺服器執行

getfattr -m . -d -e hex hello

均返回:

trusted.afr.dirty=0x000000000000000000000000

此時叢集處於INNOCENT 狀態,各個節點資料均正常。

情景三:來回切斷gfs1gfs2gfs3的網路

gfs3斷網情況下:

echo “gfs3_stop” >> hello

在伺服器gfs1gfs2均可以看到該檔案,程式正常,無腦裂現象產生。

此時:

gfs1:

trusted.afr.dirty=0x000000000000000000000000

trusted.afr.three-vm-client-2=0x000000010000000000000000

表明:gfs1認為自己的正確的處於WISE狀態,gfs3data是不正確的,需要進行同步。

gfs2:

trusted.afr.dirty=0x000000000000000000000000

trusted.afr.three-vm-client-2=0x000000010000000000000000

表明:gfs2認為自己的正確的處於WISE狀態,gfs3data是不正確的,需要進行同步。

斷開gfs2的網路,開啟gfs3的網路:

此時會將gfs1的資料同步到gfs3

 gfs1:

    trusted.afr.dirty=0x000000000000000000000000

trusted.afr.three-vm-client-2=0x000000000000000000000000

表明資料已經同步成功,認為自己的gfs3的資料均為有效資料。

gfs3:

trusted.afr.dirty=0x000000000000000000000000

然後在掛載的客戶端輸入:

echo “gfs2_stop”>>hello

此時:

gfs1:

trusted.afr.dirty=0x000000000000000000000000

trusted.afr.three-vm-client-1=0x000000010000000000000000

trusted.afr.three-vm-client-2=0x000000000000000000000000

此時gfs1認為自己和gfs3的資料都是正確的,gfs2的資料需要進行同步。

gfs3:

trusted.afr.dirty=0x000000000000000000000000

trusted.afr.three-vm-client-1=0x000000010000000000000000

此時gfs3認為自己的資料也是正確的,gfs2的資料需要同步。

斷開gfs1的網路,開啟gfs2的網路:

glusterfs掛載客戶端執行:cat hello

出現:hello: Input/output error,此時便出現腦裂的情況了

gfs2:

trusted.afr.dirty=0x000000000000000000000000

trusted.afr.three-vm-client-2=0x000000010000000000000000

此時gfs2認為自己是正確的處於WISE狀態,認為gfs3是錯誤的,需要被同步。

gfs3:

trusted.afr.dirty=0x000000000000000000000000

trusted.afr.three-vm-client-1=0x000000010000000000000000

gfs3的認為自己也是正確的處於WISE狀態,而gfs2的是錯誤的。

此時叢集中便存在兩個WISE節點並且相互存在衝突從而導致腦裂的產生。此時開啟gfs1的網路,腦裂的問題就解決了,因為gfs1也處於WISE狀態,如果存在WISE副本,且沒有其他WISE副本或者其他WISE副本沒有衝突,這時候該副本就可以作為source並將該source同步至gfs1gfs2

13. 高可靠性

開啟:

gluster volume set three-vm cluster.server-quorum-type server

gluster volume set all cluster.server-quorum-ratio 50%

1)、情景一:glusterfs叢集存在一臺主機存活

gfs2gfs3斷網情況下,glusterfs叢集只存在一臺主機:

此時glusterfs掛載客戶端無法訪問glusterfs叢集,出現異常資訊:

ls: cannot open directory .: Transport endpoint is not connected

2)、情景二:glusterfs叢集存在兩臺主機存活

gfs3斷網情況下:

echo “hello glusterfs” >> hello

在伺服器gfs1gfs2均可以看到該檔案。

3)、情景三測試同高可用性一致。

14. 設定自動腦裂修復

檢視自動腦裂修復的幫助:

gluster volume set help|grep -A3 cluster.favorite-child-policy

執行自動修復命令:

gluster volume set gfs_vm2 cluster.favorite-child-policy mtime

glusterfs調優:

預設值為on,可設定值為on/off

gluster volume setgfs_vm2 performance.flush-behind on

客戶端:Translator performance/writebehind

預設值為1mb,可設定值524288 - 1073741824

現在設定值:512M

gluster volume setgfs_vm2 performance.write-behind-window-size 524288


服務端:Translator performance/io-threads

預設值為16,可設定值為0-65,當前設定值16

gluster volume setgfs_vm2 performance.io-thread-count 16

預設值為32 MB,可設定值為:[4194304 - 34359738368]

當前設定值:4G

gluster volume setgfs_vm2 performance.cache-size4194304

writebehind 預設值為1mb io-threads預設值為16 cache-size32mb flush-behind預設值為on

GEO-rep配置

   gluster volume create strip-vm stripe 2 replica 2 gfs1:/data/strip_brick1 gfs2:/data/strip_brick1 gfs1:/data/strip_brick2 gfs2:/data/strip_brick2

gluster volume geo-replication strip-vmgfs3::strip_gep_repcreate push-pem

gluster volume geo-replication strip-vmgfs3::strip_gep_rep start

gluster volume geo-replication strip-vmgfs3::strip_gep_rep stop [force]

gluster volume geo-replication strip-vmgfs3::strip_gep_rep  resume force

Strip-vm調優引數

gluster volume set strip-vm performance.flush-behind on

gluster volume set strip-vm performance.write-behind-window-size 524288

gluster volume set strip-vm performance.io-thread-count 4

gluster volume set strip-vm performance.cache-size 4194304

mount.glusterfs gfs1:/strip-vm/data/strip_gfsdata

相關推薦

Centos6.5版本分散式安裝Glusterfs3.8版本

1. 登入root使用者 sudo su root 2. 設定主機名 修改hostname檔案,以及hosts檔案新增如下設定,使叢集中的主機可以通過主機名進行訪問: 10.0.101.2 gfs1 10.0.101.191 gfs2 10.0.101.213 gfs3

CentOS6.5升級手動安裝GCC4.8.2

sta 安裝gcc cout include 介紹 tar.bz2 yum wget lib 一、簡易安裝 操作環境 CentOS6.5 64bit,原版本4.4.7,不能支持C++11的特性~,希望升級到4.8.2 不能通過yum的方法升級,需要自己手動下載安裝包並編

centos6安裝svn1.8版本

centos6中預設安裝的svn版本是1.6,由於開發環境需要安裝1.7或者更高版本,故安裝更新svn版本。 使用yum install subversion安裝的版本為1.6,故需要修改源。 svn檢視版本號: svn --version 先刪除舊

在伺服器中安裝jdk1.8版本安裝,原來這麼簡單(詳解)

因為在烏班圖的系統中由於只能註冊普通的使用者,不能註冊root使用者。 所以需要先把jdk-8u11-linux-x64.tar.gz的安裝包拷貝到普通使用者的許可權中去。 我們可以使用WinSCP視覺化工具直接對壓縮包進行拖拽到指定的目錄下,也可以使用Xshell工具使用命令列對檔

雜七雜八(1):CentOS6.5 升級glibc至2.17版本

老闆跑測試的時候需要高版本的glibc,結果我手動改的時候不小心把系統弄崩潰了,當時備份的時候忘記備份usr文件,因此只能重灌系統,短暫重灌系統後,決定順便先把glibc升級一下,免得到時候老闆再親自升級。 1:先升級gcc 詳情可見: Elam的caffe筆記之配置篇(一

在伺服器中安裝jdk1.8版本安裝步驟(親測有效)轉載請註明出處

因為在烏班圖的系統中由於只能註冊普通的使用者,不能註冊root使用者。所以需要先把jdk-8u11-linux-x64.tar.gz的安裝包拷貝到普通使用者的許可權中去。我們可以使用WinSCP視覺化工具直接對壓縮包進行拖拽到指定的目錄下,也可以使用Xshell工具使用命令列

centos6.5 原始碼方式安裝python2.7.8

./configure make Python build finished, but the necessary bits to build these modules were not found: _curses            _curses_panel  

centos6.5下yum安裝mysql5.5

eps mysql 啟動 pms pan tar oar exp let 第一步就是看linu是否安裝了mysql,經過rpm -qa|grep mysql查看到centos下安裝了mysql5.1,那就開始卸載咯 2 接下來就是卸載mysql5.1了,命令

CentOS6.5】MySQL安裝和配置

配置 entos alt tro images .com centos ges mys 1./etc/my.cnf 這是mysql的主配置文件 2、數據存放位置 3、錯誤存放位置 【CentOS6.5】MySQL安裝和配置

centos6.5 使用 rpm 安裝 mysql

相關 () res def libs update oca 64bit -i 從mysql網站下載mysql rpm安裝包(包括server、client) 1、安裝server rpm -ivh MySQL-server-5.6.19-1.el6.x86_64.rpm

CentOS6.5下nginx安裝

模塊 pcre acc .cn nginx fig 啟動服務 tab start 一、nginx安裝環境 1、Gcc rpm -qa | grep gcc 安裝nginx需要先將官網下載的源碼進行編譯,編譯依賴gcc環境,如果沒有gcc環境,需要

CentOS6.5下Cloudera安裝搭建部署大數據集群(圖文分五大步詳解)(博主強烈推薦)

centos6 數據 http 時間 log .com pos OS 客戶端  第一步: Cloudera Manager安裝之Cloudera Manager安裝前準備(CentOS6.5)(一) 第二步: Cloudera Manager安裝之時間服務器和

Centos6.5全程手動安裝(小白級)超詳細

虛擬機 db2 ado centos6.5 work 安裝 images aec c89 Centos6.5手動環境安裝步驟:備註:虛擬機模擬安裝步驟 網絡:172.16.100.1IP:172.16.100.65軟件:VMware? Workstation 11.0.0

Centos6.5下Tomcat安裝及配置

tsp watermark ext name mode export f2c images centos6 一、安裝前準備 安裝Tomcat需要提供JDK支持 下載JDK安裝包 #wget https://download.oracle.com/otn-pub/java/j

centos6.5下編譯安裝單例項MySQL5.1

MySQL5.1版本安裝3步曲: 1)         ./configure 2)         make 3)     &nbs

CentOS6.5源碼安裝zabbix4.0

bst php.ini zab 配置 etc ldap pch mat app 最新公司需要上一套監控系統,一番調研下來,決定使用zabbix,下班時間搭了一套出來,過程如下 環境如下: OS CentOS6.5zabbix 4.0 4.0.2apche 1

CentOS6.5下Redis安裝與配置

本文詳細介紹redis單機單例項安裝與配置,服務及開機自啟動。如有不對的地方,歡迎大家拍磚o(∩_∩)o (以下配置基於CentOS release 6.5 Final, redis版本3.0.2 [redis版本號中間位是偶數的是穩定版,奇數的為非穩定版]) 一.安

centos6.5系統下安裝docker新手教程

Centos 6.5安裝docker教程 Docker 是 PaaS 提供商 dotCloud 開源的一個基於 LXC 的高階容器引擎,原始碼託管在 Github 上, 基於go語言並遵從Apache2.0協議開源。 Docker自2013年以來非常火熱,無論是從 git

CentOS6.5 64位安裝單機版hadoop2.6教程

Hadoop2.6單機安裝 安裝環境 硬體:虛擬機器 作業系統:Centos 6.5 64位 主機名:hadoop0 安裝使用者:root 主機名很重要,可以任意自定義,但是一定要記住。 安裝JDK 2,在/root/.bash

CentOS6.5下原始碼安裝gcc-4.9.4

1、確認現有版本 # gcc --version gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11) Copyright © 2010 Free Software Foundation, Inc. 本程式是自由軟體;請參