ProxmoxVE(V5.2) 之 使用外部ceph存储
继上篇博文《 ProxmoxVE 之集群安装(V5.2)》 ,本来想模拟生产环境实现3节点集群,并且使用ceph分布式存储实现虚拟机级别的HA,但是在使用pveceph 工具创建ceph环境的时候出错了,发现需要商业订阅才能使用(已解决,见下面的备注)。因此这篇博文想从另一个角度,先搭建外部ceph存储集群,供pve直接使用外部ceph存储 。
2019年1月31日注:
pveceph 工具可以使用,前提是需要更改pve的软件源,方法如下:
重要!!!更改软件源,默认是订阅版,如果不做修改,在使用pveceph init进行ceph初始化安装的时候会将整个环境破坏,切记!更改为非订阅版,如下:
同样的,先准备3个节点的环境,先装上proxmox5.2-1 ,然后在这个3个节点上使用ceph-deploy安装部署ceph集群。
一.环境准备:
创建3个虚拟机,3vcpu/12G内存/4块硬盘/2块网卡 ,其中硬盘方面1块硬盘为系统盘31G,2块30G的ceph盘,1块32G的lvm盘,网卡方面1块网卡同时给集群和虚拟机使用(192.168.1.0/24网段),1块网卡作为ceph存储网络(192.168.170.0/24网段)使用。创建虚拟机如下:
剩下2台测试虚拟机,直接克隆,分别为pve-2,pve-3 .
接下来分别启动pve-1,pve-2,pve-3 进行proxmox VE的安装,如下图:
安装步骤都很简单,傻瓜式的,其中选择硬盘会默认第一块硬盘安装系统,然后是设置root密码等等,网络配置步骤:
这里hostname要求写成FQDN格式,我试了直接使用pve-2,不行,最后是使用pve-2.ywb.com 。
3台虚拟机同时安装,非常快,不到10分钟,居然就安装完了!感觉比装vmware的ESXI也更快啊。
点右下角的Reboot重启。
第一阶段搞定,后面就可以建集群,配网络,建存储之类的后续操作了。
通过输入网址:
分别可以管理这3台pve。
debian系统更新:
接下来下来我们更新一下proxomx的软件,proxmox的底层毕竟是个debian系统,刚安装还是要更新一下的,在shell中输入aptupdate && apt dist-upgrade,回车,发现报错无法更新,查看官方文档发现需要更改一些设置,在shell输入
二. ceph集群安装
ceph集群我准备使用192.168.1.0/24这个网段作为ceph的集群管理网络,192.168.170.0/24 作为ceph数据网络。首先找到ceph官网的指导网页:
http://docs.ceph.com/docs/master/start/quick-start-preflight/#ceph-deploy-setup
根据上面这个操作手册,看ProxmoxVE5.2-1使用的是debian 9 操作系统。具体步骤如下:
环境预配置
配置/etc/hosts:
配置免登陆访问
生成ssh-key
设置防火墙:
查看了iptables -L 以及 iptables -L -t nat ,发现防火墙没有任何设置,如果在后续pve启用防火墙的过程中,需要特别注意ceph这一块相应的端口需要开放,主要有这些端口:
OSD使用的端口:6800-7300
monitor使用的端口:6789
设置时钟同步:
apt install ntp
配置ceph软件源 (使用163镜像)
安装ceph-deploy工具
ceph-deploy是ceph官方提供的部署工具,它通过ssh远程登录其它各个节点上执行命令完成部署过程,我们可以随意选择一台服务器安装此工具,为方便,这里我们选择pve-1节点安装ceph-deploy
我们把pve-1节点上的/data/ceph/deploy目录作为ceph-deploy部署目录,其部署过程中生成的配置文件,key密钥,日志等都位于此目录下,因此下面部署应当始终在此目录下进行
ceph-deploy工具默认使用root用户SSH到各Ceph节点执行命令。为了方便,已经配置ceph-deploy免密码登陆各个节点。如果ceph-deploy以某个普通用户登陆,那么这个用户必须有无密码使用sudo的权限。
安装ceph集群
ceph软件包安装
首先安装ceph软件包到三个节点上。上面我们已经配置好ceph源,因此这里使用--no-adjust-repos参数忽略设置ceph源
创建ceph集群
Ceph Monitors之间默认使用6789端口通信, OSD之间默认用6800:7300 范围内的端口通信,多个集群应当保证端口不冲突
配置文件
修改ceph-deploy目录/data/ceph/deploy下的ceph.conf
journal默认5G建议1TB数据5G,4T盘设置20G,这个影响性能的
添加mons
我们这里创建三个Monitor
在一主机上新增监视器时,如果它不是由ceph-deploy new命令所定义的,那就必须把public network加入 ceph.conf配置文件
key管理
为节点准备认证key
#若有需要,可以删除管理主机上、本地目录中的密钥。可用下列命令:#ceph-deploy forgetkeys
允许3台主机以管理员权限执行 Ceph 命令
创建mgr
注意,原来版本mgr主要是为了ceph的文件系统服务使用的,但是现在的luminous版本发现即使不使用ceph文件系统服务,也需要安装这个服务,否则ceph -s 或者ceph -w 的data统计部分显示是0,具体变化后面再参考一下官方文档。
osd创建
创建集群,安装ceph包,收集密钥之后,就可以创建osd了
--journal 可以专门指定日志盘,这里不单独使用日志盘。
这样创建出来的vg和lv名称是随机的。
如果中间需要重新删除osd,步骤:
需要注意,以上的ceph-deploy命令始终在同一个目录/data/ceph/deploy 下执行,否则会出现配置文件不一致的问题。
创建ceph存储池pool:
最后查看集群状态:
三. Proxmox创建集群
ssh登陆pve-1使用命令pvecm create创建集群cluster1:
ssh登陆pve-2和pve-3使用命令pvecm add 加入集群cluster1:
执行完成之后可以在3个节点上使用pvecm status 查看集群状态:
此时,随便登陆3个节点中的任何一台的web界面,都可以管理整个集群,如下图:
四.集群使用ceph存储
使用外部ceph集群里创建的存储池 ceph1,登陆web管理界面,如下图:
注意,ceph-external这个pool就是上面创建的ceph池。
创建ceph认证文件:
在任意一个节点上运行:
注意:ceph1.keyring 中的ceph1 是指存储的ID号ceph1
由于建立了集群,使用了proxmoxfs集群文件系统,/etc/pve目录属于集群资源,3个节点共用,因此只需要在任何一个节点执行上面的命令即可。
接下来,上传ISO镜像,生成虚拟机,使用ceph存储,如下图:
生成虚拟机之后,启动虚拟机,启动失败,报这个错误:
"KVM virtualisation configured, but not available. Either disable in VM configuration or enable in BIOS".
应该是我的测试环境ProxmoxVE的问题,查了一下,应该是和虚拟化嵌套开启有关,参考了这篇文章:
https://blog.51cto.com/kusorz/1925172
具体就不多解释了,在ProxmoxVE物理机上(注意,不是上面3个pve-1/pve-2/pve-3)执行下面的命令:
再重新启动上面创建的虚拟机,成功!
安装过程中观察ceph -w 实时输出:
其中,io client: 19.2KiB/s rd, 1.83MiB/s wr, 2op/s rd, 111op/s wr 显示了io读取实时数据。
五.高可用测试
上面建了一个虚拟机centos7-1使用的是ceph分布式存储,具备虚拟机热迁移的条件,首先实现一下虚拟机热迁移,然后再模拟虚拟机所在物理机故障的情况下,虚拟机自动迁移是否能够实现。
热迁移测试:
如下图,虚拟机从pve-1主机迁移到pve-2主机:
经过大概20秒钟左右,迁移完成,如下图:
接下来将这个虚拟机加入HA,如下图:
模拟物理机故障,将pve-2强制stop,如下图:
大概过了4分钟左右,加入HA的虚拟机在另一台主机pve-3中自动启动了,如下图:
测试成功!
总结:
整体测试下来,难点在于ceph集群的搭建,对于proxmoxVE来说,只要有外部的ceph存储池,直接配置进来使用就行了,最多要再配置一下ceph的认证配置,使用了ceph存储池之后,结合ProxmoxVE的集群功能,就可以很开心的使用虚拟机在线热迁移,甚至实现虚拟机HA,即虚拟机所在物理机故障,虚拟机可以自动迁移到其他正常物理机上。
有一点需要注意,其中如果物理机故障,虚拟机HA自动迁移需要耗费的时间是以分钟计算的。这也很好理解,因为集群需要经过一段时间才能决定物理机确实脱离集群,之后才会开始重新安排物理机恢复HA虚拟机,能够实现物理机故障的情况下自动迁移还是已经很不错了,因为一般情况下,如果物理机故障,上面的虚拟机恢复其实也是一件很头疼的事情,如果能够后台在几分钟之内帮忙正常恢复,其实也是解决了大问题。
接下来需要考虑的是,由于不是使用ProxmoxVE自带的ceph存储管理,因此需要单独维护ceph集群,后面需要考虑对ceph的web管理和监控,这就是独立的另外需要考虑的事情了。
不错,经过这次测试,说明不花钱购买订阅,使用外部ceph存储,还是能够实现高可用,超融合的虚拟化平台这个当初的设想!