网络环境:

        双网卡,一个是拱外部存储使用,一个内网卡拱内部集群管理使用。在宿主机的网卡上配置如下虚拟网卡。

network

vim /etc/sysconfig/network-scripts/ifcfg-virbr2

TYPE=Bridge
BOOTPROTO=static
DEVICE=virbr2
STP=on
ONBOOT=yes
IPADDR=192.168.2.1
NETMASK=255.255.255.0

多磁盘环境:

        在每个虚拟机上添加多个磁盘,这里示例每个虚拟机使用两个磁盘作为ceph存储使用,这样每个虚拟机一共三个磁盘。

关闭防火墙:

systemctl stop firewalld.service
systemctl disable firewalld.service

关闭SeLinux:

setenforce 0
sed -i 's@^\(SELINUX=\).*@\1disabled@' /etc/sysconfig/selinux

时间同步:

systemctl start chronyd.service 
systemctl enable chronyd.service
timedatectl set-timezone Asia/Shanghai
chronyc -a makestep

hosts:这里使用ceph01,ceph02,ceph03节点作为安装集群使用。

cat > /etc/hosts <<EOF
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.30 ceph01
192.168.1.31 ceph02
192.168.1.32 ceph03
EOF

在每个节点上安装ceph仓库:

仓库位置:使用minic版本

https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/

安装ceph yum源:

rpm -ivh https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/ceph-release-1-1.el7.noarch.rpm

但是里面的yum源是官网的,不是阿里云的要改一下:

[Ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

[Ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

安装epel yum源:

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

配置root用户的无秘钥登陆:这个主要用来复制文件用的。

ssh-keygen
ssh-copy-id root@ceph01

在每个节点上创建普通用户并设定密码:

useradd cephadm && echo qiyang | passwd --stdin cephadm

配置cephadm用户无秘钥使用sudo的权限:

cat > /etc/sudoers.d/cephadm <<EOF
cephadm		ALL=(root) NOPASSWD: ALL
EOF

测试是否可用:

su - cephadm
sudo -l
.....
User cephadm may run the following commands on ceph01:
    (root) NOPASSWD: ALL # 出现这个即可

复制sudo的权限文件 /etc/sudoers.d/cephadm 到各个节点:

scp /etc/sudoers.d/cephadm root@ceph01:/etc/sudoers.d/cephadm
scp /etc/sudoers.d/cephadm root@ceph02:/etc/sudoers.d/cephadm
scp /etc/sudoers.d/cephadm root@ceph03:/etc/sudoers.d/cephadm

配置cephadm用户的免秘钥登陆:这个用户是用来安装ceph用的。实现免秘钥的方式有两种,除了上面的方法还可以用如下方法。

]# su - cephadm
]$ ssh-keygen -t rsa -P ''
]$ ssh-copy-id -i .ssh/id_rsa.pub cephadm@localhost
]$ scp -rp .ssh/ cephadm@ceph01:/home/cephadm/

检查免秘钥是否可用:

]$ ssh ceph02 'date'


安装Ceph


安装ceph-deploy工具:这个工具只在管理节点上安装即可

]$ sudo yum install ceph-deploy python-setuptools python2-subprocess32 -y

在管理节点创建目录:这个目录主要用来存放安装时的临时文件

]$ sudo mkdir /home/ceph-cluster && cd /home/ceph-cluster

使用cephadm用户来安装ceph:

su - cephadm

初始化一个mon节点:

]$ sudo ceph-deploy new --cluster-network 192.168.2.0/24 --public-network 192.168.1.0/24 ceph01

安装ceph集群:

]$ sudo yum -y install ceph ceph-radosgw

安装ceph:--no-adjust-repos 不调整yum源

]$ sudo ceph-deploy install --no-adjust-repos ceph01 ceph02 ceph03


安装监视器MON


安装mon:

]$ sudo ceph-deploy mon create-initial

推送配置文件和秘钥:如果只推送配置文件使用ceph-deploy config命令

]$ sudo ceph-deploy admin ceph01 ceph02 ceph03

给每个节点的keyring文件设置cephadm用户可读:如果不需要这些节点管理的话可以不设置

]$ ssh ceph01 'sudo setfacl -m u:cephadm:rw /etc/ceph/ceph.client.admin.keyring'
]$ ssh ceph02 'sudo setfacl -m u:cephadm:rw /etc/ceph/ceph.client.admin.keyring'
]$ ssh ceph03 'sudo setfacl -m u:cephadm:rw /etc/ceph/ceph.client.admin.keyring'

扩展mon节点:生产环境一般为3个,必须是奇数点

]$ sudo ceph-deploy mon add ceph02

查看监视器的状态:

]$ sudo ceph quorum_status --format json-pretty


安装管理节点MGR


创建一个mgr节点:

]$ sudo ceph-deploy mgr create ceph03

扩展mgr节点:mgr属于无状态应用,无需特定节点数

]$ sudo ceph-deploy mgr create ceph02


在管理节点只需安装ceph-common即可:

]$ sudo yum install ceph-common -y

同样需要keyring秘钥:

]$ sudo ceph-deploy admin ceph01

设置权限:

]$ sudo setfacl -m u:cephadm:rw /etc/ceph/ceph.client.admin.keyring

在管理节点上执行如下命令:此时已近可以看到集群信息了

]$ ceph -s
  cluster:
    id:     4866c43f-bb48-473c-8a41-373e57069690
    health: HEALTH_WARN
            OSD count 0 < osd_pool_default_size 3
 
  services:
    mon: 1 daemons, quorum ceph02
    mgr: ceph03(active)
    osd: 0 osds: 0 up, 0 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:


创建OSD


列出节点上的磁盘:

]$ sudo ceph-deploy disk list ceph01
......
[ceph02][INFO  ] Disk /dev/vda: 17.2 GB, 17179869184 bytes, 33554432 sectors # 系统盘
[ceph02][INFO  ] Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 sectors # 为ceph准备的盘
[ceph02][INFO  ] Disk /dev/vdc: 21.5 GB, 21474836480 bytes, 41943040 sectors # 为ceph准备的盘
[ceph02][INFO  ] Disk /dev/mapper/centos-root: 14.5 GB, 14503903232 bytes, 28327936 sectors
[ceph02][INFO  ] Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors

擦除某节点上某块磁盘的数据:

]$ sudo ceph-deploy disk zap ceph01 /dev/vdb

创建osd:这里使用的是bluestore,详细命令使用ceph-deploy osd --help

]$ sudo ceph-deploy osd create --data /dev/vdb ceph01
]$ sudo ceph-deploy osd create --data /dev/vdb ceph02
]$ sudo ceph-deploy osd create --data /dev/vdb ceph03
]$ sudo ceph-deploy osd create --data /dev/vdc ceph01
]$ sudo ceph-deploy osd create --data /dev/vdc ceph02
]$ sudo ceph-deploy osd create --data /dev/vdc ceph03

查看osd个数:默认情况下至少需要三个osd

]$ ceph -s
  cluster:
    id:     4866c43f-bb48-473c-8a41-373e57069690
    health: HEALTH_OK
 
  services:
    mon: 1 daemons, quorum ceph02
    mgr: ceph03(active)
    osd: 6 osds: 6 up, 6 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   6.0 GiB used, 108 GiB / 114 GiB avail
    pgs:


简单使用


创建pool:

]$ ceph osd pool create mypool 64 64 # 两个64分别是PG和PGS

列出pool:

]$ ceph osd pool ls

上传文件:使用ceph自身的api接口上传文件 --pool = -p

]$ rados put fstab /etc/fstab --pool=mypool

列出文件:

]$ rados ls --pool=mypool

查看映射关系:

]$ ceph osd map mypool fstab
osdmap e28 pool 'mypool' (1) object 'fstab' -> pg 1.45a53d91 (1.11) -> up ([0,5,4], p0) acting ([0,5,4], p0)

删除:

]$ rados rm fstab --pool=mypool