pve虚拟化制作
PVE服务器安装参考#本文档的目标是安装一个随时可复制扩展的PVE集群,在PVE集群上部署docker swarm集群,部署一系列在线协同服务。#1.PVE集群的批量制作#基本原理是使用ventoy启动安装在vdi文件中的PVE,使得PVE系统能够通过文件拷贝的方式进行分发而无需多次安装。前提条件是PVE能够在运行时修改其hostname和ip地址等,从而将母盘转换为实际的系统盘。#基本步骤是:在
#PVE服务器安装参考
#本文档的目标是安装一个随时可复制扩展的PVE集群,在PVE集群上部署docker swarm集群,部署一系列在线协同服务。
#1.PVE集群的批量制作
#基本原理是使用ventoy启动安装在vdi文件中的PVE,使得PVE系统能够通过文件拷贝的方式进行分发而无需多次安装。前提条件是PVE能够在运行时修改其hostname和ip地址等,从而将母盘转换为实际的系统盘。
#基本步骤是:在VirtualBox等虚拟机中安装PVE系统,按照ventoy的要求打好补丁。将母盘利用ventoy进行分区和安装,使之能启动服务器,并将服务器制作好。利用母盘“磁化”各个服务器系统盘。
#1.1.制作PVE系统
#1.1.1.虚拟机中安装
#利用VirtualBox,创建固定大小(如20GB或120GB)的VDI文件(命名为pve73.vdi),作为PVE的存储硬盘。参考附录“Virtualbox安装Proxmox VE”进行安装(注意磁盘为固定大小的vdi格式)。
#注意下列设置:
1. IP地址设置为192.168.2.10/24,用户密码为passme
2. 主机名设置为p00c01@seuom.com,IP和hostname设为0,防止干扰真实的服务器配置。
3. 如果能配置Enable EFI并启动安装,则使用它。
4. PVE启动后,安装常用的命令行工:
apt-get update && apt-get install -y vim nano net-tools inetutils-ping unzip telnet dnsutils
有条件的可以参照“搭建Ubuntu镜像源”来搭建PVE的镜像源,方便内网升级更新等操作。
#1.1.2.PVE支持ventoy启动
#安装完成后,得到可以正常启动的pve73.vdi文件。为了支持ventoy直接启动它,还需要在虚拟机中继续按照附录“Linux vDisk 文件启动插件”中方式进行调整。主要步骤是:
下载插件ISO文件(vtoyboot-1.0.26.iso),挂载到VirtualBox的PVE中,
加载到mnt目录(mount /dev/cdrom /mnt)
拷贝到home目录(cp /mnt/vtoyboot-1.0.26.tar.gz /home),
解压(cd /home && tar -zxvf /home/vtoyboot-1.0.26.tar.gz)。
然后执行(cd vtoyboot-1.0.26 && ./vtoyboot.sh)即可。PVE不需要额外的操作。
关机或重启(poweroff, reboot)
#注意:ventoy1.8.8目前只能启动固定大小(fixed)的vdi文件。
#1.2.挂载到主机启动测试
#参照后面“Ventoy_PVE启动盘制作”,生成启动盘后,继续下面操作。
#将经处理后的pve73.vdi放置到启动盘的/oses目录,命名为pve73.vdi.vtoy,即可插入主机或用U盘方式启动了。
#启动后,PVE不能自动识别主机的网络地址,此时可以用下列命令来进行调整
ip addr
#命令可以查看IP地址等所有信息,可常用。
#根据你的网卡名称,编辑PVE的/etc/network/interfaces 文件
nano /etc/network/interfaces
#如果主机只有一个网卡,则文件内容示例如下:
auto lo
iface lo inet loopback
iface ens9f0 inet manual
iface ens9f1 inet manual
iface ens9f2 inet manual
iface ens9f3 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.2.10/24
gateway 192.168.2.1
bridge-ports ens9f0
bridge-stp off
bridge-fd 0
#其中,ens9f0是分配给vmbr0的网口,将它替换为你想分配的网口(如上面图中的enp0s3),重启(reboot主机或重启网络ifupdown2)即可。注意,这里不要去配置PVE的IP地址,而是调整它的网卡分配关系。
#应用网络配置:
systemctl restart networking.service
#1.3.PVE基础配置
#1.3.1.NTP和时区
#时区和时间不一致,会导致后面服务器之间不能正确建立集群。后续文档会在PVE集群创建前,建立一个OpenWRT服务器并设置为NTP Server。这里提前配置好PVE的NTP设置,用OpenWRT服务器作为NTP服务器(局域网LAN地址为192.168.2.1)。
echo ‘server 192.168.2.1 iburst’ > /etc/chrony/sources.d/192.168.2.1.sources
chronyc reload sources
journalctl --since -1h -u chrony
#配置时区,显示时间
timedatectl set-timezone Asia/Shanghai
date -R
#若chrony不能正确同步【将导致PVE ceph集群失败】,可用下面的timesyncd来实施
systemctl disable chronyd #close the servie
#安装systemd-timesyncd
apt-get -y install systemd-timesyncd
#修改时间服务器
cat > “/etc/systemd/timesyncd.conf” << EOF
[Time]
NTP=192.168.2.1
EOF
#重启服务
systemctl restart systemd-timesyncd.service
systemctl enable systemd-timesyncd.service
#配置时区,显示时间
timedatectl set-timezone Asia/Shanghai
date -R
#1.3.2.PCIe直通
#打开直通
nano /etc/default/grub
#注释并添加
#GRUB_CMDLINE_LINUX_DEFAULT=“quiet”
GRUB_CMDLINE_LINUX_DEFAULT=“quiet intel_iommu=on”
#更新配置
update-grub
#安装模块
nano /etc/modules
#加入
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
#更新配置
update-initramfs -u -k all
#然后重启PVE节点,之后可以在PCIE里面直接选择对应通道了
#1.3.3.ceph安装(不配置)
#参见#5.2前三步,此时务必不要配置,不要配置,不要配置。安装完准备形成集群时再行配置。
#1.3.4.显卡vGPU虚拟化
#参见附录“PVE各版本显卡虚拟化”。
#1.3.5.复制改主机名和IP的脚本
#将“PVE修改主机名和IP地址”一节中的脚本内容粘贴到/root/setiphost.sh中,并设置可执行属性。后续服务器可以直接执行该脚本来修改IP和hostname。
nano /root/setiphost.sh
#粘贴脚本内容
chmod +x /root/setiphost.sh
#1.4.Ventoy_PVE启动盘制作
#主要需要如下步骤:
1.利用ventoy程序将硬盘格式化并安装ventoy启动器。
2.配置ventoy缺省选单等参数。
#1.4.1.安装ventoy启动器
#参考https://ventoy.net/cn/doc_start.html 以Windows 图形界面安装Ventoy为例。
#下载安装包,例如 ventoy-1.0.00-windows.zip 然后解压开。直接执行 Ventoy2Disk.exe 如下图所示,选择磁盘设备,然后点击 安装 按钮即可。
#说明:默认的 Ventoy2Disk.exe 是32位x86程序,同时支持最常见的32位和64位Windows系统,绝大部分情况下使用它就可以。从1.0.58版本开始,Ventoy还同时提供了 Ventoy2Disk_X64.exe/Ventoy2Disk_ARM.exe/Ventoy2Disk_ARM64.exe 可以根据需要使用。这些文件位于安装包内的altexe目录下,使用时需要将其拷贝到上一层目录(即和 Ventoy2Disk.exe 同一位置)。
#界面要素:
#安装包内 Ventoy 版本:当前安装包中的Ventoy版本号
#设备内部 Ventoy 版本:U盘中已安装的Ventoy版本号,如果为空则表示U盘内没有安装Ventoy
#左侧显示的 MBR/GPT:用户当前选择的分区格式,可以在选项中修改,只对安装过程有效。
#右侧显示的 MBR/GPT:设备当前使用的分区格式 (也就是当初安装Ventoy时选择的分区格式),如果U盘内没有安装Ventoy,则会显示空。
#左侧显示的 exFAT/NTFS/FAT32:用户当前选择的Ventoy分区文件系统类型,可以在选项中修改,只对安装过程有效。
#右侧显示的 exFAT/NTFS/FAT32:当前设备中Ventoy分区的文件系统类型。如果当前设备中没有安装Ventoy,则显示为空。
#安装:把Ventoy安装到U盘,只有第一次的时候需要,其他情况就只需要升级即可
#升级:升级U盘中的Ventoy版本,升级不会影响已有的ISO文件
#注意:1.安装时会格式化整个硬盘,务必保存资料。
#典型选项(菜单”配置选项”):
#1. 显示所有设备(如果不是USB接入的硬盘);
#2. 分区类型–MBR格式;(如果是大于2TB的硬盘,则选GPT)
#3. 分区设置—Ventoy分区文件类型(NTFS),在磁盘最后保留一段空间(240GB);
#制作完成后,将保留的空间分配为exFAT格式或ext4(可在PVE中加载用于NFS)的主分区备用。
#1.4.2.配置ventoy启动器
#使用VentoyPlugson.exe工具对界面进行配置,或者直接在Ventoy分区的ventoy目录下,创建文件ventoy.json,内容如下(设置缺省等待时间和启动项,切换命令行界面适应更多系统):
{
“control”:[
{ “VTOY_MENU_TIMEOUT”: “10” },
{ “VTOY_DEFAULT_IMAGE”: “/oses/pve73.vdi.vtoy” }
],
“theme”:{
“display_mode”: “CLI”
}
}
#注意,格式为UTF8-无BOM,推荐用UltraEdit之类的编辑器。
#上述配置将在等待10秒后缺省启动/oses/pve73.vdi.vtoy中的系统,ventoy的启动界面采用命令行模式,兼容更多的服务器主机。
#1.5.PVE系统分发
#完成基础配置后,可将PVE分发到各个服务器,从而正式形成集群。
#如果在创建时,PVE使用了20GB的硬盘,因其中的local分区太小,不能适应生产环境,需要调整。
#否则,直接将/oses/pve73.vdi.vtoy文件压缩,拷贝到制作好的启动盘中,解压即可。
#1.5.1.PVE中local扩容
#扩容的思路:
1.调整/oses/pve73.vdi.vtoy文件的大小;
2.在lvm中扩展local
#1.5.1.1.扩容pve73.vdi
#由于pve73.vdi.vtoy是固定大小的vdi文件,VirtualBox不能直接调整大小,方法是先克隆出一个动态磁盘,调整该磁盘后,再克隆成固定大小的磁盘。步骤如下:
#使用VirtualBox的命令行,显示磁盘情况
cd “C:\Program Files\Oracle\VirtualBox”
C:\Program Files\Oracle\VirtualBox>VBoxManage showhdinfo H:\oses\pve73.vdi
UUID: 6303d3b2-6895-4b52-9730-ef3174bf5296
Parent UUID: base
State: created
Type: normal (base)
Location: H:\oses\pve73.vdi
Storage format: VDI
Format variant: fixed default
Capacity: 20480 MBytes
Size on disk: 20482 MBytes
Encryption: disabled
Property: AllocationBlockSize=1048576
#克隆为可变大小的磁盘
VBoxManage clonehd h:\oses\pve73.vdi h:\oses\pve73_var.vdi -variant Standard
0%…10%…20%…30%…40%…50%…60%…70%…80%…90%…100%
Clone medium created in format ‘VDI’. UUID: 201ec575-6ab4-4b7a-98f6-039162ea42d6
#调整大小(到120GB)
VBoxManage modifymedium h:\oses\pve73_var.vdi --resize 122880
#查看信息
VBoxManage showhdinfo h:\oses\pve73_var.vdi
#克隆为固定大小的磁盘
VBoxManage clonehd h:\oses\pve73_var.vdi h:\oses\pve73_fix.vdi --variant Fixed
#VBoxManage clonehd |
#[–format VDI|VMDK|VHD|RAW|]
#[–variant Standard,Fixed,Split2G,Stream,ESX]
#[–type normal|writethrough|immutable]
#[–remember]
#1.5.1.2.PVE中扩容local
#PVE的local分区实际就是lvm的vg(名为pve)中的一个lv(名为/dev/pve/pve-root 或/dev/mapper/pve-root)。
#扩容的原理首先是在扩容后磁盘的空闲空间中创建一个新分区,将该分区制作为lvm的一个pv加入到vg中,再将lv扩容即可。
lvm是linux的一种磁盘格式,能够将多个pv(physical volume,物理卷)集成为一个vg(volume group,卷组),从而在vg上分配lv(logical volume,逻辑卷),供上层文件系统使用。Lvm能够动态扩展系统容量。
#在VirtualBox中挂载h:\oses\pve73_fix.vdi启动PVE,执行下列操作:
#查看硬盘分区,通常会发现/dev/sda中有3个分区,以及一片空闲区域。
fdisk -l
#在空闲区域创建新分区,根据命令提示执行命令
fdisk /dev/sda
#命令大致如下:
m—查看命令帮助
n—创建新分区,使用缺省的分区号和起止扇区等即可。
w—写入分区表
#将新分区只作为pv加入vg中
将分区格式化为ext4格式
mkfs.ext4 /dev/sda4
在/dev/sda4上创建pv
pvcreate /dev/sda4
#查看当前系统中的vg
vgdisplay
— Volume group —
VG Name pve
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 23
…
将/dev/sda4加入vg(pve)
vgextend pve /dev/sda4
扩展vg(pve)中的local分区(名为/dev/pve/pve-root 或/dev/mapper/pve-root)
lvextend -L +80G /dev/pve/pve-root
resizef2fs /dev/pve/pve-root
#1.5.2.PVE73.vdi的压缩解压
#PVE73.vdi文件体积较大,不便于拷贝粘贴。
#如需多次批量复制该文件,解决方法是利用zip等工具,快速压缩该文件,在目标磁盘中解压即可。
#一般地,PVE安装后占用的实际空间较小(10GB以内)。
#1.5.3.PVE修改主机名和IP地址
nano /root/setiphost.sh
#!/bin/bash
function pause (){
read -p “press any key to continue, or CTRL+C to terminate.”
}
Read the user input
echo "Enter the host number(from 11 to 13, …): "
read HOSTNO
HOSTNAME=“h
H
O
S
T
N
O
c
01
s
e
u
"
I
P
A
D
D
R
=
"
192.168.2.
{HOSTNO}c01seu" IPADDR="192.168.2.
HOSTNOc01seu"IPADDR="192.168.2.{HOSTNO}”
echo "The host name will be ${HOSTNAME}, ip will be
I
P
A
D
D
R
.
I
f
w
r
o
n
g
,
p
r
e
s
s
C
T
R
L
+
C
t
o
t
e
r
m
i
n
a
t
e
.
"
p
a
u
s
e
s
e
d
−
i
−
e
′
s
/
p
00
c
01
/
{IPADDR}. If wrong, press CTRL+C to terminate." pause sed -i -e 's/p00c01/
IPADDR.Ifwrong,pressCTRL+Ctoterminate."pausesed−i−e′s/p00c01/{HOSTNAME}/g’ /etc/hostname
sed -i -e ‘s/p00c01/
H
O
S
T
N
A
M
E
/
g
′
/
e
t
c
/
h
o
s
t
s
s
e
d
−
i
−
e
′
s
/
p
00
c
01
/
{HOSTNAME}/g' /etc/hosts sed -i -e 's/p00c01/
HOSTNAME/g′/etc/hostssed−i−e′s/p00c01/{HOSTNAME}/g’ /etc/postfix/main.cf
sed -i -e ‘s/192.168.2.10/
I
P
A
D
D
R
/
g
′
/
e
t
c
/
h
o
s
t
s
s
e
d
−
i
−
e
′
s
/
192.168.2.10
/
{IPADDR}/g' /etc/hosts sed -i -e 's/192.168.2.10/
IPADDR/g′/etc/hostssed−i−e′s/192.168.2.10/{IPADDR}/g’ /etc/network/interfaces
sed -i -e ‘s/192.168.100.10/192.168.100.
H
O
S
T
N
O
/
g
′
/
e
t
c
/
n
e
t
w
o
r
k
/
i
n
t
e
r
f
a
c
e
s
s
e
d
−
i
−
e
′
s
/
192.168.168.10
/
192.168.168.
{HOSTNO}/g' /etc/network/interfaces sed -i -e 's/192.168.168.10/192.168.168.
HOSTNO/g′/etc/network/interfacessed−i−e′s/192.168.168.10/192.168.168.{HOSTNO}/g’ /etc/network/interfaces
echo “Please check the system and reboot…”
#注意:p00c01和192.168.2.10、192.168.100.10、192.168.168.10应根据制作母机时的设置来调整。
#重启后,应删除/etc/pve/nodes/下原来的p00c01目录,避免Web GUI中多余的目录.
#2.服务器网络拓扑结构
服务器网络拓扑主要是三个网系和一个出口。网系是指PVE自身的集群网络、Ceph集群网络、PVE业务访问网络。因此,每台服务器至少具备3个网口,PVE自身的集群网络(PVE-Cluster)可使用千兆网口,Ceph集群网络(Ceph-Cluster)、PVE业务访问网络一般采用万兆光口。三个网络通常应采用独立的交换机。出口是为了隔离服务器集群和用户,引入一个OpenWRT支持的NAT服务器。该服务器至少具备一个WAN口(强烈建议采用一个独立的万兆以上网口)和LAN口(可复用PVE业务访问网络)。
上图中,OpenWRT(OP)位于浪潮M4服务器中,出口地址调试期间为146.200.100.234.
#2.1.服务器网口安排
各服务器的网卡和使用情况如下:
浪潮M5服务器:
从左到右:
光卡B(enp940f0)、A(enp940f1)(万兆单模),光口0(eno1)、1(eno2)(暂空),电口3(eno3)、4(eno4)
enp940f0:vmbr0,Service Lan,192.168.2.11…/24
enp940f1:vmbr2,Ceph Cluster,192.168.168.11…/24
eno3、eno4:vmbr1,PVE Cluster,192.168.100.11…/24
eno1、eno2:未来可扩展到vmbr0和vmbr2。
浪潮M4服务器(不加入Ceph,支持出口OP):
从左到右:
电口1(eno1)、2(eno2),光卡B(enp1s0f0)、A(enp1s0f1)(万兆单模)
enp1s0f0:vmbr0,Service Lan,192.168.2.11…/24
enp1s0f1:vmbr2,OP Router WAN,146.200.100.234/24(调试期间)
eno1、eno2:vmbr1,PVE Cluster,192.168.100.11…/24
#2.2.OP安装
#2.2.1.openwrt镜像下载
到https://openwrt.org/下载,如https://downloads.openwrt.org/releases/22.03.3/targets/x86/generic/中的generic-ext4-combined.img.gz,解压得到img格式的镜像文件并改名为openwrt.img备用。
#2.2.2.创建虚拟机
登录PVE管理页面,创建虚拟机——填写虚拟机名称——高级——开机自启动——下一步。
类别——Linux——版本——5.x-2.6kemel——不使用任何介质
默认——下一步
硬盘无所谓,之后会删除,然后用下载的img镜像创建虚拟磁盘
CPU核心数量——2一般双核足够了——CPU权重:性能弱的cpu1025
内存大于256MB,一般不用超高2GB——下一步
PVE虚拟机可选网卡模型(虚拟网卡)——默认的VirtIO(半虚拟化),其性能和效率最高。
VirtIO模型在Openwrt内会显示“Unknown!半双工”,但实测是千兆全双工,不影响使用。
确认设置和参数——完成。
#2.2.3.创建硬盘
选择刚刚创建的“Openwrt”虚拟机——硬件——硬盘(scsi0) ——分离
选中未使用的磁盘0——删除,再用同样的方法删除不用的光驱。
#2.2.4.上传镜像
打开WinSCP,文件协议——scp——主机名——pve的管理ip地址——用户名———root——登录密码——登陆
在左边选中以img后缀的固件,拖入左边目录下
pve——shell——输入命令导入镜像qm importdisk 100 /openwrt.img local-lvm
qm importdisk是命令
#2.2.5.创建硬盘
pve——openwrt(100)——硬件——未使用的磁盘——编辑
添加
pve——openwrt(100)——硬件——硬盘——调整磁盘大小
容量随便选,我选择了富裕的8g
#2.2.6.引导顺序
pve——openwrt(100)——选项——引导顺序
勾选scsi0,并拖拽之最上方——ok
openwrt安装结束。
#2.3.OP配置
#2.3.1.端口映射
一旦启用内外隔离的方式,外部就不能直接访问内部的服务器集群等信息了。为此,需要在OP中配置端口映射等,允许外部对内访问。
部分端口映射如下图所示:
缺省保留映射了10081~10086的6个端口,分别用于OP管理、OP的SSH、PVE的管理。最后是测试用的基于ipkvm的服务器控制端,包括443网页访问和5900的VNC访问。
后续根据对外服务,可按需开放端口。
最终形成的openwrt端口映射如下:
cat /etc/config/firewall
config defaults
option input ‘ACCEPT’
option output ‘ACCEPT’
option synflood_protect ‘1’
option forward ‘ACCEPT’
config zone
option name ‘lan’
list network ‘lan’
option input ‘ACCEPT’
option output ‘ACCEPT’
option forward ‘ACCEPT’
option masq ‘1’
config zone
option name ‘wan’
option output ‘ACCEPT’
option mtu_fix ‘1’
list network ‘wan’
list network ‘wan6’
list network ‘WAN’
option input ‘REJECT’
option forward ‘REJECT’
option masq ‘1’
config forwarding
option src ‘lan’
option dest ‘wan’
config rule
option name ‘Allow-DHCP-Renew’
option src ‘wan’
option proto ‘udp’
option dest_port ‘68’
option target ‘ACCEPT’
option family ‘ipv4’
config rule
option name ‘Allow-Ping’
option src ‘wan’
option proto ‘icmp’
option icmp_type ‘echo-request’
option family ‘ipv4’
option target ‘ACCEPT’
config rule
option name ‘Allow-IGMP’
option src ‘wan’
option proto ‘igmp’
option family ‘ipv4’
option target ‘ACCEPT’
config rule
option name ‘Allow-DHCPv6’
option src ‘wan’
option proto ‘udp’
option dest_port ‘546’
option family ‘ipv6’
option target ‘ACCEPT’
config rule
option name ‘Allow-MLD’
option src ‘wan’
option proto ‘icmp’
option src_ip ‘fe80::/10’
list icmp_type ‘130/0’
list icmp_type ‘131/0’
list icmp_type ‘132/0’
list icmp_type ‘143/0’
option family ‘ipv6’
option target ‘ACCEPT’
config rule
option name ‘Allow-ICMPv6-Input’
option src ‘wan’
option proto ‘icmp’
list icmp_type ‘echo-request’
list icmp_type ‘echo-reply’
list icmp_type ‘destination-unreachable’
list icmp_type ‘packet-too-big’
list icmp_type ‘time-exceeded’
list icmp_type ‘bad-header’
list icmp_type ‘unknown-header-type’
list icmp_type ‘router-solicitation’
list icmp_type ‘neighbour-solicitation’
list icmp_type ‘router-advertisement’
list icmp_type ‘neighbour-advertisement’
option limit ‘1000/sec’
option family ‘ipv6’
option target ‘ACCEPT’
config rule
option name ‘Allow-ICMPv6-Forward’
option src ‘wan’
option dest ‘*’
option proto ‘icmp’
list icmp_type ‘echo-request’
list icmp_type ‘echo-reply’
list icmp_type ‘destination-unreachable’
list icmp_type ‘packet-too-big’
list icmp_type ‘time-exceeded’
list icmp_type ‘bad-header’
list icmp_type ‘unknown-header-type’
option limit ‘1000/sec’
option family ‘ipv6’
option target ‘ACCEPT’
config rule
option name ‘Allow-IPSec-ESP’
option src ‘wan’
option dest ‘lan’
option proto ‘esp’
option target ‘ACCEPT’
config rule
option name ‘Allow-ISAKMP’
option src ‘wan’
option dest ‘lan’
option dest_port ‘500’
option proto ‘udp’
option target ‘ACCEPT’
config redirect
option dest ‘lan’
option target ‘DNAT’
option name ‘OpenWRT-80’
option src ‘wan’
option src_dport ‘10081’
option dest_port ‘80’
option dest_ip ‘192.168.2.1’
config redirect
option dest ‘lan’
option target ‘DNAT’
option name ‘OpenWRT-22’
option src ‘wan’
option src_dport ‘10082’
option dest_port ‘22’
option dest_ip ‘192.168.2.1’
config redirect
option dest ‘lan’
option target ‘DNAT’
option name ‘PVE8006’
option src ‘wan’
option src_dport ‘10086’
option dest_port ‘8006’
option dest_ip ‘192.168.2.13’
config redirect
option dest ‘lan’
option target ‘DNAT’
option src ‘wan’
option src_dport ‘10083’
option dest_ip ‘192.168.2.150’
option name ‘YunShou443’
option dest_port ‘443’
config redirect
option dest ‘lan’
option target ‘DNAT’
option name ‘YunShou-vnc-5900’
option src ‘wan’
option src_dport ‘10085’
option dest_ip ‘192.168.2.150’
option dest_port ‘5900’
config redirect
option dest ‘lan’
option target ‘DNAT’
option name ‘temp’
option src ‘wan’
option src_dport ‘10087’
option dest_ip ‘192.168.2.15’
option dest_port ‘8006’
config redirect
option dest ‘lan’
option target ‘DNAT’
option src ‘wan’
option dest_ip ‘192.168.2.91’
option name ‘service8000-9500’
option src_dport ‘8000-9500’
option dest_port ‘8000-9500’
config redirect
option dest ‘lan’
option target ‘DNAT’
option src ‘wan’
option dest_ip ‘192.168.2.91’
option name ‘mysqladmin3307-8’
option src_dport ‘3307-3308’
option dest_port ‘3307-3308’
config redirect
option dest ‘lan’
option target ‘DNAT’
option name ‘RDP-33389’
option src ‘wan’
option src_dport ‘33389’
option dest_ip ‘192.168.2.241’
option dest_port ‘3389’
config redirect
option dest ‘lan’
option target ‘DNAT’
option name ‘pve-10084’
option src ‘wan’
option src_dport ‘10084’
option dest_port ‘22’
option dest_ip ‘192.168.2.91’
config redirect
option dest ‘lan’
option target ‘DNAT’
option name ‘rustdesk21115-9’
option src ‘wan’
option src_dport ‘21115-21119’
option dest_ip ‘192.168.2.91’
option dest_port ‘21115-21119’
config redirect
option dest ‘lan’
option target ‘DNAT’
option name ‘jitsi-10000’
option src ‘wan’
option src_dport ‘10000’
option dest_ip ‘192.168.2.100’
option dest_port ‘10000’
config redirect
option dest ‘lan’
option target ‘DNAT’
option name ‘drawpile-27750’
option src ‘wan’
option src_dport ‘27750’
option dest_ip ‘192.168.2.91’
option dest_port ‘27750’
config redirect
option dest ‘lan’
option target ‘DNAT’
option name ‘drawpile-27780’
option src ‘wan’
option src_dport ‘27780’
option dest_ip ‘192.168.2.91’
option dest_port ‘27780’
config redirect
option dest ‘lan’
option target ‘DNAT’
option name ‘Element-443’
option src ‘wan’
option dest_port ‘443’
option dest_ip ‘192.168.2.91’
option src_dport ‘443’
#2.3.2.NTP服务器
将OP作为NTP时钟的中转服务器,从WAN中时钟服务器取得时间,在LAN内部发布使用。
集群置入生产环境后,配置NTP Server为WAN中服务器即可。
#2.3.3.互联网配置
- LAN的DNS服务器设置为221.179.155.161
- FireWall中Zones下wanACCEPT要先设置Masquerading才能上网,后面再取消即可【灵异事件,多次被坑】。
#2.3.4.DNS主机名配置
#在/etc/config/dhcp中,增加下面的配置
config domain
option name ‘www.seuom.com’
option ip ‘192.168.2.91’
config domain
option name ‘meet.seuom.com’
option ip ‘192.168.2.100’
config domain
option name ‘matrix.seuom.com’
option ip ‘192.168.2.91’
#使得内部主机能够根据域名正确找到相应的内部IP地址。
#3.PVE集群配置
#3.1.进入母盘
北京项目用ventoy启动失败。采用的是压缩,解压的方式部署的pve节点。
#3.2.开机
#3.3.按F12
#3.4.进入EFI Shell
#3.5.选择镜像文件
#3.6.进入GRUB
#3.7.为物理机安装Ubuntu
安装完成后,即可进入ubuntu
#3.8.集群参数修改
不管是用ventoy启动还是,把分区的包直接压缩,解压到目标节点。需要修改一下几个参数
找到:/etc/hostname 修改主机名字
/etc/hosts
集群ip+ +主机名字
/etc/postfix/main.cf
修改图示文件
/etc/network/interface
修改网口的IP地址,根据实际规划填写
#3.9.解压分区文件
因为北京项目是arm64架构,ventoy启动失败。后续是采用将分区压缩,再解压的方式,部署的pve集群节点
#3.10.集群添加
node1上操作点击“创建集群”集群名字自取,务必注意设置PVE集群地址(192.168.100.x)其他默认即可。
点击“加入信息”再点击左下角“复制信息”。
然后登录node2把刚才复制的信息粘贴到“加入集群”里,node3重复node2操作,完成后如下图可以看到集群里node1、node2、node3节点。
(注意:加入集群完成后需要刷新页面才能正常使用,全部加入完成后,就可以在一个节点上管理集群中所有的节点了)
详解:
单击“加入pve-cluster”按钮之后后,集群加入过程将立即开始。节点加入集群后,其当前节点证书将被集群证书颁发机构(CA)签名的证书替换,这意味着当前会话将在几秒钟后停止工作。然后,可能需要强制重新加载Web 界面,并使用集群凭据重新登录。通俗点说,就是需要刷新下页面才能使用。
#3.11.集群退出与重入
#如果集群添加出现了问题,可以尝试下面的操作来退出并重新加入。关键是按照下面的步骤在待退出节点上删除所有信息。一般不需要进行本节操作,具体可搜索网上教程。
systemctl stop pve-cluster.service
systemctl stop corosync.service
pmxcfs -l
rm -rf /var/lib/corosync/*
rm /etc/pve/corosync.conf
rm -rf /etc/pve/corosync/*
killall pmxcfs
systemctl start pve-cluster.service
rm /etc/corosync/authkey
systemctl stop corosync.service
cd /etc/pve/nodes
ls
#delete other nodes’ directories.
rm -rf xxx
#如果新节点不能加入,需要对现有服务器根据当前主机数量设置下面的参数,详见PVE的quoram(?)机制。
pvecm expected 1
#下面的语句根据情况执行
systemctl start pve-cluster.service
pvecm status
pvecm delnode h02c01seu
pvecm delnode h03c01seu
pvecm delnode h04c01seu
reboot
cd /etc/pve/nodes
systemctl start pve-cluster.service
systemctl start corosync.service
#3.12.集群配置文件的修改
#集群配置文件有两个/etc/corosync/corosync.conf和/etc/pve/corosync.conf,前者会自动同步到其他节点,后者不会。
#一般修改是在一个主机上,编辑:
nano /etc/corosync/corosync.conf
#例如修改里面的集群cluster的IP地址
ring0_addr: 192.168.100.21
#然后确保能够拷贝粘贴
pvecm expected 1
#再复制到/etc/pve/corosync.conf
cp /etc/corosync/corosync.conf /etc/pve/
#必要时重启一下服务
systemctl restart corosync.service pve-cluster pvedaemon pveproxy pvestatd
#再到其它主机上,确认文件已经同步了
cat /etc/corosync/corosync.conf
然后确保能够拷贝粘贴
pvecm expected 1
再复制到/etc/pve/corosync.conf
cp /etc/corosync/corosync.conf /etc/pve/
必要时重启一下服务
systemctl restart corosync.service pve-cluster pvedaemon pveproxy pvestatd
#这样就可以了。
#3.13.Ceph安装配置
注意:前三步应该在之前的母盘制作中完成了,只需从第四步开始配置。
第一步:在node1界面中,选择“Ceph→Install Ceph”,点击“Install Ceph”按钮,选择“设定→信息→Start octopus installation”,点击“Start octopus installation”按钮如图。
第二步:选择“设定→安装”,输入“Y”之后,按回车键,自动安装Ceph,如图所示
第三步:安装完成之后,继续点击“下一步”按钮,安装成功之后,会提示安装成功的信息“installed ceph octopus successfully”,如图所示。
第四步:完成Ceph集群配置信息,包括公共网络IP(即使用ceph服务的网络,对应网络拓扑图中Service Lan-vmbr0)、集群网络IP等信息(即Ceph-cluster),Ceph集群配置,由于我是按照完后才写文档所以借别人的图用一下。
第五步:完成配置信息,Ceph安装成功
第六步:查看配置信息
node2与node3等同样安装
#3.14.Ceph配置监视器
Ceph安装完成之后,node1出现“监视器”和“管理员”中,还需要把node2和node3添加进来。在本项目中,监视器节点和管理员节点信息如图
从图中可以发现,监视器和管理网络使用的都是公共网络,没有使用集群网络。
Ceph的监视器和管理HA界面:
#3.15.Ceph配置OSD
由上图可知,其中sdc和sdd组成RAID1,作为系统盘使用,所以Ceph的OSD需要选择未做RAID的硬盘,每个节点的OSD只有2个。
本项目中,三个节点的Ceph的OSD磁盘配置信息如图
从node1中登录集群,在node1中,选择“Ceph→OSD→创建:OSD”,在磁盘中,逐次添加sdb、sdc这2块没有被使用的磁盘,数据库磁盘和WAL磁盘保持默认即可。
注意,在本项目中,数据库磁盘(DB Disk)和WAL磁盘(WAL Disk)我都选择了默认方式,其实做一下硬盘规划会更好。
创建其他节点的OSD与node1类似,这里不做详述。
#3.16.Ceph配置CephFS
选择“pve-node1→Ceph→CephFS→创建CephFS”,选择默认值创建CephFS,创建之后如图所示。
选择“pve-node1→Ceph→CephFS→元数据服务器→创建”,将node1添加进来,如图所示。
添加元数据服务器节点
将node1添加到元数据服务器之后,再用同样的方法将node2、node3添加到元数据服务器之中去。
添加好元数据服务器节点之后,可以在Ceph监控界面看到元数据服务器的监控信息,如图
元数据服务器监控界面
- Ceph配置Pools资源池
第一步:创建ssd_storage存储
选择“pve-node1→Ceph→Pools→创建”,点击“创建”按钮,创建名称为“swarmcfs”的存储,创建之后如图所示。swarmcfs将用于存储docker swarm的共享数据。
根据官方的文档,pg_num这个数值比较关键,如果不合适的话,Ceph会告警,官方建议:
若少于5个OSD, 设置pg_num为128。
5~10个OSD,设置pg_num为512。
10~50个OSD,设置pg_num为4096。
第二步:创建hdd_storage存储
选择“pve-node1→Ceph→Pools→创建”,点击“创建”按钮,创建名称为“hdd_storage”的存储,创建之后如图所示。
第三步:创建完成之后,node1左侧的存储菜单树中会出现这两个存储名称,如图所示,正常情况下,就可以在ssd_storage、hdd_storage上安装虚拟机了。
node2、node3的Pools资源池配置会同步node1资源池配置所以无需在单独配置(7.0特性)。
#4.安装麒麟V10虚拟机
#建立麒麟V10虚拟机。
#安装时:30GB,kylin,安装openssh
#安装vim nano等基本工具
#临时禁用 IPv6:
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=1
echo ‘passme’|sudo -S echo
sudo -s
apt-get update
apt-get install -y vim nano net-tools inetutils-ping
#永久禁用 IPv6,我们可以通过本文编辑器来修改 /etc/sysctl.conf 文件:
cat > “/etc/sysctl.conf”<<EOF
#add the following to disable IPv6
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1
EOF
#and execute:
sudo sysctl -p
图形化界面安装
#4.1.设置IP地址
ifconfig
ens18: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.2.250 netmask 255.255.255.0 broadcast 192.168.2.255
inet6 fe80::9434:9ff:fe58:7699 prefixlen 64 scopeid 0x20
ether 96:34:09:58:76:99 txqueuelen 1000 (Ethernet)
RX packets 8628 bytes 13746846 (13.7 MB)
RX errors 0 dropped 607 overruns 0 frame 0
TX packets 3860 bytes 287115 (287.1 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 96 bytes 7624 (7.6 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 96 bytes 7624 (7.6 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
cat > “/etc/netplan/00-installer-config.yaml” << EOF
network:
ethernets:
ens18:
addresses:
- 192.168.2.250/24
gateway4: 192.168.2.1
nameservers:
addresses:
- 192.168.2.1
search: []
version: 2
EOF
#apply it
netplan apply
#4.2.设置主机名称
查看
hostnamectl
Static hostname: club01
Icon name: computer-vm
Chassis: vm
Machine ID: 2ec0292ece534df094151a3823594ce1
Boot ID: a7edc295f0884808afa0ce4359be9aca
Virtualization: kvm
Operating System: Ubuntu 22.04 LTS
Kernel: Linux 5.15.0-56-generic
Architecture: x86-64
Hardware Vendor: QEMU
Hardware Model: Standard PC i440FX + PIIX, 1996
临时修改
hostname newname
永久修改
hostnamectl set-hostname club01
sed -i ‘s/^127.0.1.1 .*/127.0.1.1 club01/’ /etc/hosts
#应用IP地址设置,需要重新登录到新的IP地址中
netplan apply
#4.3.分区(parted模式)
parted /dev/sdb
(parted) mktable gpt #指定分区模式为GPT
(parted) print #输出分区信息
(parted) mkpart #划分新的分区
分区名称? sdb1 #分区名称 随意起
文件系统类型? [ext2]? ext4
pvcreate /dev/sdb1
vgcreate vg001 /dev/sdb1
lvcreate -n lv001 -l +100%FREE vg001
mkfs.xfs /dev/vg001/lv001
mkdir yidata
ls
mount /dev/vg001/lv001 /yidata
#5.Ceph相关命令
#5.1.OSD
#5.1.1.删除osd盘
ceph health detail查看ceph的健康状态
1、查看osd盘:Ceph osd tree
2、删除OSD盘步骤
ceph osd out osd.1
#停止服务
ceph osd down osd.1
systemctl stop ceph-osd@1
ceph osd tree
#删除map和auth
ceph osd crush remove osd.1
ceph auth del osd.1
ceph osd rm osd.1
ceph osd tree
#擦除硬盘
wipefs -af /dev/sdb
有可能会遇到错误,我遇到的是,sdb1盘备占用。
解决步骤:
dmsetup status
dmsetup remove vg001-lv001 ----挂载点
mkfs.ext4 /dev/sdb1
#5.1.2.删除crush map中已经没有osd的host
ceph osd crush remove
#5.2.Mon节点
重启mon节点:systemctl restart ceph-mon@p25c03 p25c03是主机名
#5.3.重启mgr(元数据)
systemctl restart ceph-mgr@p32c03 p32c03 是主机名
#5.4.删除pve节点
ceph -a stop p29c03 p29c03是主机名
service ceph stop p29c03
ceph mon remove p29c03
pvecm delnode p29c03
#5.5.删除虚拟机
qm destroy 100 100为虚拟机的标识
qm list 100
更多推荐
所有评论(0)