分享

Ubuntu 14.04下单节点Ceph安装

xioaxu790 发表于 2014-12-17 13:53:04 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 10 52679
问题导读
1、一个ceph cluster至少需要哪些节点?
2、ceph和cinder有何不同?
3、Ceph如何与Cinder集成?





Ceph理论


    注意点:
     a, 一个ceph cluster至少需要1个mon节点和2个osd节点才能达到active + clean状态(故osd pool default size得>=2),meta节点只有运行ceph文件系统时才需要。
        所以如果只有一个单节点的话,需要在ceph deploy new命令之后紧接着执行下列命令修改ceph.conf配置:
  1.         echo "osd crush chooseleaf type = 0" >> ceph.conf
  2.         echo "osd pool default size = 1" >> ceph.conf
复制代码

        osd crush chooseleaf type参数很重要,解释见:https://ceph.com/docs/master/rados/configuration/ceph-conf/

     b, 多个网卡的话,可在ceph.conf的[global]段中添加public network = {cidr}参数

     c, 一个osd块设备最好大于5G,不然创建日志系统时会空间太小, 或修改:
  1.         echo "osd journal size = 100" >> ceph.conf
复制代码


     d, 测试时不想那么涉及权限那么麻烦,可以
  1.        echo "auth cluster required = none" >> ceph.conf
  2.        echo "auth service required = none" >> ceph.conf
  3.        echo "auth client required = none" >> ceph.conf
复制代码



环境准备
    单节点node1上同时安装osd(一块块设备/dev/ceph-volumes/lv-ceph0),mds, mon, client与admin。
    1, 确保/etc/hosts
  1.         127.0.0.1       localhost
  2.         192.168.99.116 node1
复制代码


    2, 确保安装ceph-deply的机器和其它所有节点的ssh免密码访问(ssh-keygen && ssh-copy-id othernode)

安装步骤(注意,下面所有的操作均在admin节点进行)
1, 准备两块块设备(块设备可以是硬盘,也可以是LVM卷),我们这里使用文件裸设备模拟
  1.    dd if=/dev/zero of=/bak/images/ceph-volumes.img bs=1M count=4096 oflag=direct
  2.    sgdisk -g --clear /bak/images/ceph-volumes.img
  3.    sudo vgcreate ceph-volumes $(sudo losetup --show -f /bak/images/ceph-volumes.img)
  4.    sudo lvcreate -L2G -nceph0 ceph-volumes
  5.    sudo lvcreate -L2G -nceph1 ceph-volumes
  6.    sudo mkfs.xfs -f /dev/ceph-volumes/ceph0
  7.    sudo mkfs.xfs -f /dev/ceph-volumes/ceph1
  8.    mkdir -p /srv/ceph/{osd0,osd1,mon0,mds0}
  9.    sudo mount /dev/ceph-volumes/ceph0 /srv/ceph/osd0
  10.    sudo mount /dev/ceph-volumes/ceph1 /srv/ceph/osd1
复制代码

   若想直接使用裸设备的话,直接用losetup加载即可: sudo losetup --show -f /bak/images/ceph-volumes.img

2, 安装ceph-deploy
  1.    sudo apt-get install ceph ceph-deploy
复制代码


3, 找一个工作目录创建集群, ceph-deploy new {ceph-node}
  1.    mkdir ceph-cluster
  2.    cd /bak/work/ceph/ceph-cluster
  3.    ceph-deploy new node1
复制代码


     如果只有一个节点,还需要执行:
  1.         echo "osd crush chooseleaf type = 0" >> ceph.conf
  2.         echo "osd pool default size = 1" >> ceph.conf
  3.         echo "osd journal size = 100" >> ceph.conf
复制代码


4, 安装Ceph基本库(ceph, ceph-common, ceph-fs-common, ceph-mds, gdisk), ceph-deploy install {ceph-node}[{ceph-node} ...]
  1.    ceph-deploy install node1  #如果是多节点,就将节点都列在后面
复制代码


5, 增加一个集群监视器, ceph-deploy mon create {ceph-node}
  1.    ceph-deploy mon create node1
复制代码



6, 收集远程节点上的密钥到当前文件夹, ceph-deploy gatherkeys {ceph-node}
  1.    ceph-deploy gatherkeys node1
复制代码



7, 增加osd, ceph-deploy osd prepare {ceph-node}:/path/to/directory
  1.    ceph-deploy osd prepare node1:/srv/ceph/osd0
  2.    ceph-deploy osd prepare node1:/srv/ceph/osd1
复制代码



8, 激活OSD, ceph-deploy osd activate {ceph-node}:/path/to/directory
  1. <span style="background-color: rgb(255, 255, 255);"> sudo ceph-deploy osd activate node1:/srv/ceph/osd0</span>
复制代码

   若出现错误ceph-disk: Error: No cluster conf found,那是需要清空/src/ceph/osd0

9, 复制 admin 密钥到其他节点, 复制 ceph.conf, ceph.client.admin.keyring 到 ceph{1,2,3}:/etc/ceph
  1.   ceph-deploy admin node1
复制代码


10, 验证
  1.    sudo ceph -s
  2.    sudo ceph osd tree   
复制代码


11, 添加新的mon
   多个mon可以高可用,
   1)修改/etc/ceph/ceph.conf文件,如修改:mon_initial_members = node1 node2
   2) 同步配置到其它节点,ceph-deploy --overwrite-conf config push node1 node2
   3) 创建mon, ceph-deploy node1 node2

12, 添加新mds, 只有文件系统只需要mds,目前官方只推荐在生产环境中使用一个 mds。

13, 作为文件系统使用直接mount即可,mount -t ceph node1:6789:/ /mnt -o name=admin,secret=<keyring>

14, 作为块设备使用:
  1.     sudo modprobe rbd
  2.     sudo ceph osd pool set data min_size 2
  3.     sudo rbd create --size 1 -p data test1 #创建1M块设备/dev/rbd/{poolname}/imagename
  4.     sudo rbd map test1 --pool data
  5.     sudo mkfs.ext4 /dev/rbd/data/test1
复制代码


15, 命令操作
   1)默认有3个池
  1.      $ sudo rados lspools
  2.       data
  3.       metadata
  4.       rbd
复制代码


      创建池:$ sudo rados mkpool nova
   2)将data池的文件副本数设置为1,如果不设置这个就命令一直不返回
  1.      $ sudo ceph osd pool set data min_size 2
  2.        set pool 0 min_size to 1
复制代码


   3)上传一个文件,$ sudo rados put test.txt ./test.txt --pool=data
   4)查看文件,
  1.      $ sudo rados -p data ls
  2.        test.txt
复制代码


   5)查看对象位置
  1.      $ sudo ceph osd map data test.txt
  2.        osdmap e9 pool 'data' (0) object 'test.txt' -> pg 0.8b0b6108 (0.8) -> up ([0], p0) acting ([0], p0)
  3.      $ cat /srv/ceph/osd0/current/0.8_head/test.txt__head_8B0B6108__0
  4.        test
复制代码


   6)添加一个新osd后,可以用“sudo ceph -w”命令看到对象在群体内迁移
16, Ceph与Cinder集成, 见:http://ceph.com/docs/master/rbd/rbd-openstack/
   1) 集建池
  1.       sudo ceph osd pool create volumes 128
  2.       sudo ceph osd pool create images 128
  3.       sudo ceph osd pool set volumes min_size 2
  4.       sudo ceph osd pool set images min_size 2
复制代码


   2) 配置glance-api, cinder-volume, nova-compute的节点作为ceph client,因为我的全部是一台机器就不需要执行下列步骤
      a, 都需要ceph.conf, ssh {openstack-server} sudo tee /etc/ceph/ceph.conf < /etc/ceph/ceph.conf
      b, 都需要安装ceph client, sudo apt-get install python-ceph ceph-common
      c, 为images池创建cinder用户,为images创建glance用户,并给用户赋予权限
  1.          sudo ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefixrbd_children,allow rwx pool=volumes,allow rx pool=images'
  2.          sudo ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefixrbd_children,allow rwx pool=images'
复制代码


      d, 为cinder和glance生成密钥(ceph.client.cinder.keyring与ceph.client.glance.keyring)
  1.          sudo chown -R hua:root /etc/ceph
  2.          ceph auth get-or-create client.glance | ssh {glance-api-server} sudo tee /etc/ceph/ceph.client.glance.keyring
  3.          ssh {glance-api-server} sudo chown hua:root /etc/ceph/ceph.client.glance.keyring
  4.          ceph auth get-or-create client.cinder | ssh {volume-server} sudo tee /etc/ceph/ceph.client.cinder.keyring
  5.         ssh {cinder-volume-server} sudo chown hua:root /etc/ceph/ceph.client.cinder.keyring
复制代码


      e, 配置glance, /etc/glance/glance-api.conf,注意,是追加,放在后面
  1.       default_store=rbd
  2.      rbd_store_user=glance
  3.      rbd_store_pool=images
  4.      show_image_direct_url=True
复制代码


      f、为nova-compute的libvirt进程也生成它所需要的ceph密钥client.cinder.key
  1.         sudo ceph auth get-key client.cinder | ssh {compute-node} tee /etc/ceph/client.cinder.key
  2.         $ sudo ceph auth get-key client.cinder | ssh node1 tee /etc/ceph/client.cinder.key
  3.           AQAXe6dTsCEkBRAA7MbJdRruSmW9XEYy/3WgQA==
  4.         $ uuidgen
  5.           e896efb2-1602-42cc-8a0c-c032831eef17
  6.     $ cat > secret.xml <<EOF
  7.     <secret ephemeral='no' private='no'>
  8.       <uuid>e896efb2-1602-42cc-8a0c-c032831eef17</uuid>
  9.       <usage type='ceph'>
  10.         <name>client.cinder secret</name>
  11.       </usage>
  12.     </secret>
  13.     EOF
  14.        $ sudo virsh secret-define --file secret.xml
  15.          Secret e896efb2-1602-42cc-8a0c-c032831eef17 created
  16.        $ sudo virsh secret-set-value --secret e896efb2-1602-42cc-8a0c-c032831eef17 --base64 $(cat /etc/ceph/client.cinder.key)
  17.        $ rm client.cinder.key secret.xml
  18. vi /etc/nova/nova.conf
  19. libvirt_images_type=rbd
  20. libvirt_images_rbd_pool=volumes
  21. libvirt_images_rbd_ceph_conf=/etc/ceph/ceph.conf
  22. rbd_user=cinder
  23. rbd_secret_uuid=38960765-a537-4e78-8080-120a75222d2f
  24. libvirt_inject_password=false
  25. libvirt_inject_key=false
  26. libvirt_inject_partition=-2
复制代码


并重启nova-compute服务
     f,配置cinder.conf并重启cinder-volume,
  1. sudo apt-get install librados-dev librados2 librbd-dev python-ceph radosgw radosgw-agent
  2. cinder-volume --config-file /etc/cinder/cinder.conf
  3.     volume_driver =cinder.volume.drivers.rbd.RBDDriver
  4.     rbd_pool=volumes
  5.     glance_api_version= 2
  6.     rbd_user = cinder
  7.     rbd_secret_uuid = e896efb2-1602-42cc-8a0c-c032831eef17
  8.     rbd_ceph_conf=/etc/ceph/ceph.conf
复制代码


17, 运行一个实例
  1. wget http://download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img
  2. qemu-img convert -f qcow2 -O raw cirros-0.3.2-x86_64-disk.img cirros-0.3.2-x86_64-disk.raw
  3. glance image-create --name cirros --disk-format raw --container-format ovf --file cirros-0.3.2-x86_64-disk.raw --is-public True
  4. $ glance index
  5. ID                                   Name                           Disk Format          Container Format     Size         
  6. ------------------------------------ ------------------------------ -------------------- -------------------- --------------
  7. dbc2b04d-7bf7-4f78-bdc0-859a8a588122 cirros                        raw                  ovf                        41126400
  8. $ rados -p images ls
  9. rbd_id.dbc2b04d-7bf7-4f78-bdc0-859a8a588122
  10. cinder create --image-id dbc2b04d-7bf7-4f78-bdc0-859a8a588122 --display-name storage1 1
  11. cinder list
复制代码


18, Destroying a cluster
  1.      cd /bak/work/ceph/ceph-cluster/
  2.      ceph-deploy purge node1
  3.       ceph-deploy purgedata node1
  4.       rm -rf /bak/work/ceph/ceph-cluster/*
  5.       sudo umount /srv/ceph/osd0
  6.       sudo umount /srv/ceph/osd1
  7.       mkdir -p /srv/ceph/{osd0,mon0,mds0}
复制代码






已有(10)人评论

跳转到指定楼层
cochou 发表于 2014-12-17 15:51:39
回复

使用道具 举报

cochou 发表于 2014-12-17 15:52:24
回复

使用道具 举报

cochou 发表于 2014-12-17 15:59:16
回复

使用道具 举报

cochou 发表于 2014-12-17 16:14:28
回复

使用道具 举报

cochou 发表于 2014-12-17 16:45:05
回复

使用道具 举报

cochou 发表于 2014-12-17 16:57:32
回复

使用道具 举报

cochou 发表于 2014-12-17 17:20:28
回复

使用道具 举报

cochou 发表于 2014-12-17 17:22:58
回复

使用道具 举报

cochou 发表于 2014-12-17 17:31:53
回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条