PVE
软件源/etc/apt/souces.list
apt-get update命令获取软件源中的软件包信息
企业版软件源
/etc/apt/sources.list.d/pve-enterprise.list
如果你没有订阅Proxmox VE企业版,可以将企业版软件源配置信息在软件源配置文件中注释掉(在该行开头插入一个#字符),
以避免系统发出错误提示信息。这种情况下可以配置使用pve-no-subscriptin软件源。
将免费版软件源配置在/etc/apt/sources.list
deb http://download.proxmox.com/debian jessie pve-no-subscription
测试版软件源 /etc/apt/sources.list
deb http://download.proxmox.com/debian jessie pvetest
系统软件升级
apt-get update
apt-get dist-upgrade
Debian使用ifup和ifdown命令来启停网络接口,所有的网络配置信息都保存 在/etc/network/interfaces中
注意:
Proxmox VE并不直接编辑配置文件/etc/network/interfaces 。
实际上,我们会先把网络配置变更保存在临时文件/etc/network/interfaces.new里,
然后在你重启服务器时再 用该配置文件覆盖/etc/network/interfaces。
必须提醒的是,你仍然可以直接编辑配置文件来修改网络配置。Proxmox VE会尽可能跟踪并使用用户设置的最新网络配置。
但仍然推荐使用GUI来调整网络配置,因为这能让你有效避免意外错误。
替换国内源
cd /etc/apt/sources.list.d
mv pve-enterprise.list pve-enterprise.list.bak
wget http://download.proxmox.wiki/debian/proxmox-ve-release-6.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg
echo "deb http://download.proxmox.wiki/debian/pve stretch pve-no-subscription" >/etc/apt/sources.list.d/pve-install-repo.list
cat /proc/version #查看系统版本
cd /etc/apt
mv sources.list sources.list.bak
vi sources.list
deb http://mirrors.aliyun.com/debian/ stretch main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ stretch main non-free contrib
deb http://mirrors.aliyun.com/debian-security stretch/updates main
deb-src http://mirrors.aliyun.com/debian-security stretch/updates main
deb http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib
deb http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib
apt-get update
apt-get dist-upgrade
apt-get install net-tools -y
配置NTP时间服务器
/etc/systemd/timesyncd.conf
默认配置 [Time]
Servers=ntp1.example.com ntp2.example.com ntp3.example.com ntp4.example.com
重启时钟同步服务后(systemctl restart systemd-timesyncd),你可以查看日志以验证新配置的 NTP服务器是否已被启用
(journalctl –since -1h -u systemd-timesyncd)
外部监控服务器
可以搭建外部监控服务器,外部监控服务器配置信息保存在/etc/pve/status.cfg文件
graphite http://graphiteapp.org
influxdb https://www.influxdata.com/time-series-platform/influxdb
硬盘健康状态监控
Proxmox VE集成了smartmontools软件包
你可以运行如下命令获取磁盘的状态信息:
smartctl -a /dev/sdX
其中/dev/sdX是某个本地磁盘的设备文件名称。
如果命令输出如下结果:
SMART support is: Disabled
你就需要运行以下命令启用 SMART监控:
smartctl -s on /dev/sdX
默认状态下,smartctltools守护进程smartd将会被启动并自动运行,每 30分钟对 /dev/sdX和/dev/hdX进行一次扫描,
如果检测到的错误和警告信息,就向服务器的 root用户发送e-mail。 可以运行man smartd和man smartd.conf命令,以获取关于smartd配置方法的更多 信息。
LVM管理器
pvs
vgs
lvs
默认创建data逻辑卷,并用于存储基于块存储的虚拟机镜像,而/var/lib/vz是根文件系统下的一个路径
目前一个集群最多可拥有32个物理节点(也可以更多,关键在于网络时延)。
使用pvecm可以创建新的集群,可以向集群新增节点,可以从集群删除节点,可以查看集群状态信息,也可以完成其他各种集群管理操作。
Proxmox VE集群文件系统(pmxcfs)用于确保配置信息透明地发送到集群中所有节点,并保持一致。
以集群方式使用Proxmox VE有以下优势:
集中的web管理
多主集群架构:从任何一个节点都可以管理整个集群
pmxcfs:以数据库驱动的文件系统保存配置文件,并通过 corosync在确保所有节点的配置信息实时同步。
虚拟机和容器可方便地在物理服务器节点之间迁移。
快速部署。
基于集群的防火墙和 HA服务
集群部署要求
所有节点必须在同一子网,以便各个节点使用 corosync多播通信 (有些交换机默认设置关闭了 IP多播,需要先手工启用多播通信)#6.0版本单播
如果你需要配置HA,则最少需要3个物理服务器节点,以保证集群多数票机制生效。此外,还需要保证所有节点使用同一版本的Proxmox VE。
我们建议为集群通信分配专用网卡,特别是在配置共享存储的情况下,分配专用网卡能确保集群通信的稳定可靠。
pvecm status
pvecm nodes
为避免虚拟机ID冲突,Proxmox VE规定新节点加入集群前不能配置有任何虚拟机,,新加入节点/etc/pve目录下的原有配置信息将被集群配置全部覆盖。
如果节点上已有虚拟机,可以首先使用vzdump将所有虚拟机备份,然后删除节点上的虚拟机,待加入集群后再用新的虚拟机ID恢复原有虚拟机。
添加位于不同网段的节点
集群网络和该节点在不同网段,你需要使用ringX_addr参数来指定节点在集群网络内使用的地址。
pvecm add IP-ADDRESS-CLUSTER -ring0_addr IP-ADDRESS-RING0
如果你要使用冗余环协议,你还需要设置 ring1_addr 参数以传递第二个集群网络地址。
删除节点(必须在执行删除命令前先关闭待删除节点,并且确保被删除点不再启动 (在原集群网络中)。这是非常非常重要的! )
pvecm delnode hp4
如果你在原集群网络中重新启动被删除的节点,你的集群会因此而崩溃,并且很难恢复到一个干净的状态。
如果出于某种原因,你需要将被删除节点重新加入原集群,需要按如下步骤操作:
格式化被删除节点,并重新安装Proxmox VE。
如前一节所述步骤,将该节点重新加入集群
文件系统恢复
如果你的Proxmox VE服务器出现故障,例如硬件故障,你可以将pmxcfs的数据库文件/var/lib/pve-cluster/config.db复制到一台新的 Proxmox VE服务器。
在新服务器上(没有配置任何虚拟机或容器),停止pve-cluster服务,覆盖config.db文件(需要设置权限为 0600),然后修改/etc/hostname和/etc/hosts和故障服务器对应文件一致,
最后重启新服务器并检查是否恢复正常(不要忘记虚拟机/容器镜像数据)。
将一个节点从集群中删除之后,推荐的做法是重新安装 Proxmox VE。这样可以确保所 有的集群/ssh密钥和共享配置数据都被彻底清除。
从故障节点恢复/迁移虚拟机
对于未配置使用HA的虚拟机而言,如果其磁盘镜像保存在共享存储上:
可以通过将虚拟机配置文件从/etc/pve下故障节点对应目录手工移动到其他正常节点对应目录的方式(从而改变该虚拟机从属的节 点),达到将虚拟机从故障节点手工迁移的目的。
mv /etc/pve/nodes/node1/qemu-server/100.conf /etc/pve/nodes/node2/ #ID为100的虚拟机从故障节点node1迁移到正常节点node2
(使用以上方法迁移虚拟机之前,必须确保故障节点已经确实关机或者被隔离。)
content设置存储服务所要保存的数据类型
images KVM-Qemu虚拟机镜像
rootdir 容器镜像数据
vztmpl 容器模板
backup 虚拟机备份文件
iso ISO镜像
pvesm status
pvesm list
pvesm path
Proxmox VE支持两种 USB直通方法:
基于主机的USB直通
基于SPICE协议的 USB直通
(这种直通方式需要SPICE客户端的支持。如果你给虚拟机添加了SPICE USB端口,
那么就可以直接将SPICE客户端上的USB设备直通给虚拟机使用(例如输入设备或硬件加密狗))
虚拟机管理命令 qm
qm create 300 -ide0 4 -net0 e1000 -cdrom proxmox-mailgateway_2.1.iso
qm start 300
qm shutdown 300 && qm wait 300
qm shutdown 300 && qm wait 300 -timeout 40
虚拟机配置文件保存在Proxmox集群文件系统中,并可以通过路径/etc/pve/qemuserver/.conf访问。
和/etc/pve下的其他文件一样,虚拟机配置文件会自动同 步复制到集群的其他节点。
虚拟机配置文件就是普通文本文件,可以直接使用常见文本编辑器(vi,nano等)编辑。这也是日常对虚拟机配置文件进行细微调整的一般做法。但是务必注意,必须彻底关闭虚拟机,然后再启动虚拟机,修改后的配置才能生效。
更好的做法是使用qm命令或WebGUI来创建或修改虚拟机配置文件。Proxmox VE能够直接将大部分变更直接应用到运行中的虚拟机,并即时生效。该特性称为“热插拔“,并无需重启虚拟机。
Proxmox VE使用 LXC作为底层容器技术。我们把LXC当作底层库来调用,并利用了其众多功能特性。
直接使用LXC相关工具的难度太高,我们将有关工具进行了包装, 以“Proxmox容器管理工具”的形式提供给用户使用,该工具的名字是pct。
容器管理工具pct和Proxmox VE紧密集成在一起,不仅能够感知Proxmox VE集群环境,而且能够象虚拟机那样直接利用 Proxmox VE的网络资源和存储资源。
你甚至可以在容器上配置使用 Proxmox VE防火墙和HA高可用性。
我们的主要目标是提供一个和虚拟机一样的容器运行环境,同时能避免不必要的代价。 我们称之为“系统容器”。
注意
如果你想运行微容器(如docker,rkt等),最好是在虚拟机里面运行它。
你既可以为集群内的所有主机设置防火墙策略,也可以为单个虚拟机和容器定义策略。
防火墙宏, 安全组,IP集和别名等特性将大大简化策略配置管理。 尽管所有的防火墙策略都保存在集群文件系统,但基于 iptables的防火墙服务在每个节点都是独立运行的,从而为虚拟机提供了完全隔离的防护。这套分布式部署的防火墙较传统防火墙提供了更高的带宽。
Proxmox VE防火墙将网络划分为不同区域 : HOST VM
集群级别的防火墙配置
/etc/pve/firewall/cluster.fw
启用防火墙后,默认所有主机的通信都将被阻断。唯一例外是集群网络内的WebGUI(端口8006)和ssh(端口22)访问可以继续使用
为简化配置,你可以创建一个名为“管理地址”的IPSet,并把所有的远程管理终端IP地址添加进去。这样就可以创建策略允许所有的远程地址访问 WebGUI。
主机级别的防火墙配置
/etc/pve/nodes//host.fw
该文件中的配置可以覆盖cluster.fw中的配置
虚拟机和容器级别的防火墙配置
/etc/pve/firewall/.fw
每个虚拟网卡设备都有一个防火墙启用标识。你可以控制每个网卡的防火墙启用状态。 在设置启用虚拟机防火墙后,你必须设置网卡上的防火墙启用标识才可以真正启用防火墙。
防火墙需要网络设备标识配置的配合,在启用网卡的防火墙标识后你必须重启虚拟机或容器才可以。
安全组是一个防火墙策略的集合。安全组属于集群级别的防火墙对象,可用于所有的虚拟机防火墙策略。
服务及管理命令
pve-firewall start/stop/status
Proxmox VE端口列表
Web界面:8006
VNC控制台:5900-5999
SPICE proxy:3128
sshd(用于集群管理):22
rpcbind:111
corosync多播(集群通信使用):5404, 5405 UDP
LXC vs LXD vs Proxmox容器 vs Docker
LXC是Linux内核容器的用户空间接口。通过强大的 API和易用的工具,Linux用户能够轻松地创建并管理系统容器。LXC,及其前任OpenVZ,专注于系统虚拟化,也就是让你在容器内运行完整的操作系统,其中你可以ssh方式登录,增加用户,运行apache服务器等。
LXD基于LXC创建,并提供了更好的用户体验。在底层,LXD通过liblxc调用 LXC 及其Go绑定来创建和管理容器。LXD基本上是LXC工具和模版系统的的另一个选择,只是增加了诸如远程网络控制等新的特性。
Proxmox容器也专注于系统虚拟化,并使用LXC作为其底层服务。Proxmox容器工具称为pct,并和Proxmox VE紧密集成在一起。这意味着 pct能够利用集群特性,并像虚拟机那样充分利用相同的网络和存储服务。你甚至可以使用Proxmox VE防火墙,备份和恢复,设置容器HA。可以使用Proxmox VE API通过网络管理容器的全部功能。
Docker专注于在容器内运行单一应用。你可以用 docker工具在主机上管理 docker 实例。但不推荐直接在Proxmox VE主机上运行docker。