我们把pve-1节点上的/data/ceph/deploy目录作为ceph-deploy部署目录,其部署过程中生成的配置文件,key密钥,日志等都位于此目录下,因此下面部署应当始终在此目录下进行
apt install ceph-deploy -y mkdir -p /data/ceph/deploy
ceph-deploy工具默认使用root用户SSH到各Ceph节点执行命令。为了方便,已经配置ceph-deploy免密码登陆各个节点。如果ceph-deploy以某个普通用户登陆,那么这个用户必须有无密码使用sudo的权限。
安装ceph集群
ceph软件包安装
首先安装ceph软件包到三个节点上。上面我们已经配置好ceph源,因此这里使用--no-adjust-repos参数忽略设置ceph源
# ceph-deploy install --no-adjust-repos pve-1 pve-2 pve-3
创建ceph集群
# ceph-deploy new --cluster-network 192.168.1.0/24 --public-network 192.168.170.0/24 pve-1 pve-2 pve-3 #上步会创建一个ceph.conf配置文件和一个监视器密钥环到各个节点的/etc/ceph/目录,ceph.conf中会有`fsid`,`mon_initial_members`,`mon_host`三个参数 #默认ceph使用集群名ceph
Ceph Monitors之间默认使用6789端口通信, OSD之间默认用6800:7300 范围内的端口通信,多个集群应当保证端口不冲突
配置文件
修改ceph-deploy目录/data/ceph/deploy下的ceph.conf
#/data/ceph/deploy/ceph.conf添加如下参数 osd_journal_size = 5120 osd_pool_default_size = 3 osd_pool_default_min_size=1
journal默认5G建议1TB数据5G,4T盘设置20G,这个影响性能的
添加mons
我们这里创建三个Monitor
cd /data/ceph/deploy ceph-deploy mon create pve-1 pve-2 pve-3 #上面命令效果如下 #1.write cluster configuration to /etc/ceph/{cluster}.conf #2.生成/var/lib/ceph/mon/ceph-pve-1/keyring #3.systemctl enable ceph-mon@pve-1 #4.systemctl start ceph-mon@pve-1
在一主机上新增监视器时,如果它不是由ceph-deploy new命令所定义的,那就必须把public network加入 ceph.conf配置文件
key管理
为节点准备认证key
ceph-deploy gatherkeys pve-1 pve-2 pve-3
#若有需要,可以删除管理主机上、本地目录中的密钥。可用下列命令:#ceph-deploy forgetkeys
允许3台主机以管理员权限执行 Ceph 命令
ceph-deploy admin pve-1 pve-2 pve-3
创建mgr
cd /data/ceph/deploy ceph-deploy mgr create pve-1 ceph-deploy mgr create pve-2 ceph-deploy mgr create pve-3
注意,原来版本mgr主要是为了ceph的文件系统服务使用的,但是现在的luminous版本发现即使不使用ceph文件系统服务,也需要安装这个服务,否则ceph -s 或者ceph -w 的data统计部分显示是0,具体变化后面再参考一下官方文档。
osd创建
创建集群,安装ceph包,收集密钥之后,就可以创建osd了
ceph-deploy osd create pve-1 --data /dev/sdc ceph-deploy osd create pve-1 --data /dev/sdd ceph-deploy osd create pve-2 --data /dev/sdc ceph-deploy osd create pve-2 --data /dev/sdd ceph-deploy osd create pve-3 --data /dev/sdc ceph-deploy osd create pve-3 --data /dev/sdd
--journal 可以专门指定日志盘,这里不单独使用日志盘。
这样创建出来的vg和lv名称是随机的。
如果中间需要重新删除osd,步骤:
1.停osd服务: systemctl stop ceph-osd\*.service ceph-osd.target 2.将osd提出集群: ceph osd out {osd-num} 3.删除 CRUSH Map 中的对应 OSD 条目: ceph osd crush remove {name} ,其中name可以通过命令ceph osd crush dump查看 ,比如osd.0 4.删除 OSD 认证密钥: ceph auth del osd.{osd-num} 5.删除 OSD : ceph osd rm {osd-num} 6.如果需要擦出磁盘数据使用命令: ceph-deploy disk zap HOST DEVICE ,比如:ceph-deploy disk zap pve-1 /dev/sdc
需要注意,以上的ceph-deploy命令始终在同一个目录/data/ceph/deploy 下执行,否则会出现配置文件不一致的问题。
创建ceph存储池pool:
ceph osd pool create ceph-external 64
最后查看集群状态:
root@pve-2:~# ceph -w cluster: id: 0320d45c-fe5b-4e3d-b515-e223ed5b5686 health: HEALTH_WARN application not enabled on 1 pool(s) services: mon: 3 daemons, quorum pve-1,pve-2,pve-3 mgr: pve-1(active) osd: 6 osds: 6 up, 6 in data: pools: 1 pools, 64 pgs objects: 5 objects, 133B usage: 6.03GiB used, 174GiB / 180GiB avail pgs: 64 active+clean 2018-09-25 15:17:26.938346 mon.pve-1 [WRN] Health check failed: application not enabled on 1 pool(s) (POOL_APP_NOT_ENABLED) 2018-09-25 16:00:00.000115 mon.pve-1 [WRN] overall HEALTH_WARN application not enabled on 1 pool(s) 发现有“application not enabled on 1 pool(s) (POOL_APP_NOT_ENABLED)”错误,可以通过下面的命令消除掉: ceph osd pool application enable ceph-external rbd 执行完之后ceph -w实时显示: 2018-09-25 16:25:12.540558 mon.pve-1 [INF] Cluster is now healthy
三. Proxmox创建集群
ssh登陆pve-1使用命令pvecm create创建集群cluster1:
pvecm create cluster1
ssh登陆pve-2和pve-3使用命令pvecm add 加入集群cluster1:
pvecm add 192.168.1.51
执行完成之后可以在3个节点上使用pvecm status 查看集群状态: