在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叢集存在一臺主機存活
gfs2、gfs3斷網情況下,glusterfs叢集只存在一臺主機:
此時可以保證正常的讀取操作,無法寫入檔案。此時檔案均處於read-only狀態。
這個是glusterfs預設機制導致的,當叢集中的機器少於50%時,客戶端便無法向叢集中寫入檔案,此時檔案處於只讀狀態。
2)、情景二:glusterfs叢集存在兩臺主機存活
僅gfs3斷網情況下:
echo “hello glusterfs” >> hello
在伺服器gfs1、gfs2均可以看到該檔案。
開啟gfs3網路設定,檔案亦同步到gfs3伺服器,無腦裂現象產生。
3)、在執行情景三的時候:每臺伺服器執行
getfattr -m . -d -e hex hello
均返回:
trusted.afr.dirty=0x000000000000000000000000
此時叢集處於:INNOCENT 狀態,各個節點資料均正常。
情景三:來回切斷gfs1、gfs2、gfs3的網路
僅gfs3斷網情況下:
echo “gfs3_stop” >> hello
在伺服器gfs1、gfs2均可以看到該檔案,程式正常,無腦裂現象產生。
此時:
gfs1:
trusted.afr.dirty=0x000000000000000000000000
trusted.afr.three-vm-client-2=0x000000010000000000000000
表明:gfs1認為自己的正確的處於WISE狀態,gfs3的data是不正確的,需要進行同步。
gfs2:
trusted.afr.dirty=0x000000000000000000000000
trusted.afr.three-vm-client-2=0x000000010000000000000000
表明:gfs2認為自己的正確的處於WISE狀態,gfs3的data是不正確的,需要進行同步。
斷開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同步至gfs1、gfs2。
13. 高可靠性
開啟:
gluster volume set three-vm cluster.server-quorum-type server
gluster volume set all cluster.server-quorum-ratio 50%
1)、情景一:glusterfs叢集存在一臺主機存活
gfs2、gfs3斷網情況下,glusterfs叢集只存在一臺主機:
此時glusterfs掛載客戶端無法訪問glusterfs叢集,出現異常資訊:
ls: cannot open directory .: Transport endpoint is not connected。
2)、情景二:glusterfs叢集存在兩臺主機存活
僅gfs3斷網情況下:
echo “hello glusterfs” >> hello
在伺服器gfs1、gfs2均可以看到該檔案。
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-size為32mb 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. 本程式是自由軟體;請參