本文主要根据官方文档使用ubuntu14.04安装ceph集群,而且简单熟悉其基本操做。整个集群包括一个admin节点(admin node,主机名为node0)和3个存储节点(主机名分别为node1,node2,node3),全部节点均安装ubuntu 14.04操做系统,除了admin节点,其他三个节点除了根磁盘,还额外配置一个磁盘做为单独的osd:node
lsblk
输出结果:算法
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 422K 0 rom vda 253:0 0 20G 0 disk ├─vda1 253:1 0 19G 0 part / ├─vda2 253:2 0 1K 0 part └─vda5 253:5 0 1022M 0 part [SWAP] vdb 253:16 0 50G 0 disk
因为咱们使用ustack的公有云申请的云主机,所以磁盘是虚拟的,根磁盘为vda,附加磁盘为vdb。
全部主机均处于192.168.0.0/24
这个网络,ip为:json
192.168.0.2 node0 192.168.0.5 node1 192.168.0.7 node2 192.168.0.6 node3
咱们先设置一个mon节点,两个osd节点,后续咱们再增长节点,其架构如图所示:bootstrap
其中node1做为mon节点,其他node2,node3做为osd节点。ubuntu
注意:后续操做均使用root帐号,若是不使用root帐号登陆,须要建立一个新的帐号,该帐号必须具备免密码sudo权限,不然后续使用ceph-deploy
时会失败!centos
首先使用ssh-keygen
生成密钥,位于~/.ssh/id_rsa.pub
,分别拷贝id_rsa.pub
文件到全部节点中,若没有设置root密码,能够先拷贝到管理员帐号(安装操做系统时使用的用户,具备sudo
权限)home目录,而后使用管理员帐号操做:bash
cat id_rsa.pub | sudo tee -a /root/.ssh/authorized_keys
在node0节点分别测试,是否能够免密码登陆其余节点:网络
ssh node0 uptime ssh node1 uptime ssh node2 uptime ssh node3 uptime
结果应该不须要输入密码。架构
在admin节点安装pssh包:ssh
apt-get install -y pssh
设置如下别名:
alias pssh='parallel-ssh' alias pscp='parallel-scp'
建立host文件列表hosts.txt
:
node0 node1 node2 node3
测试下pssh是否工做:
pssh -h hosts.txt uptime
若是所有结果都为SUCCESS
,则说明正常工做。
为了提升访问速度,建议修改成国内镜像源,咱们使用的是阿里云镜像源:
root@node0:~# cat /etc/apt/sources.list deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
拷贝该文件到全部的节点:
pscp -h ~/hosts.txt /etc/apt/sources.list /etc/apt/
更新源:
pssh -h ~/hosts.txt 'apt-get update -y'
如下操做只须要在admin节点执行,首先须要增长ceph源:
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add - echo deb http://download.ceph.com/debian-{ceph-stable-release}/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
安装ceph-deploy:
sudo apt-get update && sudo apt-get install ceph-deploy
生产环境还须要安装ntp服务,保证集群的时钟一致,此次只是为了测试,故省略这一步。另外因为ubuntu默认防火墙是关的,SELinux也没有安装,故不须要任何操做。使用centos安装时须要打开必要端口。
咱们使用ceph-deploy
部署,后续操做均在admin节点操做。
首先须要建立工做环境,该环境会保存全部的配置文件:
mkdir my-cluster cd my-cluster
接下分别执行如下步骤:
ceph-deploy new node1
其中node1是mon节点,执行该命令会生成ceph配置文件、monitor密钥文件以及日志文件。
因为咱们目前只有两个osd节点,而默认的冗余份数是3,所以咱们须要设置为2,若是osd节点大于2,则此步骤省略。
修改ceph.conf
文件,在[global]
下增长如下内容:
osd pool default size = 2
若是主机有多余一个网卡,须要设置使用的网卡和网络地址,因为咱们主机只有一张网卡,此步骤省略。
ceph-deploy install node0 node1 node2 node3
ceph-deploy mon create-initial
执行完毕,目录应该有如下文件:
{cluster-name}.client.admin.keyring {cluster-name}.bootstrap-osd.keyring {cluster-name}.bootstrap-mds.keyring {cluster-name}.bootstrap-rgw.keyring
完成以上步骤,安装完成,但尚未配置osd节点。
首先格式化磁盘,注意咱们使用的是/dev/vdb
:
ceph-deploy disk zap node2:vdb ceph-deploy disk zap node3:vdb
以上步骤会清空磁盘的全部数据。
接下来建立osd,注意因为咱们只是测试,故没有使用单独的磁盘做为journal,实际在生产环境下,须要配备SSD分区做为journal,可以最大化IO吞吐量。
ceph-deploy osd create node2:vdb ceph-deploy osd create node3:vdb
admin节点同时也做为咱们的client节点,须要拷贝其余节点的配置文件以及密钥,使得不须要指定mon地址以及用户信息就能够直接管理咱们的ceph集群,执行如下命令便可:
ceph-deploy admin node0 node1 node2 node3 sudo chmod +r /etc/ceph/ceph.client.admin.keyring # 保证具备读取的密钥的权限
运行如下命令:
ceph health
结果若返回active + clean
状态,则说明部署成功!
增长node1也做为osd节点:
ceph-deploy disk zap node1:vdb ceph-deploy osd create node1:vdb ceph-deploy osd create node1:vdb
若须要cephFS支持,即须要提供文件系统支持,须要部署metadata server:
ceph-deploy mds create node1
若须要Ceph Object Gateway支持,即对象存储节点,须要部署一个RGW实例,
ceph-deploy rgw create node1
ceph集群至少须要一个mon节点,为了实现高可用,一般须要设置多个(通常设置为3个)mon节点,咱们把node2,node3也做为mon节点:
ceph-deploy mon add node2 node3
当有多个mon节点时,ceph将使用quorum算法进行同步,查看状态:
ceph quorum_status --format json-pretty
咱们使用默认的rbd池,首先建立一个新的块设备(cinder称为volume,ceph称为image):
rbd create foo --size 4096
查看刚刚建立的实例:
rbd ls # foo
映射实例到虚拟设备中:
rbd map foo # /dev/rbd1
建立文件系统并挂载到/mnt:
mkfs.ext4 /dev/rbd1 mount /dev/rbd1 /mnt df -h Filesystem 1K-blocks Used Available Use% Mounted on udev 1014072 12 1014060 1% /dev tmpfs 204988 808 204180 1% /run /dev/vda1 19478204 1936088 16529636 11% / none 4 0 4 0% /sys/fs/cgroup none 5120 0 5120 0% /run/lock none 1024932 0 1024932 0% /run/shm none 102400 0 102400 0% /run/user /dev/rbd1 3997376 8184 3763096 1% /mnt
把实例扩容到8GB:
rbd resize foo --size 8192 resize2fs /dev/rbd1 df -h Filesystem Size Used Avail Use% Mounted on udev 991M 12K 991M 1% /dev tmpfs 201M 808K 200M 1% /run /dev/vda1 19G 1.9G 16G 11% / none 4.0K 0 4.0K 0% /sys/fs/cgroup none 5.0M 0 5.0M 0% /run/lock none 1001M 0 1001M 0% /run/shm none 100M 0 100M 0% /run/user /dev/rbd1 7.8G 9.0M 7.4G 1% /mnt
建立实例快照:
rbd snap create test@test-snap
建立一个文件系统:
ceph osd pool create cephfs_data 128 ceph osd pool create cephfs_metadata 128 ceph fs new test_fs cephfs_metadata cephfs_data ceph fs ls # name: test_fs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
建立secret文件:
cat ceph.client.admin.keyring
输出结果:
[client.admin] key = AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w==
把key值拷贝到secret文件:
echo "AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w==" >admin.secret
安装mount ceph插件:
apt-get install ceph-fs-common
挂载到本地文件系统/mnt
:
sudo mount -t ceph 192.168.0.5:6789:/ /mnt -o name=admin,secretfile=admin.secret
其中192.168.0.5
是node1 ip,也即mon节点ip地址。
运行df
命令查看是否挂载成功,成功便可像本地文件系统同样操做。
省略。。。
http://docs.ceph.com/docs/master/