塊存儲、分布式存儲、對象存儲,部署案例


 集群與存儲

塊存儲應用案例

1.環境准備

為虛擬機創建磁盤鏡像:

[rood@node1~]# rbd create vm1-image --image-feature layering --size 10G

#”vm1-image”是創建的鏡像名

[rood@node1~]#rbd list                     //查看所有rbd池里的鏡像

[rood@node1~]#rbd info vm1-image        //查看詳細信息

[rood@node1~]#qemu-img info rbd:rbd/vm1-image

 

 

Ceph認證帳戶:

Ceph默認開啟用戶認證,默認帳戶名為client.admin , key是帳戶的密鑰

/etc/ceph/ceph.conf   //配置文件

[root@node1 ceph]# cat /etc/ceph/ceph.client.admin.keyring

[client.admin]

        key = AQDOvb5busfJJxAAyqEYMhofNcq2c2jxC36wsw==

 

部署客戶端環境(真機)

先裝包:ceph-common

 

拷貝配置文件和連接密鑰(否則無連接權限)

[root@room9pc01~]# scp 192.168.4.51:/etc/ceph/ceph.conf  /etc/ceph/                             

[root@room9pc01~]#scp 192.168.4.51:/etc/ceph/ceph.client.admin.keyring     /etc/ceph/

 

 

 

2.創建kvm虛擬機

Kvm創建初始化虛擬機

[root@room9pc01 ~]# virsh list  --all     //查看所有的虛擬主機

[root@room9pc01 ~]# ls /etc/libvirt/qemu  //看所有虛擬主機的硬件配置文件信息

(虛擬機的名稱,內存,磁盤,網卡等信息)

編寫帳戶的信息文件

[root@room9pc01 ~]# vim /root/secret.xml

<secret ephemeral='no' private='no'>

    <usage type='ceph'>

        <name>client.admin secret</name>  

    </usage>

</secret>

 

使用XML配置文件創建secret

[root@room9pc01 ~]# virsh secret-define --file secret.xml

生成隨機的對應賬戶的UUID 872a03f9-6d20-4a6b-89a5-53789d67d5d7

#如果定義過了,需要先刪除原先的uuid

[root@room9pc01 ~]# virsh secret-undefine ebee4925-94b2-4a66-940a-6eebb96d3a26

 

編寫賬戶信息文件(真實機操作)

[root@room9pc01 ~]#ceph auth get-key client.admin

AQDOvb5busfJJxAAyqEYMhofNcq2c2jxC36wsw==

//獲取 client.adminkey,  或者直接查看密鑰文件

[root@room9pc01 ~]#cat /etc/ceph/ceph.clinet.admin.keyring

//出現內容與上面是一樣的

 

設置secret,添加賬戶的密鑰

[root@room9pc01~]# virsh secret-set-value --secret 872a03f9-6d20-4a6b-89a5-53789d67d5d7  --base64 AQDOvb5busfJJxAAyqEYMhofNcq2c2jxC36wsw==

提示信息:secret 值設定

//這里cecret后面是創建的secretuuidbase64后面是client.admin帳戶的密碼

 

 

[root@room9pc01 ~]# virsh dumpxml avpc > /tmp/avpc1.xml

#cat /etc/libvirt/qemu/avpc.xml > /tmp/avpc1.xml

#創建一個新的虛擬機初始化生成配置文件即可,修改avpc虛擬機的硬件配置信息

[root@room9pc01 ~]# vim /tmp/avpc1.xml

  <disk type='network' device='disk'>

      <driver name='qemu' type='raw'/>

 

    添加:    <auth username='admin'>

        <secret type='ceph' uuid='872a03f9-6d20-4a6b-89a5-53789d67d5d7'/>

        </auth>

//這里的uuid就是secretuuid,有client.admin帳戶和密鑰信息

        <source protocol='rbd' name='rbd/vm1-image'>

           <host name='192.168.4.51' port='6789'/>

        </source>

//連接的ceph主機為192.168.4.51 端口號為6789

        <target dev='vda' bus='virtio'/>

//將獲取的鏡像設為虛擬機的vda磁盤

      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>

    </disk>

 

使用編輯好的虛擬配置文件/tmp/avpc1.xml 創建虛擬機

[root@room9pc01 ~]# virsh define /tmp/avpc1.xml

定義域 avpc1(從 /tmp/avpc1.xml

[root@room9pc01 ~]# virsh list --all  | grep avpc1

 8     avpc1                          running

 

連接光盤鏡像,引導選項>啟用引導菜單打鈎,下面3個選項打鈎鈎即可安轉

(將系統裝入鏡像文件映射的vda磁盤里)

 

 

 

 

 

 

 

 

分布式文件系統CephFS

 

 

--分布式文件系統(Distibuted File System)是指文件系統管理的物理存儲資

 源不一定直接連接在本地節點上,而是通過計算機網絡與節點相連

--CephFS使用Ceph集群提供POSIX兼容的文件系統

--允許Linux直接將Ceph存儲掛載到本地

 

准備一台新虛擬機,作為GW服務器

要求如下:ip地址:192.168.4.54

主機名:node4

配置yum

時間同步client

Node1允許無密碼遠程node4

修改node1/etc/hosts,並同步到所有node主機

 

 

元數據服務

元數據(Metata

 --任何文件系統中的數據分為數據和元數據

 --數據是指普通文件中的實際數據

 --元數據指用來描述一個文件的特征的系統數據(關於實際數據的數據)

 --比如:訪問權限,文件擁有者以及文件數據快的分布信息(inode)等

--所以Cephfs必須有MDSs節點

 

 

 

創建元數據服務器

登陸node4,安裝ceph-mds軟件包

[root@node4~]# yum -y install ceph-mds

登陸node1部署節點操作

[root@node1~]# cd /root/ceph-cluster   //之前部署ceph集群創建的目錄

[root@node1 ceph-cluser]# ceph-deploy mds create node4

//node1拷貝配置文件至node4中,啟動mds服務

 [root@node1 ceph-cluser]# ceph-deploy admin node4

//發送密鑰給node4

 

 

文件系統需要至少2個池

創建存儲池

一個池用於存儲,一個用於儲存元數據

 [root@node4~]#  ceph osd pool create cephfs_data 128

 [root@node4~]#  ceph osd pool create cephfs_metadata 128

//需要指定大小,128PG,否則會分配所有空間

// PG是指定存儲池存儲對象的歸屬組的個數,每個PG里都可存多個對象

 

創建Ceph文件系統

[root@node4 ~]# ceph fs new myfs1 cephfs_metadata cephfs_data

new fs with metadata pool 2 and data pool 1

//先寫存元數據的池,再寫儲存數據的池

Fs:文件系統類型  myfs1:文件系統名

[root@node4 ~]# ceph fs ls

name: myfs1, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

[root@node4 ~]# ceph mds stat      //查看mds狀態

e5: 1/1/1 up {0=node4=up:active}

 

客戶端掛載(Linux內核支持ceph文件系統不用裝軟件)

[root@client ~]#  mkdir /cephfs           //創建用於掛載的文件夾

[root@client ~]# cat /etc/ceph/ceph.client.admin.keyring

[client.admin]

        key = AQDOvb5busfJJxAAyqEYMhofNcq2c2jxC36wsw==

//密鑰信息

 

[root@client ~]# mount -t ceph 192.168.4.51:6789/    /cephfs/ -o name=admin,secret=AQDOvb5busfJJxAAyqEYMhofNcq2c2jxC36wsw==

//-t指定文件系統為ceph 

//192.168.4.51mon節點的ip

//用戶名為admin

//secret是密鑰

 

[root@client ~]# mount | grep ceph

192.168.4.51:/ on /cephfs type ceph (rw,relatime,name=admin,secret=<hidden>,acl)

//查看是否掛上

 

 

Ceph對象存儲

什么是對象存儲?

--就是鍵值存儲,通其接口命令,也就是簡單的GETPUTDEL和其他擴展,

  向存儲服務上傳下載數據

--對象存儲中所有數據都被認為是一個對象,so 任何數據都可以存入對象存儲服務器,如圖片,視頻,音頻等

RGWCeph對象存儲網關,用於向客戶端應用呈現儲存界面,提供RESTful API訪問接口

 

准備一台新虛擬機,作為元數據服務器

要求如下:ip地址:192.168.4.55

主機名:node5

配置yum

時間同步client

Node1允許無密碼遠程node5

修改node1/etc/hosts,並同步到所有node主機

 

部署RGW軟件包

客戶端通過RGW訪問存儲集群

 

通過node1安裝ceph-radosgw

[root@node1~]# ceph-deploy install --rgw node5

同步配置文件與密鑰node5

[root@node1~]#  cd /root/ceph-cluser

[root@node1 ceph-cluser]# ceph-deploy admin node5

 

 

新建網關

啟動一個rgw服務

[root@node1]# ceph-deploy rgw create node5

進入node5驗證服務是否啟動

[root@node5~]#ps aux | grep radosgw

 

 

修改服務端口

登陸node5 RGW默認服務端口為7480,修改為80,方便使用

[root@node5~]# /etc/ceph/ceph.conf

[client.rgw.node5]

Host = node5

Rgw_frontens = “civetweb port=80”

//node5是主機名

//civetwebRGW內置的一個web服務

 

客戶端測試RGW是否正常工作

[root@client~]# curl 192.168.4.55:80

<?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsResult

xmlns="http://s3.amazonaws.com/doc/2006-03-

01/"><Owner><ID>anonymous</ID><DisplayName></DisplayName></Owner><Buckets></Buckets

></ListAllMyBucketsResult>

 

創建客戶端連接時使用的帳戶密碼

[node5 ceph]# radosgw-admin user create --uid="testuser" --display-name="First User"

//--uid 指是用戶名   --display-name 是描述信息

 

 "keys": [

        {

            "user": "testuser",

            "access_key": "356O8JOHCM0D0NCW84W3",

            "secret_key": "zE4ONNIc9st6OJMADvJAYAYH2rhbWAeDhwrLtwMA"

        }

    ],

// "access_key": 是客戶端訪問網關主機的密鑰

// "secret_key": 是加密字符串

 

 

客戶端安裝訪問網關主機node5的工具(命令行訪問工具)

[root@client ~]# yum -y install s3cmd-2.0.1-1.el7.noarch.rpm

 

顯示testuser用戶密鑰信息

node5 ceph]#  radosgw-admin user info --uid=testuser

"keys": [

        {

            "user": "testuser",

            "access_key": "356O8JOHCM0D0NCW84W3",

            "secret_key": "zE4ONNIc9st6OJMADvJAYAYH2rhbWAeDhwrLtwMA"

        }

    ],

 

執行,配置軟件

[root@client /]# s3cmd --configure

Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables.

Access Key: 3D7J0E1479SVO7JH11SN

Secret Key: BN7uWCrQ5l8iu46cFQEZmG9zz8TgrcHrRSepEOOH

S3 Endpoint [s3.amazonaws.com]: 192.168.4.55:80

[%(bucket)s.s3.amazonaws.com]: %(nucket)s.192.168.4.5580

Use HTTPS protocol [Yes]: no

Test access with supplied credentials? [Y/n] y

Save settings? [y/N] y

//其他注釋默認回車不填寫

 

客戶端創建存儲數據的bucket(類似於存儲數據的目錄)

[root@client ~]# s3cmd mb s3://my_bucket

Bucket 's3://my_bucket/' created

查看

[root@client ~]# s3cmd ls

2018-10-12 09:49  s3://my_bucket

客戶端上傳文件存儲目錄中(put 上傳)

[root@client ~]# s3cmd put /etc/passwd s3://my_bucket/log/

upload: '/etc/passwd' -> 's3://my_bucket/log/passwd'  [1 of 1]

 2168 of 2168   100% in    6s   343.79 B/s  done

客戶端查看一下

[root@client ~]# s3cmd ls s3://my_bucket/log/

2018-10-12 09:51      2168   s3://my_bucket/log/passwd

將文件下載到本地(wget下載)

[root@client ~]# s3cmd get s3://my_bucket/log/passwd  /tmp/

將文件刪除(del 刪除)

[root@client ~]# s3cmd del s3://my_bucket/log/passwd

delete: 's3://my_bucket/log/passwd'

再看一下就沒了

[root@client ~]# s3cmd ls s3://my_bucket/log/

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM