一、安装环境本文主要根据官方文档使用ubuntu14.04部署ceph集群,并简单介绍其基本操作。整个集群包括一个admin节点(admin节点,主机名为node0)和3个storage节点(主机名为node1、node2、node3),所有节点都安装了ubuntu14.04操作系统,除admin节点外,其他三个nodes除了根磁盘,配置一个额外的磁盘作为一个单独的osd:lsblk输出:NAMEMAJ:MINRMSIZEROTYPEMOUNTPOINTsr011:01422K0romvda253:0020G0disk├─vda1253:1019G0part/├─vda2253:201K0part└─vda5253:5010S2G0part由于使用[usda5253:5010S2G0part]的vdb25是公有云申请的云主机,所以磁盘是虚拟的,根盘是vda,第二盘是vdb。所有主机都在网络192.168.0.0/24,ip为:192.168.0.2node0192.168.0.5node1192.168.0.7node2192.168.0.6node3我们先设置一个mon节点和两个osd节点,然后我们将添加nodes之后,其架构如图:node1为mon节点,其余node2、node3为osd节点。注意:后续操作使用root账号。如果不使用root账号登录,则需要新建一个账号。该账号必须有免密码sudo权限,否则后续使用ceph-deploy会失败!二、安装前的工作1、设置admin节点root免密码登录其他节点首先使用ssh-keygen生成密钥,位于~/.ssh/id_rsa.pub,复制id_rsa.pub文件到所有节点,如果不设置root密码,可以先复制到管理员账号(安装操作系统时使用的用户有sudo权限)家目录下,然后用管理员账号操作:catid_rsa.pub|sudotee-a/root/.ssh/authorized_keys在node0上单独测试,是否可以免密码登录其他节点:sshnode0uptimesshnode1uptimesshnode2uptimesshnode3uptime结果应该是不需要输入密码的。2.安装parallelssh命令在admin节点安装pssh包:apt-getinstall-ypssh设置如下别名:aliaspssh='parallel-ssh'aliaspscp='parallel-scp'创建主机文件listhosts.txt:node0node1node2node3测试pssh是否正常运行:pssh-hhosts.txtuptime如果所有结果都是SUCCESS,说明正常运行。3、使用国内镜像源为了提高访问速度,建议换成国内镜像源。我们使用阿里云镜像源:root@node0:~#cat/etc/apt/sources.listdebhttp://mirrors.aliyun.com/ubuntu/trustymainrestricteduniversemultiversesedebhttp://mirrors.aliyun.com/ubuntu/trusty-securitymainrestricteduniversemultiversesedebhttp://mirrors.aliyun.com/ubuntu/trusty-updatesmainrestricteduniversemultiversedebhttp://mirrors.aliyun.com/ubuntu/trusty-proposedverrremstricted.aliyun.com/ubuntu/trusty-backportsmainrestricteduniversemultiversesedeb-srchttp://mirrors.aliyun.com/ubuntu/trustymainrestricteduniversemultiversesedeb-srchttp://mirrors.aliyun.com/ubuntu/trusty-securitymainrestricteduniversemultiversesedeb-srchttp://mirrors.aliyun.com/ubuntu/trusty-updatesmainrestricteduniversemultiversedeb-srchttp://mirrors.aliyun.com/ubuntu/trusty-proposedmainrestricteduniversemultiversedeb-srchttp://mirrors.aliyun.com/ubuntu/trusty-backportsmainrestricteduniversemultiverse复制这个文件到所有节点:pscp-h~/hosts.txt/etc/apt/sources.list/etc/apt/Updatesource:pssh-h~/hosts.txt'apt-getupdate-y'4.安装ceph-deploy下面的操作只需要在admin节点进行即可。首先需要添加ceph源:wget-q-O-'https://download.ceph.com/keys/release.asc'|sudoapt-keyadd-echodebhttp://download.ceph.com/debian-{ceph-stable-release}/$(lsb_release-sc)main|sudotee/etc/apt/sources.list.d/ceph.list#注意:ceph-stable-release是选择安装的版本,我选择jewel!#注意:ceph-stable-release是选择安装的版本,我部署的时候选择的是jewel!安装ceph-deploy:sudoapt-getupdate&&sudoapt-getinstallceph-deploy生产环境还需要安装ntp服务,保证集群时钟一致。这次只是为了测试,所以省略了这一步。另外,由于ubuntu默认的防火墙是Off,没有安装SELinux,所以不需要任何操作。用centos安装时,需要打开必要的端口。3.开始安装ceph集群。我们使用ceph-deploy进行部署,后续所有操作都在admin节点进行。首先,您需要创建一个工作环境,它将保存所有配置文件:mkdirmy-clustercdmy-cluster接下来,执行以下步骤:1.创建一个集群ceph-deploynewnode1,其中node1是一个mon节点。执行这条命令会生成ceph配置文件、监控关键文件和日志文件。2.修改默认冗余副本数。由于我们目前只有两个osd节点,而默认的冗余副本数是3,所以我们需要设置为2。如果osd节点数大于2,则省略这一步。修改ceph.conf文件,在[global]下添加如下内容:osdpooldefaultsize=23。配置网卡和网络。如果主机有多个网卡,则需要设置使用的网卡和网络地址。由于我们的主机只有一张网卡,所以这一步就省略了。4.开始安装cephceph-deployinstallnode0node1node2node35。初始化mon节点并收集关键信息ceph-deploymoncreate-initial被执行,目录应该有如下文件:{cluster-name}.client.admin.keyring{cluster-name}.bootstrap-osd.keyring{cluster-name}.bootstrap-mds.keyring{cluster-name}.bootstrap-rgw.keyring完成以上步骤,安装完成,但还没有配置osd节点。6、配置osd节点首先格式化磁盘,注意我们使用的是/dev/vdb:ceph-deploydiskzapnode2:vdbceph-deploydiskzapnode3:vdb以上步骤会清除磁盘上的所有数据。接下来,创建osd。请注意,由于我们只是进行测试,因此我们不会使用单独的磁盘作为日志。在实际生产环境中,我们需要将SSD分区配置为journal来最大化IO吞吐量。ceph-deployosdcreatenode2:vdbceph-deployosdcreatenode3:vdb7。配置管理节点。管理节点也是我们的客户端节点。需要复制其他节点的配置文件和key,这样就可以直接管理我们的ceph,不需要指定mon地址和用户信息。集群,执行如下命令即可:ceph-deployadminnode0node1node2node3sudochmod+r/etc/ceph/ceph.client.admin.keyring#确保你有读取密钥的权限8.运行如下命令查看测试结果:如果cephhealth结果返回active+clean状态,表示部署成功!4.将node1作为osd节点添加到扩展节点:ceph-deploydiskzapnode1:vdbceph-deployosdcreatenode1:vdbceph-deployosdcreatenode1:vdb如果需要cephFS支持,需要提供文件系统支持,需要部署元数据服务器:ceph-ifdeploymdscreatenode1需要CephObjectGateway支持,即对象存储节点,需要部署一个RGW实例。ceph-deployrgwcreatenode1ceph集群至少需要一个mon节点。为了实现高可用,通常需要设置多个(一般设置为3个)mon节点。我们使用node2和node3作为mon节点:ceph-deploymonaddnode2node3当有多个mon节点时,ceph会使用quorum算法进行同步,查看状态:cephquorum_status--formatjson-pretty5.块存储rbd使用我们使用默认的rbdpool,首先新建一个块设备(cinder叫volume,ceph叫image):rbdcreatefoo--size4096查看刚刚创建的实例:rbdls#foo将实例映射到虚拟设备:rbdmapfoo#/dev/rbd1创建文件系统挂载到/mnt:mkfs.ext4/dev/rbd1mount/dev/rbd1/mntdf-hFilesystem1K-blocksUsedAvailableUse%Mountedonudev10140721210140601%/devtmpfs2049888082041801%/run/dev/vda11947820419360881652963611%/none4040%/sys/fs/cgroupnone5120051200%/run/locknone1024932010249320%/run/shmnone10240001024000%/run/user/dev/rbd13997376818437630961%/mnt把实例扩容到8GB:rbdresizefoo--size8192resize2fs/dev/rbd1df-hFilesystemSizeUsedAvailUse%Mountedonudev991M12K991M1%/devtmpfs201M808K200M1%/run/dev/vda119G1.9G16G11%/none4.0K04.0K0%/sys/fs/cgroupnone5.0M05.0M0%/run/locknone1001M01001M0%/run/shmnone100M0100M0%/run/user/dev/rbd17.8G9.0M7.4G1%/mnt创建实例快照:rbdsnapcreatetest@test-snap六、分布式文件系统使用创建一个文件系统:cephosdpoolcreatecephfs_data128cephosdpoolcreatecephfs_metadata128cephfsnewtest_fscephfs_metadatacephfs_datacephfsls#name:test_fs,metadatapool:cephfs_metadata,datapools:[cephfs_data]Createasecretfile:catceph.client.admin.keyringOutputresult:[client.admin]key=AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w==Copythekeyvaluetothesecretfile:echo"AQCj2YVRiAe6CxAA7/IETxy7==IETtxy7">admin.secretinstallmountcephplugin:apt-getinstallCeph-fs-common挂载到本地文件系统/mnt:sudomount-tceph192.168.0.5:6789://mnt-oname=admin,secretfile=admin.secret其中192.168.0.5是node1的ip,也就是monnodeip在该地址执行df命令查看是否挂载成功。如果成功,就可以像本地文件系统一样操作了。7.省略了对象存储。..【本文为专栏作家“傅光平”原创文章,如需转载请get联系】点击查看更多该作者好文
