> 虚拟化 Virtualization > Proxmox >

(案例一)Proxmox VE + Ceph + 物理网络 超融合生产环境部署案例

一、Proxmox Virtual Environment介绍

Proxmox VE 是用于企业虚拟化的开源服务器管理平台。它在单个平台上紧密集成了KVM虚拟机管理程序和LXC,软件定义的存储以及网络功能。借助基于Web的集成用户界面,您可以轻松管理VM和容器,高可用性群集或集成的灾难恢复工具。

同时Proxmox VE对接Proxmox备份服务器,可实现对VM、容器的全量和增量备份,可显著减少网络负载并节省宝贵的存储空间。

二、环境介绍

本文章所述环境采用3台物理服务器(含4口万兆网卡),1台万兆业务交换机,1台万兆管理交换机。

注意:由于使用ceph搭建分布式存储,为保证性能,管理网络及业务网络强烈建议采用全万兆部署。

2.1 软件版本

本次部署采用当前最新版本:Proxmox VE 6.3,可根据当时情况选择最新版本。


 

2.2 服务器配置



三、软件获取

访问官网下载ISO镜像文件,根据需要选择版本:
https://www.proxmox.com/en/downloads/category/iso-images-pve

四、RAID规划

4.1 系统盘

  • 建议采用两块SSD组成raid 1,作为系统盘。

不同品牌服务器设置方法不同,请参照各品牌官方文档。

4.2 ceph盘

  • ceph不推荐基于raid盘创建osd,所以除系统盘外,其余磁盘全部设置为非raid模式。

不同品牌服务器设置方法不同,请参照各品牌官方文档。

五、物理网络

生产环境对可靠性要求较高,所以建议采用链路聚合方式,将多个物理网卡绑定为一个逻辑接口,从而提高网络的性能及可靠性。

链路聚合可在以下三种模式中选择:

  • LACP(802.3ad):基于LACP协议的链路聚合,此模式交换机需配置链路聚合,模式为lacp。
  • 静态聚合:静态链路聚合,此模式交换机需配置链路聚合,模式为静态(华为、H3C默认为此模式;思科为on模式)。
  • active-backup:主备模式,网卡一主一备,主网卡故障时备份网卡接替主网卡工作,此模式交换机无需做链路聚合配置。

若交换机支持LACP,推荐采用LACP模式。否则你通常应该使用 active-backup 模式。此处采用LACP模式进行演示。
如果您打算在绑定接口上运行PVE集群网络,那么您必须在绑定接口上使用 active-passive 模式,其他模式是不支持的。

5.1 网络规划

5.1.1 物理网络拓扑



5.1.2 vlan及网段规划



5.2 网络配置

以华为交换机为例。

5.2 网络配置

以华为交换机为例。





六、PVE安装

6.1 选择第一个选项,安装PVE



6.2 同意协议



6.3 选择系统盘

注意:此处一定要选择RAID规划中创建的RAID 1系统盘。



6.4 配置国家、地区



6.5 配置密码、邮箱

如果为生产环境务必配置为强口令。邮箱建议配置为真实邮箱。



6.6 配置网卡、主机名、IP地址、DNS等信息

  • 此处选择服务器第一块网卡,用于管理网络,按我们的规划应为eno1
  • 每个节点主机名不能相同,主机名可以参考以下规划,域名请按需配置。

  • 主机名、IP地址等信息按实际情况配置,配置公网DNS,用于pve连接互联网。

6.7 检查无误后点击安装




安装结束后重启,通过浏览器访问,出现以下页面内容证明安装成功。

地址:https://你的IP地址:8006
用户名:root
密码:为安装时配置的密码。
域:选择Linux PAM

6.8 按照此方法安装全部服务器

七、更换软件源(三个节点都需要配置)

由于自带的软件源速度较慢,此处选择科大源:http://mirrors.ustc.edu.cn

涉及的软件源有三个,分别为debain、pve、ceph,需要分别修改下列文件。

7.1 通过web管理页面中的shell或ssh登录后台



7.2 更换debian源

vi /etc/apt/sources.list

删除默认的源,替换为:

deb http://mirrors.ustc.edu.cn/debian buster main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian buster main contrib non-free
deb http://mirrors.ustc.edu.cn/debian buster-updates main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian buster-updates main contrib non-free

deb http://mirrors.ustc.edu.cn/debian-security/ buster-security main non-free contrib
# deb-src http://mirrors.ustc.edu.cn/debian-security/ buster-security main non-free contrib

7.3 更换pve源为非订阅源

mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.bak
CODENAME=`cat /etc/os-release |grep CODENAME |cut -f 2 -d "="`
echo "deb http://mirrors.ustc.edu.cn/proxmox/debian $CODENAME pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list

7.4 添加 Ceph 镜像源

注意:因后面 PVE 安装 Ceph 可能会使用官方源覆盖 /etc/apt/sources.list.d/ceph.list 这个文件的内容,此处使用 ceph_mirror.list 这个文件替代。

创建 ceph_mirror.list 文件:

vi /etc/apt/sources.list.d/ceph_mirror.list

增加以下内容:

deb http://mirrors.ustc.edu.cn/proxmox/debian/ceph-octopus/ buster main

八、更新PVE至最新版本(按需)

根据实际需求决定是否更新为最新版本。

如需更新三台节点都需要执行:

apt upgrade

九、基础配置(三个节点都需要配置)

9.1 安装ifupdown2

此组件用于配置网卡后重启网卡操作:

apt install ifupdown2

9.2 安装vim

apt install vim

9.3 配置ntp服务

配置统一的时钟源

  • 如果有条件建议在内网部署一台ntp服务器,所有节点与内网ntp同步时钟。
  • 如果没有内网NTP服务器,可以采用下列NTP服务器。
阿里云:ntp.aliyun.com
国家授时中心:ntp.ntsc.ac.cn

十、PVE网络配置(三个节点都需要配置)

10.1 PVE服务器网络拓扑

放一张图有助于理解配置,可以结合5.1.1章节拓扑图理解。

10.2 管理网络

10.2.1 编辑vmbr0

移除eno1,以便于将eno1加入到bond0中,删除桥接端口中的eno1,然后点击OK。

10.2.2 创建bond0

点击创建Linux Bond。
名称:bond0
slaves:eno1 eno2
模式:LACP (802.3ad)
Hash策略:layer2+3
按以上参数配置,然后点击OK。

10.2.3 编辑vmbr0

桥接端口配置:bond0。
选中“vlan感知”选项,然后点击OK。

10.2.4 应用配置

如果感觉配置有问题可以点击还原按钮,还原为配置前状态。
如果没有问题,点击应用配置使配置生效。
网络配置不正确可能会导致无法管理节点,应用配置前请确认配置正确,如果出现无法管理的情况需要进入shell手动修改配置。

10.3 业务网络

业务网络配置与管理网络类似。

10.3.1 创建bond1

点击创建Linux Bond。
名称:bond1
slaves:eno3 eno4
模式:LACP (802.3ad)
Hash策略:layer2+3
按以上参数配置,然后点击OK。

10.3.2 创建vmbr1

桥接端口配置:bond1。
选中“vlan感知”选项,然后点击OK。

10.3.3 应用配置

点击应用配置使配置生效。

10.4 网络配置检查

在交换机中检查聚合接口状态是否正常。

查看所有eth-trunk接口状态,Status为Selected,则聚合接口正常。

十一、集群组建

创建集群,将三台节点加入同一集群。

11.1 在其中一个节点上点击,”数据中心“ — ”集群“ — ”创建集群“。

11.2 点击加入信息,复制加入信息。



11.3 在其他两个节点上,点击加入集群,粘贴加入信息,然后输入第一台节点的root密码,即可完成加入。



11.4 加入集群完成后需要刷新页面才能正常使用,全部加入完成后,就可以在一个节点上管理集群中所有节点了。



十二、ceph

Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统。它可以将多台服务器中的硬盘聚合成一个集群,对外可提供文件存储、块存储、对象存储等多种形式,ceph的另一个特点是数据采用多副本方式存储,避免由于单点故障造成的业务中断和数据丢失。

PVE自带了ceph的图形化安装、管理工具,集群搭建完成后,可以快速完成ceph的安装、配置。同时pve也提供命令行工具,可以使用命令行对ceph进行自定义配置。

12.1 ceph磁盘规划

我的环境中,sda到sdh为8块HDD硬盘,sdi到sdl为4块SSD硬盘。

为提高hdd的性能,我们将sdi作为所有hdd硬盘的DB盘,将sdj作为所有hdd硬盘的WAL磁盘。

请注意DB盘和WAL盘不能相同,如果只有一块SSD可以将SSD分为两个区,分别作为DB盘和WAL盘。
分区建议:根据PVE文档建议,DB盘容量=数据盘总容量10%,WAL盘容量=数据盘总容量1%,假设数据盘共8T,则DB分区容量需>800G,WAL分区容量需>80G,考虑到单位换算及损耗,需要适当增加容量,请根据实际情况规划。

  • 详细规划如下:

12.2 ceph安装

在全部节点中,安装ceph组件。

注意,实际操作中此步骤会在 /etc/apt/sources.list.d/ceph.list 文件中配置官方源。

12.2.1 选择节点 — ”ceph“ 点击 ” Install ceph ”


12.2.2 选择版本,此处选择 “ 15.2 ”


12.2.3 输入 ” Y “ 开始安装



如果软件包下载速度较慢,可以先安装一台,然后将安装包拷贝到其他节点相同路径中。
安装包保存路径:/var/cache/apt/archives



12.3 ceph配置

此配置是将ssd硬盘和hdd硬盘分别创建pool,分别为sdd_data和hdd_data。

12.3.1 创建osd

在 ”ceph“ — ”osd“ 选项卡创建OSD。

正常情况下磁盘类型会自动识别,如果识别的不正确,注意手动调整。

创建方式如下:

  • HDD盘

创建hdd时注意选择DB和WAL磁盘。

  • SSD盘

  • 如果创建时类型选择错误,可以用命令行修改:

假设osd0需要更改。

删除osd类别信息:

ceph osd crush rm-device-class osd.0

设置osd类别信息

ceph osd crush set-device-class ssd osd.0

12.3.2 创建class rule

  • 创建HDD rule
ceph osd crush rule create-replicated hdd_rule default host hdd
  • 创建SSD rule
ceph osd crush rule create-replicated ssd_rule default host ssd

12.3.3 创建存储池

  • 创建HDD pool
ceph osd pool create hdd_data hdd_rule
ceph osd pool application enable hdd_data hdd_data
  • 创建SSD pool
ceph osd pool create ssd_data ssd_rule
ceph osd pool application enable ssd_data ssd_data

注意,如果是使用单个节点的测试环境,创建存储池后集群会出现以下警告信息。

root@pve1:~# ceph -s
  cluster:
    id:     e78680bc-550b-49e4-baa5-3a6d8e883329
    health: HEALTH_WARN
            1 MDSs report slow metadata IOs
            Reduced data availability: 193 pgs inactive
            Degraded data redundancy: 193 pgs undersized
 
  services:
    mon: 1 daemons, quorum pve1 (age 45m)
    mgr: pve1(active, since 45m)
    mds: 1/1 daemons up
    osd: 3 osds: 3 up (since 44m), 3 in (since 44m)
 
  data:
    volumes: 1/1 healthy
    pools:   4 pools, 193 pgs
    objects: 0 objects, 0 B
    usage:   17 MiB used, 400 GiB / 400 GiB avail
    pgs:     100.000% pgs not active
             193 undersized+peered
 
  progress:
    Global Recovery Event (7m)
      [............................]

原因是集群默认的 crushmap 规则是按 host 级别,可使用以下方法修改为 osd 级别:

ceph osd getcrushmap -o /etc/ceph/crushmap
crushtool -d /etc/ceph/crushmap -o /etc/ceph/crushmap.txt
sed -i 's/step chooseleaf firstn 0 type host/step chooseleaf firstn 0 type osd/' /etc/ceph/crushmap.txt
crushtool -c /etc/ceph/crushmap.txt -o /etc/ceph/crushmap-new
ceph osd setcrushmap -i /etc/ceph/crushmap-new

12.3.4 添加存储池至PVE

”数据中心“ — ”存储“ — ”添加“ — ”RBD“。

  • 添加hdd存储池:

  • 添加ssd存储池:

十三、安全加固

13.1 配置公钥登录

13.1.1 生成密钥对

以xshell为例。

  • 生成密钥

  • 设置名称及密码

设置密码为可选项,为保证密钥安全,建议设置。

13.1.2 将公钥复制至服务器"/root/.ssh/authorized_keys"文件中,选择"SSH2 - OpenSSH"格式。



vim /root/.ssh/authorized_keys

13.1.3 禁止ssh使用密码登录,禁止前先验证一下公钥方式能否登录。

# 编辑sshd配置文件
vim /etc/ssh/sshd_config
# 将下列配置添加到最后一行
PasswordAuthentication no
# 重启sshd服务
systemctl restart sshd



(责任编辑:IT)