块存储的应用、libvirt secret、KVM虚拟机、配置对象存储

注:此篇文章,如有疑惑,请参考上一篇【CEPH集群 分布式存储服务】。

一、块存储应用
1.1 Ceph认证账户
Ceph默认开启用户认证,客户端需要账户才可以访问
— 默认账户名称为client.admin ,key是账户的密钥
— 可以使用ceph auth 添加新账户(实验中使用默认账户)
node:

# cat  /etc/ceph/ceph.conf   //配置文件
	[global]
	fsid = 4cad35ad-9829-415a-9d40-8691c2648d74
	mon_initial_members = node1, node2, node3
	mon_host = 192.168.4.51,192.168.4.52,192.168.4.53
	auth_cluster_required = cephx     //开启认证
	auth_service_required = cephx		//开启认证
	auth_client_required = cephx		//开启认证
# cat /etc/ceph/ceph.client.admin.keyring    //账户文件
	[client.admin]
	key = AQClRb9bvvkQHhAA0r2ihnFWR3JsBvgYJx7NAg==

配置:
准备实验环境真实机作为客户端
2.1 在管理主机上创建磁盘镜像(node1)

#  cd  /root/ceph-cluster
#	 rbd create vm1-image --image-feature layering --size 10G
# 	rbd create vm2-image --image-feature layering --size 10G
#	 rbd list(镜像列表)
	demo-image
	image-clone
	vm1-image
	vm2-image
#  qemu-img info rbd:rbd/vm1-image(查看镜像的详细信息)
	image: rbd:rbd/vm1-image
	file format: raw
	virtual size: 10G (10737418240 bytes)
	disk size: unavailable

2.2 配置yum源(真实机)
块存储的应用、libvirt secret、KVM虚拟机、配置对象存储_第1张图片

2.3 从管理主机上拷贝集群配置文件和密码文件到本机(真机)的/etc/ceph/ 下

#	 yum -y install ceph-common.x86_64
#  scp 192.168.4.51:/etc/ceph/ceph.conf  /etc/ceph
# 	scp 192.168.4.51:/etc/ceph/ceph.client.admin.keyring  /etc/ceph
#	 ls /etc/ceph/
	ceph.client.admin.keyring  ceph.conf  rbdmap

2.4 在真机上创建一台新的虚拟机,常见好后不需要安装操作系统

#  virsh  list  --all

2.5 libvirt secret
+++++++++++++++++++++++++++++++++++++
配置libvirt secret
KVM虚拟机需要使用librbd才可以访问ceph集群
Librbd访问ceph又需要账户认证
因此在这里,需要给libvirt设置账户信息
a) 编写账户信息文件(真实机操作)

# vim secret.xml 

    
            client.admin  secret
    

b) 使用XML配置文件创建secret

# virsh secret-define  --file  secret.xml

生成 secret 342b4a54-8a03-4b79-9ffc-84a8eac89e36
//随机的UUID,这个UUID对应账户信息
注:删除secret 的方法

# virsh secret-undefine  342b4a54-8a03-4b79-9ffc-84a8eac89e36

c)编写账户信息文件(真实机)

# ceph auth get-key client.admin

//获取client.admin的key,或者直接查看密钥文件/etc/ceph/ceph.client.admin.keyring
d)设置secret,添加账户的密钥

#	virsh secret-set-value --secret 90833f12-c0a1-44f3-92ea-09d37eec3ec6 
--base64 AQClRb9bvvkQHhAA0r2ihnFWR3JsBvgYJx7NAg==
								//这里secret后面是之前创建的secret的UUID
								//base64后面是client.admin账户的密码
								//现在secret中既有账户信息又有密钥信息

e) 将之前没有操作系统的虚拟机avpc的配置文件拷贝一份,进行修改

#	virsh  dumpxml  avpc  >  /tmp/avpc1.xml

虚拟机的XML配置文件
每个虚拟机都会有一个XML配置文件,包括:
— 虚拟机的名称、内存、CPU、磁盘、网卡等信息
修改之前:

# vim /etc/libvirt/qemu/avpc.xml

块存储的应用、libvirt secret、KVM虚拟机、配置对象存储_第2张图片

#	vim /tmp/avpc1.xml

删除下图中的 uuid这一行
3
继续在文中修改:内容如下:
块存储的应用、libvirt secret、KVM虚拟机、配置对象存储_第3张图片
37~43行之间的内容是手动添加的,其中红色部分时需要根据实际情况进行修改

username:

# cat /etc/ceph/ceph.client.admin.keyring(在此文件中获取)

uuid调取:

# virsh secret-list(之前生成的)

name获取:

# rbd list

			//这里的uuid就是secret的uuid,有client.admin账户和密钥信息

       
 
			//这里说明使用账户连接那台ceph主机和端口,访问哪个池和镜像
 
			//这里说明经获取的镜像,设置为虚拟机的vda磁盘

根据配置文件生成虚拟机
使用编辑好的虚拟配置文件/tmp/avpc1.xml 创建虚拟机

#virsh define /tmp/avpc1.xml

定义域 avpc1(从 /tmp/avpc1.xml)

# virsh list --all

5

分布式文件系统存储
CephFs—— 分布式文件系统(Distributed File System)是指本地文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连
CephFS使用Ceph集群提供与POSIX兼容的文件系统
允许Linux直接将Ceph存储mount到本地

环境准备:新添一台虚拟机node4
块存储的应用、libvirt secret、KVM虚拟机、配置对象存储_第4张图片

元数据服务器
— 任何文件系统中的数据分为数据和元数据
— 数据是值普通文件中的实际数据
— 而元数据指用来描述一个文件的特征以及文件数据快的分布信息
— 比如:访问权限,文件拥有着以及文件数据块的分布信息
— 所以CephFS必须有MDSs节点
部署元数据服务器:

  1. 在node4上装ceph-mds软件包

    # yum -y install ceph-mds
    
  2. 在管理主机node1上部署节点(创建数据服务器)

    #	cd /root/ceph-cluster/	//此目录是在部署ceph集群时创建的
    #	ceph-deploy mds create node4   //给node4拷贝配置文件,启动mds服务器
    #	ceph-deploy admin node4   //同步配置文件个key
    
  3. 创建存储池

    # ceph osd pool create cephfs_data 128    //存储数据的池
    # ceph osd pool create cephfs_meatedata 128 //存储元数据的池
    
  4. 使用前面创建的池,创建文件系统myfs1(名字可变)

    # ceph fs new myfs1 cephfs_meatedata  cephfs_data
    

//先写medadata池,再写data池,默认只能创建1个池,多于会报错
5. 产看mds状态信息

	# ceph mds stat

在客户端50上使用cephfs方式共享的存储设备myfs1

  1. 创建挂载点

    # mkdir  /cephfs
    
  2. 查看连接集群管理主机的用户和密码

    # cat /etc/ceph/ceph.client.admin.keyring
    
  3. 创建cephfs设备(客户端挂载)

    #mount -t   ceph 192.168.4.51:6789:/  /cephfs/ -o 
    name=admin,secret=AQClRb9bvvkQHhAA0r2ihnFWR3JsBvgYJx7NAg==
    			//文件系统类型ceph,192.168.4.51为MON节点的IP(不是MDS节点)
    admin为用户名,secret是密钥,密钥可以在/etc/ceph/ceph.client.admin.keyring查看
    
  4. 查看挂载信息

    # mount  |  grep  cephfs
    
  5. 储存数据,使用ceph存储

    # echo  1234567 > /cephfs/test3.txt
    # cat  /cephfs/test3.txt
    

卸载:(要先退出挂载目录执行卸载命令)

+++++++++++++++++++++++++++++++++++++++++++++++
对象存储
— 也是键值存储,通其接口指令,也就是简单的GIT、PUT、DEL和其他扩展,向存储服务上传下载数据
— 对象存储中所有数据都被认为是一个对象,所以,任何数据都可以存入对象存储服务器
RGW全称是Rados Gateway
RGW是Ceph对象存储网关,用于向客户端应用呈现存储界面,提供RESTful API访问接口
RGW可以部署多台,拓扑如下:
块存储的应用、libvirt secret、KVM虚拟机、配置对象存储_第5张图片
环境准备:添加一台虚拟机node55,要求如下
块存储的应用、libvirt secret、KVM虚拟机、配置对象存储_第6张图片

对象存储配置:

  1. 部署RGW软件包(因用户需要通过RGW访问存储集群)
    node1主机:

    # ceph-deploy install --rgw  node5
    # cd  /root/ceph-cluster
    # ceph-deploy admin node5
    # ceph-deploy rgw create node5
    # ls /etc/ceph
    
  2. 启动一个rgw服务

    # ceph-deploy rgw create node5
    
  3. 登陆验证服务是否启动

    # ps aux |  grep  radosgw
    

    ceph 3604 0.1 2.0 2286132 21208 ? Ssl 04:54 0:14 /usr/bin/radosgw -f --cluster ceph --name client.rgw.node5 --setuser ceph --setgroup ceph

  4. 修改55主机内置web服务监听端口号(默认端口为7480 修改为80 端口便于客户端连接)

    # vim /etc/ceph/ceph.conf(追加下面的内容)
    	[client.rgw.node5]
    	host = node5     //主机名
    

    rgw_frontends = “civetweb port=80” //civetweb是RGW内置的一个为web服务
    客户端client测试:此操作只测试RGW是否正常工作
    —— 上传、下载数据还需要调用API端口

    # curl  http://192.168.4.55
    
    anonymous
    

    注;若出现web原始页面,需要关闭http服务;如出现无法连接,则重起ceph-radosgw@*服务
    使用第三方软件访问:

  5. 在node5 创建客户端端连接时使用的用户名和密码

    # radosgw-admin user create --uid="testuser"  --display-name="First User"
    

屏幕输出会包含以下内容:
块存储的应用、libvirt secret、KVM虚拟机、配置对象存储_第7张图片
显示testuser用户密钥信息

	#  radosgw-admin user info --uid=testuser
  1. 客户端client安装访问网关主机node5的工具(命令行访问工具)

     # yum -y install /root/s3cmd-2.0.1-1.el7.noarch.rpm(此软件包须自己准备)
    
  2. 配置软件 (//Access Key与Secret Key输入的内容从第1步的屏幕输出中复制)

    #	s3cmd --configure
    

块存储的应用、libvirt secret、KVM虚拟机、配置对象存储_第8张图片
4. 客户端上传、下载文件
a) 查看

# s3cmd ls

b) 创建存储数据的bucket(类似与存储数据的目录)

# s3cmd mb s3://my_bucket

c) 上传

# s3cmd put /var/log/messages s3://my_bucket/log/

d) 下载

# s3cmd get s3://my_bucket/log/messages /tmp/

e) 删除

# s3cmd del s3://my_bucket/log

你可能感兴趣的:(块存储的应用、libvirt secret、KVM虚拟机、配置对象存储)