blob.png blob.png

 上面左边是我的个人 微  信,如需进一步沟通,请加  微  信。  右边是我的公众号“Openstack私有云”,如有兴趣,请关注。


    上次找了一台物理服务器直接安装了一个proxmox VE 环境(VE是虚拟化环境的意思),后续又看了官方的admin文档,对整个系统架构有了一定的了解,接下来,准备好好研究一下具体能够落在生产环境上的系统设计。官方文档可以在官网下载,也可以在安装pve之后在web界面上直接查看或者下载,如下图:

image.png


设计思路:

基本想法是,3个以上物理节点的集群环境,组成HA,具体设想如下:

    1.网络方面需要内部集群管理(corosync)网络,业务网络,ceph存储网络,3个网络,需要强调的是,内部集群网路需要独立出来,因为集群网络对延时的要求很苛刻,具体详见官方文档。如果有条件,每个网络都做bond。bond类型的选择,集群管理网络直接使用active-backup,其他的最好使用LACP(802.3ad)链路聚合,但是这种方式需要在交换机侧做配置,两个交换机之间也要做级联,链路聚合的好处是一稳定,二带宽不浪费,三高可用 。

    2.存储方面,除了系统盘之外,每台物理机使用2块硬盘贡献出来作为ceph存储池使用,1块硬盘作为本地lvm存储并挂载给镜像和备份目录使用,这样可以比较灵活,需要实现HA功能虚拟机可以放在ceph存储池,lvm存储池主要存放模板镜像文件,也可以给其他虚拟机使用,lvm存储池的虚拟机在相应速度上理论上要比ceph的要高,这里具体不阐述。ceph存储池使用3mon,3副本。

    3.CPU和内存方面根据实际需求确定,这里不赘述。


操作记录:


一.环境准备:

    基于以上考虑,在这台pve环境上面,创建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网段)使用。创建虚拟机如下:

    image.png


    剩下2台测试虚拟机,直接克隆,分别为pve-2,pve-3 .

    接下来分别启动pve-1,pve-2,pve-3 进行proxmox VE的安装,如下图:


image.png

安装步骤都很简单,傻瓜式的,其中选择硬盘会默认第一块硬盘安装系统,然后是设置root密码等等,网络配置步骤:


image.png

这里hostname要求写成FQDN格式,我试了直接使用pve-2,不行,最后是使用pve-2.ywb.com 。


    3台虚拟机同时安装,非常快,不到10分钟,居然就安装完了!感觉比装vmware的ESXI也更快啊。

image.png

点右下角的Reboot重启。

image.png

第一阶段搞定,后面就可以建集群,配网络,建存储之类的后续操作了。

    通过输入网址:

    https://192.168.1.51:8006

    https://192.168.1.52:8006

    https://192.168.1.53:8006

    分别可以管理这3台pve。


二.配置网络

    先将第二块网卡的网络配上,系统安装过程中配置了第一块网卡作为内部管理集群网络,网段是192.168.1.0/24 ,登陆系统后可以发现这个地址是配置在网桥上的,网桥上搭一块网卡进行桥接,因此新建一个网桥并配置192.168.170.0/24网段的地址给它,搭另一块网卡进行桥接,如下图:

    image.png


    注意第一块网卡设置了网关是192.168.1.1,这块网卡就不能设置网关了 。这个比较好理解,其实就是在主机上设置了默认网关,只能有一个。

    增加完网桥之后,需要重启pve节点生效配置。(网络更改都需要重启节点才能生效。)


三.存储设置

    接下来处理存储,进去看pve节点的存储,安装的时候安装程序会默认在安装盘上建立一个vg,名称是pve,在这个vg上建立swap/root/data三个lv ,其中root这个lv上挂载/根目录。 安装完成之后直接默认有两个存储ID,一个是local,对应的是目录型存储,挂载目录是/var/lib/vz ,一个是local-lvm,挂载的是data这个lv,这个lv的类型是lvm-thin ,lvm-thin这种类型很适合虚拟机使用,具体如何创建后面再介绍。另外,pve的各种存储类型主要有目录型/lvm/lvm-thin/zfs/nfs/ceph等等,具体可以参考官网的admin文档。

    我当初的设计是需要将最后一块32G的盘/dev/sdb作为目录/var/lib/vz的挂载盘,这个目录下面存放镜像文件,备份文件,也可以直接存放本机虚拟机文件和容器文件。这一块工作需要先在后台将sdb这块盘划分了lvm才能给系统使用。因此,    首先通过ssh登陆pve服务器,执行:

    pvcreate /dev/sdb   
    ---注意,我这里没有分区,直接使用整块硬盘,使用分区其实也是可以的
    vgcreate vg-sdb /dev/sdb
    lvcreate --thin -L 30G -n lvm-sdb vg-sdb  
      注:不能使用32G,提示空间不够,--thin表示类型是lvm-thin ,如果创建的时候没有加这个参数,可以事后执行lvconvert --type thin-pool vg-sdb/lvm-sdb 命令转化类型,如果是为挂载目录使用,可以不使用thin类型。
    mkfs.ext4 /dev/vg-sdb/lvm-sdb
    更改local存储目录/var/lib/vz的挂载点为/dev/vg-sdb/lvm-sdb :
    mount /dev/vg-sdb/lvm-sdb /var/lib/vz
    在/etc/fstab文件中写入下面这行,使开机自动挂载:
    /dev/vg-sdb/lvm-sdb /var/lib/vz ext4 defaults 1 2

调整pve-1节点的local存储池为共享池,这样可以只上传镜像到这个存储池,其他节点也可以共享使用,如下图:

image.png    

上传第一个ISO镜像,通过scp程序,我用的是winscp,直接从本机上传到pve-1的/var/lib/vz/templates/iso/目录中,如下图:

image.png

当然,也可以使用web管理界面直接上传,如下图:

image.png


四.创建集群:

    在其中一台pve服务器的web管理界面上首先创建一个集群,如下图:

image.png   


接下来,通过ssh登陆其他2个pve节点,执行 pvecm add 192.168.1.51 (这个地址是上面建立集群的pve节点的IP)命令加入集群cluster1,如下图:

image.png

加入完成之后,可以通过命令 pvecm status 在任何一个节点上查看集群情况,如下图:

image.png

如果要查看集群日志,可以看文件/var/log/daemon.log 。

集群建立完成之后,任何一个pve节点的web管理界面视图都可以管理整个集群,如下图:

image.png


五.ceph安装配置

    

    参考官网这个网址:

    https://www.proxmox.com/en/training/video-tutorials/item/install-ceph-server-on-proxmox-ve

    这是一个详细的视频教程,基本的设计思路和我这个环境差不多,都是3个节点,只有网络是真正的3个网络,我是因为条件限制,将集群管理和虚拟机业务网络合二为一了,其他的都差不多。

    首先在每一个节点安装ceph软件包:

    pveceph install --version luminous   

    注意,官网视频里面用的jewel版本,我们安装的pve版本是5.2对应的ceph版本已经是luminous版本了。


    执行过程中提示软件包相关错误,如下:

W: (pve-apt-hook) !! WARNING !!
W: (pve-apt-hook) You are attempting to remove the meta-package 'proxmox-ve'!
W: (pve-apt-hook) 
W: (pve-apt-hook) If you really you want to permanently remove 'proxmox-ve' from your system, run the following command
W: (pve-apt-hook) touch '/please-remove-proxmox-ve'
W: (pve-apt-hook) and repeat your apt-get/apt invocation.
W: (pve-apt-hook) 
W: (pve-apt-hook) If you are unsure why 'proxmox-ve' would be removed, please verify
W: (pve-apt-hook) - your APT repository settings
W: (pve-apt-hook) - that you are using 'apt-get dist-upgrade' or 'apt full-upgrade' to upgrade your system
E: Sub-process /usr/share/proxmox-ve/pve-apt-hook returned an error code (1)
E: Failure running script /usr/share/proxmox-ve/pve-apt-hook

    需要执行这个命令进行确认:

    touch '/please-remove-proxmox-ve'
    再次执行install命令,最后还是有一个报错:
    cp: cannot stat '/usr/share/doc/pve-manager/examples/ceph.service': No such file or directory
    could not install ceph.service


    然后发现pveceph命令找不到了!!!! 应该是在上面安装过程中软件包错误处理的时候将这个软件包卸载了。咋办?另外,在web管理界面,创建虚拟机启动虚拟机连接虚拟机失败,说明上面命令卸载了部分或者大部分关键软件包,嗝屁了。通过在网上查相关信息,只看到全真道长sery那里就在几天前也发现了这个问题,确认就是没有订阅造成的,被一家公司控制的开源产品,缺陷出来了。道长sery那边的消息是,如果订阅,是249.9欧元每CPU每年,这算下来与vmware的授权也差不多了,那我还用个毛的开源软件啊。下图是官网的报价:


image.png


    看来只有自己手动安装ceph集群了。


总结:

    本篇博文尝试搭建一套3节点的Proxmox VE 集群,安装过程非常快,概念也很清晰,web管理界面非常好用,但是在进行到存储ceph安装的时候出现了订阅问题。

    安装到这里,反正也已经基本摸了一遍集群的实际落地操作,并踩到了一个大坑,那就是ceph的安装配置5.2版本需要订阅官方授权才能使用。具体如何解决,初步2个办法,第一个是测试历史版本,据说历史版本可以使用,第二个是手动安装ceph集群,然后在pve中做一些简单配置连接使用这个ceph集群,第二个办法的缺点是没有办法统一集成管理pve和ceph,只能分开管理,但是对于大规模的应用场景,可能反倒是一个优点。我的想法是,两个办法都要去踩一遍,对于小规模使用场景使用第一个用历史版本的办法,对大规模场景,都可以。


    注:至今天(2018年9月23日)为止,官网上能下载的版本有5.2-1,   5.1-3,   5.0-5ab26bc-5 三个版本,三个版本我都测试过了,pveceph工具install之后都不正常。更老的版本现在暂时未找到。

    

    注,上面说的“手动安装ceph集群,然后在pve中做一些简单配置连接使用这个ceph集群” ,已经验证可以实现,参考下面的文章:

    《ProxmoxVE(V5.2) 之 使用外部ceph存储(luminous)


PromixVE 系列文章:


proxmox-私有云的另一个选择

proxmox 之 与openstack的比较

ProxmoxVE 之集群安装(V5.2)

ProxmoxVE(V5.2) 之 使用外部ceph存储(luminous)