1. 程式人生 > >【Ceph】手動搭建ceph集群

【Ceph】手動搭建ceph集群

pro dmi sid ini 執行 磁盤 map systemctl rpm包

手動部署Ceph集群

  • 3臺ceph機器
hostname IP mon_id 磁盤快 journal
Ceph1 192.168.1.1 0 /dev/sdb2 /dev/sdb1
Ceph2 192.168.1.2 1 /dev/sdb2 /dev/sdb1
Ceph3 192.168.1.3 2 /dev/sdb2 /dev/sdb1
  • 下載部署所需要的ceph集群的rpm包
    ceph-mon ceph-common fcgi ceph-base ceph-selinux ceph-mgr ceph-dash ceph-radosgw ceph-osd
    根據系統內核版本號下載對應的enhanceio包
  • 使用yum來安裝這些包
  • 初始化moniter

    1. 根據uuidgen獲取uuid:
      ceph_uuid=$(uuidgen)
    2. 使用monmaptool創建一個空的ceph文件系統

        monmaptool --create  -add mon_id1 IP1   --add mon_id2 IP2 ...  --fsdi $ceph_uuid --clobber /tmp/montap
          其中:
              --clobber表示允許 monmaptool 覆蓋 mapfilename
              IP1:表示第一臺moniter的IP
              IP2:表示第二臺moniter的IP
              mon_id1:表示第一臺ceph的moniter的ID,隨意字符
    3. 更改ceph的配置文件

              改為:/etc/ceph/ceph.conf
                  fsid=$ceph_uuid
                  mon_host= IP1,IP2....
                  public_addr= IP1
    4. 創建ceph的mon目錄

                  mkdir  /var/lib/ceph/mon
    5. 創建
      ceph-mon -i mon_id --mkfs --monmap /tmp/montap
      註:每臺moniter對應的mon_id不同
      在Ceph1上執行:
      ceph-mon -i 0 --mkfs --monmap /tmp/montap
      在Ceph2上執行:
      ceph-mon -i 1 --mkfs --monmap /tmp/montap
    6. 改變/var/log/ceph和/var/lib/ceph的用戶組和用戶

                  chow -R ceph.ceph /var/lib/ceph /var/log/ceph
    7. 開啟moniter

                  systemctl reset-failed  ceph-mon@mon_id
                  systemctl   start ceph-mon@mon_id
    8. 開啟dash並加入自啟動
      /etc/init/ceph-dash start
      echo ‘/etc/init.d/ceph-dash start & ‘ > /etc/rc.d/rc.local
  • 初始化mgr
    systemctl start ceph-mgr@mon_id
  • 初始化s3 :$name=任意值 在其中一臺mon上執行

    1. 新建keyring
      ceph-authtool -C /etc/ceph/ceph.client.radosgw.keyring
      chmod +r /etc/ceph/ceph.client.radosgw.keyring
    2. 生成radosgw服務對應的用戶和key,其中name為radows網關的實例名稱,常為gateway
      ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.radosgw.$name -g
    3. 添加用戶訪問權限
      ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.radosgw.$name --cap osd ‘allow rwx‘ --cap mon ‘allow rwx‘
    4. 將秘鑰添加到Ceph集群中

              ceph -k /etc/ceph/ceph.client.radosgw.keyring  auth add  client.radosgw.$name -i /etc/ceph/ceph.client.radosgw.keyring
    5. 配置ceph配置文件
      [client.radosgw.lirui]
      debug_rgw =100
      rgw_data=/var/lib/ceph/radosgw/radosgw-$name
      rgw_socket_path=/var/run/ceph/ceph.radosgw.$name
      admin_socket=/var/run/ceph/ceph.radosgw.$name
      rgw_enable_usage_log = true
      rgw_frontends = civetweb port=12345

          註:這裏采用S3的civetweb的前端方式,除此之外還有Apache和Nginx
    6. 創建S3用戶

          radosgw-admin user create --uid=‘uid‘ --display-name=‘name‘ [email protected]
    7. 啟動radosgw

          radosgw -c /etc/ceph/ceph.conf  -n client.radosgw.$name
  • 初始化osd 每塊盤都得執行一下命令

    1. 創建OSD
      osd_id=$(ceph osd create)
    2. 創建OSD目錄

          mkdir /var/lib/ceph/osd/$osd_id
    3. 獲取UUID並寫入fsid文件中

          osd_uuid=$(uuidgen)
          echo ‘$osd_uuid‘  > /var/lib/ceph/osd/$osd_id/fsid
    4. 格式化數據盤

          ceph-mkfs -i $osd_id  /dev/sdb2  
          如果出現格式化失敗使用一下命令:
                  mkfs.xfs  /dev/sdb2
                  xfs_admin -U $osd_uuid /dev/sdb2
    5. 創建mkfs_done文件
      touch /var/lib/ceph/$osd_id/mkfs_done
    6. 將數據盤掛在到/var/lib/ceph/osd/$osd_id目錄下

              mount -o noatime UUID=$osd_uuid /var/lib/ceph/osd/$osd_id
    7. 講osd_uuid寫進fsid文件,將字符串filestore寫進type文件中

              echo $osd_id > /var/lib/ceph/osd/$osd_id/fsid
              echo "filestore"  > /var/lib/ceph/osd/$osd_id/type
    8. 創建journal鏈接

              ln -sf /dev/sdb1 /var/lib/ceph/osd/$osd_id/journal
    9. 初始化數據目錄

              ceph-osd -i $osd_id --mkfs
    10. 改變權限

              chown -HR ceph:ceph /var/lib/ceph/osd
              chown -R ceph:ceph /var/log/ceph 
    11. 創建鏈接

              ln -sf /dev/disk/ceph/by-uuid/$osd_uuid      /var/lib/ceph/osd/$osd_id/journal
    12. 取消掛載

              umount /var/lib/ceph/osd/$osd_id
    13. 修改ceph-osd@serivce文件

              刪除/usr/lib/systemd/system/[email protected]文件中ProtectHome,ProtectSystem,PrivateTmp行
    14. 開啟OSD
      systemctl reset-failed ceph-osd@$osd_id
      systemctl start ceph-osd@$osd_id
      systemctl enable ceph-osd@$osd_id

【Ceph】手動搭建ceph集群