zoukankan      html  css  js  c++  java
  • 1、ceph-deploy之部署ceph集群

    环境说明

    server:3台虚拟机,挂载卷/dev/vdb 10G
    系统:centos7.2
    ceph版本:luminous
    repo:
    • 公网-http://download.ceph.com,http://mirrors.aliyun.com
    • 内网-自建mirrors
     

    架构说明

    node1:admin-node,mon,mgr,osd
    node2:osd
    node3:osd

    准备工作

    1、安装centos、epel repo
    使用阿里云mirros,https://opsx.alibaba.com/mirror
    1. mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    2. curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    3. mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
    4. mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
    5. curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    2、安装ceph repo
    1. yum install centos-release-ceph-luminous -y
    3、安装ceph-deploy
    1. yum update -y
    2. yum installl ceph-deploy -y
    4、安装、配置ntp
    1. yum install ntp ntpdate ntp-doc -y
    5、安装ssh(系统自带请忽略或升级)
    确认所有节点的ssh server 运行
    1. yum install openssh-server -y
    6、用户设置
    我们使用root用户,虽然官方不推荐这样
    配置管理节点到其他server免密登录
    1. #生成秘钥对
    2. ssh-keygen
    3. #将管理节点公钥注入到其他server
    4. ssh-copy-id SERVER-
    7、确保networking 启动
    8、配置hosts
    将ip hostname 写入/etc/hosts
    9、关闭iptables
    10、关闭selinux
    11、安装yum-plugin-priorities
    1. yum install yum-plugin-priorities -y
     

    部署集群

    1. #在管理节点使用ceph-deploy部署ceph cluster
    2. #创建部署目录
    3. mkdir ~/my-cluster
    4. cd ~/my-cluster
    5. #从头开始(非第一次部署ceph,清理环境)
    6. ceph-deploy purge {ceph-node}[{ceph-node}]
    7. ceph-deploy purgedata {ceph-node}[{ceph-node}]
    8. ceph-deploy forgetkeys
    9. rm ceph.*
    10. ##创建集群
    11. #创建monitor节点
    12. #例如:ceph-deploy new {initial-monitor-node(s)}
    13. ceph-deploy new node1
    14. #安装ceph包到各个节点
    15. ceph-deploy install node1 node2 node3
    16. #初始化monitor节点,获取keys
    17. ceph-deploy mon create-initial
    18. #上述命令执行成功后,你会在当前目录下得到以下keyring文件
    19. ceph.client.admin.keyring
    20. ceph.bootstrap-mgr.keyring
    21. ceph.bootstrap-osd.keyring
    22. ceph.bootstrap-mds.keyring
    23. ceph.bootstrap-rgw.keyring
    24. ceph.bootstrap-rbd.keyring
    25. #将keyring文件分发到各个节点
    26. ceph-deploy admin node1 node2 node3
    27. #部署manager(l版本之上才需要)
    28. ceph-deploy mgr create node1
    29. #部署osd节点(这里使用虚拟机,挂载了/dev/vdb卷)
    30. ceph-deploy osd create node1:/dev/vdb node2:/dev/vdb node3:/dev/vdb
    31. #检查集群,在管理节点执行
    32. ceph health
    33. ceph -s

    扩展集群

    node1 扩展了metadata,(rgw)
    node2 扩展了metadata,monitor
    node3 扩展了metadata,monitor
    1. #添加metadate server
    2. ceph-deploy mds create node1
    3. #添加monitors
    4. ceph-deploy mon add node2 node3
    5. #添加新的monitor节点之后,ceph会同步monitor,选举代表quorum
    6. #查看quorum状态
    7. ceph quorum_status --format json-pretty
    8. #添加managers
    9. #manager使用active/standby模式,多节点部署,可以在master down时,无缝顶替
    10. ceph-deploy mgr create node2 node3
    11. #添加rgw实例
    12. #为了使用ceph object gateway,需要部署rgw实
    13. ceph-deploy rgw create node1
    14. #rgw默认监听端口是7480,可以通过编辑ceph.conf修改端口
    15. [client]
    16. rgw frontends = civetweb port=80

    存储、检索对象数据

    为了存储对象数据,ceph client需要具备:
    1.设置一个对象名
    2.指定一个pool
    ceph client 检索最近的集群map和CRUSH算法去计算怎样映射对象到PG,然后计算如何动态映射PG到OSD,
    只需要对象name和pool name即可找到对象的位置。
    1. ceph osd map {poolname}{object-name}
    练习:定位对象
    1. #创建一个对象,测试文件
    2. echo {Test-data}> testfiles.txt
    3. ceph osd pool create mytest 8
    4. #使用rados put 命令指定对象名,含有对象数据的测试文件,pool name
    5. #rados put {object-name} {file-path} --pool=mytest
    6. rados put test-object-1 testfile.txt --pool=mytest
    7. #验证ceph集群已经存储了此object
    8. rados -p mytest ls
    9. #找到对象位置
    10. #ceph osd map {pool-name} {object-name}
    11. ceph osd map mytest test-oobject-1
    12. #ceph会输出对象位置
    13. osdmap e537 pool 'mytest'(1) object 'test-object-1'-> pg 1.d1743484(1.4)-> up [1,0] acting [1,0]
    14. #删除测试对象object
    15. rados rm test-object-1--pool-mytest
    16. #删除mytest pool
    17. ceph osd pool rm mytest
    随着集群的发展,对象位置可能会动态变化。
    Ceph的动态重新平衡的一个好处是,Ceph可以让您不必手动执行数据迁移或平衡。
     
    tip:如果虚拟机没有硬盘,可使用裸设备模拟
    1. #安装lvm
    2. yum install lvm2 -y
    3. #创建虚拟磁盘
    4. mkdir /ceph && dd if=/dev/zero of=/ceph/ceph-volumes.img bs=1M count=10240 oflag=direct
    5. sgdisk -g --clear /ceph/ceph-volumes.img
    6. vgcreate ceph-volumes $(losetup --show -f /ceph/ceph-volumes.img)
    7. lvcreate -L 9G -n ceph1 ceph-volumes
    8. mkfs.xfs -f /dev/ceph-volumes/ceph1
    9.  
    10. #挂载
    11. mkdir -p /var/local/osd1
    12. chown ceph:ceph /var/local/osd1 #修改属主属组,不然在添加osd时候会报权限错误
    13. mount /dev/ceph-volumes/ceph1 /var/local/osd1
     
  • 相关阅读:
    无缘无故Spring MVC报错空指针异常
    无缘无故Spring MVC报错空指针异常
    无缘无故Spring MVC报错空指针异常
    SpringMVC整合Shiro
    SpringMVC整合Shiro
    SpringMVC整合Shiro
    (数据挖掘)大数据Flume+kafka+zookeeper+Strom/Spark/Fink......
    (数据分析)大数据Flume+kafka+zookeeper+Strom/Spark/Fink......
    java中的堆、栈和方法区
    mvn clean -U -e -B -X的作用+如何在eclipse中使用mvn clean -U -e -B -X?
  • 原文地址:https://www.cnblogs.com/nineep/p/8989795.html
Copyright © 2011-2022 走看看