zoukankan      html  css  js  c++  java
  • 二十九.块存储应用案例 分布式文件系统 对象存储

    client:192.168.4.10
    node1 :192.168.4.11
    ndoe2 :192.168.4.12
    node3 :192.168.4.13
     
    1.块存储 应用案例(真机访问)
    rbd池子镜像共享盘 块存储
    Filesystem---KRBD---Kernel---ceph 
    要求:
    Ceph创建块存储镜像
    客户端安装部署ceph软件
    客户端部署虚拟机
    客户端创建secret
    设置虚拟机配置文件,调用ceph存储
     
    *************
    ]# rpm -e --nodeps xxxxxxx
    当安装了更高版本软件,但是需要低版本的时候,可以卸载高版本软件包
    这种卸载方式可以脱离依赖关系,在重新安装
    *************
     
    1.1 创建磁盘镜像(node1)
    ]# rbd create vm1-image --image-feature  layering --size 10G
    ]# rbd create vm2-image --image-feature  layering --size 10G
    ]# rbd list
    vm1-image
    vm2-image
    ]# rbd info vm1-image
    ]# qemu-img  info  rbd:rbd/vm1-image
    image: rbd:rbd/vm1-image
    file format: raw
    virtual size: 10G (10737418240 bytes)
    disk size: unavailable
     
    1.2 Ceph认证账户。
    Ceph默认开启用户认证,客户端需要账户才可以访问,
    默认账户名称为client.admin,key是账户的密钥,
    可以使用ceph auth添加新账户(案例我们使用默认账户)。
    ]# cat /etc/ceph/ceph.conf          //配置文件 
    [global]
    mon_initial_members = node1, node2, node3
    mon_host = 192.168.4.11,192.168.4.12,192.168.4.13
    auth_cluster_required = cephx                      //开启认证
    auth_service_required = cephx                      //开启认证
    auth_client_required = cephx                       //开启认证
    ]# cat /etc/ceph/ceph.client.admin.keyring         //账户文件
    [client.admin]
        key = AQBTsdRapUxBKRAANXtteNUyoEmQHveb75bISg==
     
    1.3 部署客户端环境(真机,将虚拟机部署在ceph上)
    注意:这里使用真实机当客户端!
    客户端需要安装ceph-common软件包,拷贝配置文件(否则不知道集群在哪),
    拷贝连接密钥(否则无连接权限)。
    ]# yum -y  install ceph-common
    ]# scp 192.168.4.11:/etc/ceph/ceph.conf  /etc/ceph/
    ]# scp 192.168.4.11:/etc/ceph/ceph.client.admin.keyring
    /etc/ceph/
     
    1.4 创建KVM虚拟机(虚拟化迁移)#真机操作
    **********************
    虚拟机存放位置:/var/lib/libvirt/images/xxx
    虚拟机描述信息存放位置:/etc/libvirt/qemu/xxx.xml
    ]# virsh destroy xxx #关闭
    ]# virsh start xxx   #开启
    ]# virsh console xxx #远程登陆
    ]# virsh list --all  #查看全部虚拟机
    ]# virsh edit xxx    #编辑虚拟机描述信息
    ]# virsh secret-list #查看秘钥
    ]# virsh --help | grep secret
    Secret (help keyword 'secret')
        secret-define      定义或者修改 XML 中的 secret
        secret-dumpxml     XML 中的 secret 属性
        secret-event       Secret Events
        secret-get-value   secret 值输出
        secret-list        列出 secret
        secret-set-value   设定 secret 值
        secret-undefine    取消定义 secret
    *************************
     
    1.4.1 图形化操作,创建虚拟机dachui
    1.4.2 配置libvirt secret
    ]# vim secret.xml      //新建临时文件,内容如下 
    <secret ephemeral='no' private='no'>
            <usage type='ceph'>
                    <name>client.admin secret</name>
            </usage>
    </secret>
    #使用XML配置文件创建secret
    1.4.3 生成用户信息,用户名
    ]# virsh secret-define --file secret.xml(生成用户信息,用户名)
    732a4f12-1166-4c81-a42f-55814eb353c2  ceph client.admin secret
    ] virsh secret-list
     UUID                                  用量
    --------------------------------------------------------------------------------
     732a4f12-1166-4c81-a42f-55814eb353c2  ceph client.admin secret
    1.4.4 生成密码
    查看client.admin账户的密码
    ]# cat /etc/ceph/ceph.client.admin.keyring
    [client.admin]
    key = AQAUZmJcPjeHCBAAJpQCzugV8Wf6iQLckB8gNw==
    生成秘钥:
    ]# virsh secret-set-value
    --secret 732a4f12-1166-4c81-a42f-55814eb353c2
    --base64 AQAUZmJcPjeHCBAAJpQCzugV8Wf6iQLckB8gNw==
    secret 值设定
    1.4.5 虚拟机的XML配置文件
    ] virsh edit dachui
    找到对应disk对,修改前内容如下
    <disk type='file' device='disk'>
          <driver name='qemu' type='qcow2'/>
          <source file='/var/lib/libvirt/images/vm1.qcow2'/>
          <target dev='vda' bus='virtio'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </disk>
    修改后内容如下:
    <disk type='network' device='disk'>
          <driver name='qemu' type='raw'/>
            #新加ceph磁盘的用户认证
          <auth username='admin'>
            <secret type='ceph' uuid='732a4f12-1166-4c81-a42f-55814eb353c2'/>
               #生成的对应的额uuid
          </auth>
          <source protocol='rbd' name='rbd/vm1-image'>
            #ceph磁盘镜像地址
            <host name='192.168.4.11' port='6789'/>
          </source>
          <target dev='vda' bus='virtio'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
        </disk>
    1.4.6 打开dachui虚拟机
    查看VirtLO磁盘1的虚拟路径:
    源路径 rbd://192.168.4.11:6789/rbd/vm1-image
     
    2.Ceph文件系统(虚拟机访问)
    VM---Hypervisor---librbd---ceph
     
    node4:192.168.4.14
    部署MDSs节点
    创建Ceph文件系统
    客户端挂载文件系统
     
    2.1 添加一台新的虚拟机,要求如下:
    IP地址:192.168.4.14
    主机名:node4
    配置yum源(包括rhel、ceph的源)
    与Client主机同步时间
    node1允许无密码远程node4
     
    2.2 部署元数据服务器
    node4]# yum -y install ceph-mds
     
    2.3 登陆node1部署节点操作
    2.3.1 添加主机名解析
    node1]# vim /etc/hosts
    192.168.4.10  client
    192.168.4.11  node1
    192.168.4.12  node2
    192.168.4.13  node3
    192.168.4.14  node4
    2.3.2 配置node4文件(node1)
    node1]# cd /root/ceph-cluster
    //该目录,是最早部署ceph集群时,创建的目录
    cluster]# ceph-deploy mds create node4
    //给nod4拷贝配置文件,启动mds服务
    cluster]# ceph-deploy admin node4(一定要在cluster工作目录下)
    同步配置文件和key
     
    2.4 创建存储池
    node4]# ceph osd pool create cephfs_data 128(32-64都可以,block数据盘,类似磁盘划分)
    pool 'cephfs_data' created
    //创建存储池,对应128个PG
    node4]# ceph osd pool create cephfs_metadata 128(元数据,类似格式化)
    pool 'cephfs_metadata' created
    node4 ~]# ceph osd lspools
    0 rbd,1 cephfs_data,2 cephfs_metadata,
     
    2.5 创建Ceph文件系统(只能做一个)
    node4]# ceph mds stat   //查看mds状态
    e2:, 1 up:standby
    node4]# ceph fs new myfs1 cephfs_metadata cephfs_data
    new fs with metadata pool 2 and data pool 1 
    用元数据cephfs_metadata 和 数据盘cephfs_data 创建文件系统)
    //注意,现写medadata池,再写data池
    //默认,只能创建1个文件系统,多余的会报错
    node4]# ceph fs ls
    name: myfs1, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
    node4]# ceph mds stat
    e5: 1/1/1 up {0=node4=up:active}
     
    2.6 客户端挂载(不用格式化,已经是文件系统)
    client]# mkdir /mnt/cephfs
    client]# mount -t(type) ceph 192.168.4.11:6789:/  /mnt/cephfs/
    -o name=admin,secret=AQAUZmJcPjeHCBAAJpQCzugV8Wf6iQLckB8gNw==
    //连接node1 2 3 都可以 都是mon
    //...4.11:6789:/ 为什么直接挂根下,因为ceph只能做一个文件系统
    //注意:文件系统类型为ceph
    //192.168.4.11为MON节点的IP(不是MDS节点)
    //admin是用户名,secret是密钥
    //密钥可以在/etc/ceph/ceph.client.admin.keyring中找到
    client]# df -h
    192.168.4.11:6789:/ 120G  232M  120G 1% /mnt/cephfs
     
    *******************
    格式化:赋予空间文件系统的过程
    inode            block
    元数据               真实数据
    真实数据的描述信息、指针(数据定位)
    磁盘碎片整理:零散的数据整合排列,顺序化
    格式化单元默认大小:4k
    数据删除:只是将对应文件的inode标签为已删除,真实数据还在,如果继续写操作,就会随机覆盖
    数据恢复:再没有继续写操作的前提下,找出打标签的inode,恢复inode即可。
    ceph-mds---inode
    ceph-osd---block
    ********************
     
    3.创建对象存储服务器
    安装部署Rados Gateway
    启动RGW服务
    设置RGW的前端服务与端口
    客户端测试
     
    3.1 部署对象存储服务器
    3.1.1 准备实验环境,要求如下:
    IP地址:192.168.4.15
    主机名:node5
    配置yum源(包括rhel、ceph的源)
    与Client主机同步时间
    node1允许无密码远程node5
    修改node1的/etc/hosts,并同步到所有node主机
    添加主机名解析
    node1]# vim /etc/hosts
    192.168.4.10  client
    192.168.4.11  node1
    192.168.4.12  node2
    192.168.4.13  node3
    192.168.4.14  node4
    192.168.4.15  node5
    3.1.2 部署RGW软件包
    node1 ~]# ceph-deploy install --rgw node5
    同步配置文件与密钥到node5
    node1 ~]# cd /root/ceph-cluster
    node1 ~]# ceph-deploy admin node5
    3.1.3 新建网关实例
    启动一个rgw服务
    node1 ~]# ceph-deploy rgw create node5
    登陆node5验证服务是否启动
    node5 ~]# ps aux | grep radosgw
    ceph 17710  0.3  1.6 2294328 17132 ?   Ssl  09:55  0:00 /usr/bin/radosgw -f --cluster ceph --name client.rgw.node3 --setuser ceph --setgroup ceph
    root 17962  0.0  0.0 112676   980 pts/0 R+   09:56   0:00 grep --color=auto radosgw
    3.1.4 修改服务端口
    登陆node5,RGW默认服务端口为7480,修改为8000或80更方便客户端记忆和使用
    node5 ~]# vim /etc/ceph/ceph.conf
    新添加:
    [client.rgw.node5]
    host = node5
    rgw_frontends = "civetweb port=8000"
    //node5为主机名
    //civetweb是RGW内置的一个web服务
    ]# systemctl restart ceph-radosgw@rgw.node5.service #重启服务
     
    3.2 client测试:
    3.2.1 curl测试
    ]# curl 192.168.4.15:8000
    <?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsR...
     
    3.2.2 使用第三方软件访问
    登陆node5(RGW)创建账户
    node5 ~]# radosgw-admin user create
    --uid="testuser" --display-name="First User"
    … …
    "keys": [
            {
                "user": "testuser",
                "access_key": "5E42OEGB1M95Y49IBG7B",
                "secret_key": "i8YtM8cs7QDCK3rTRopb0TTPBFJVXdEryRbeLGK6"
            }
        ],
    ... ...
    #
    node5 ~]# radosgw-admin user info --uid=testuser
    //testuser为用户,key是账户访问密钥
    3.2.3 客户端安装软件
    client ~]# yum install s3cmd-2.0.1-1.el7.noarch.rpm
    修改软件配置(注意,除了下面设置的内容,其他提示都默认回车)
    client ~]#  s3cmd --configure
    Access Key: 5E42OEGB1M95Y49IBG7BSecret Key: i8YtM8cs7QDCK3rTRopb0TTPBFJVXdEryRbeLGK6
    S3 Endpoint [s3.amazonaws.com]: 192.168.4.15:8000
    [%(bucket)s.s3.amazonaws.com]: %(bucket)s.192.168.4.15:8000
    Use HTTPS protocol [Yes]: No
    Test access with supplied credentials? [Y/n] n
    Save settings? [y/N] y
    //注意,其他提示都默认回车
    3.2.4 创建存储数据的bucket(类似于存储数据的目录)
    client ~]# s3cmd ls
    client ~]# s3cmd mb s3://my_bucket
    Bucket 's3://my_bucket/' created
    client ~]# s3cmd ls
    2018-05-09 08:14 s3://my_bucket
    client ~]# s3cmd put /var/log/messages s3://my_bucket/log/
    client ~]# s3cmd ls
    2018-05-09 08:14 s3://my_bucket
    client ~]# s3cmd ls s3://my_bucket
    DIR s3://my_bucket/log/
    client ~]# s3cmd ls s3://my_bucket/log/
    2018-05-09 08:19 309034 s3://my_bucket/log/messages 
    测试下载功能
    client ~]# s3cmd get s3://my_bucket/log/messages /tmp/
    测试删除功能
    client ~]# s3cmd del s3://my_bucket/log/messages
  • 相关阅读:
    Android游戏开发22:Android动画的实现J2me游戏类库用于Android开发
    android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第三部分,完整代码)
    使用OGR创建dxf格式矢量数据
    mysql 数据库引擎 MyISAM InnoDB 大比拼 区别
    android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第二部分)
    mysql 更改数据库引擎
    android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第一部分)
    android 数字键盘使用
    MySQL Innodb数据库性能实践
    eclipse : Error while performing database login with the driver null
  • 原文地址:https://www.cnblogs.com/luwei0915/p/10490873.html
Copyright © 2011-2022 走看看