• Proxmox虚拟环境搭建


    一、Proxmox VE简介

    ProxmoxVE 是一个完整的、开源的企业虚拟化服务器管理平台。它在单个平台上紧密集成了 KVM 管理程序和 Linux 容器(LXC)、软件定义的存储和网络功能。通过集成的基于 web 的用户界面,您可以轻松地管理虚拟机和容器、集群高可用性或集成的灾难恢复工具。

    企业级的特性和100% 基于软件的重点使 Proxmox VE 成为虚拟化您的 IT 基础设施、优化现有资源以及以最低成本提高效率的完美选择。您可以轻松地虚拟化甚至最苛刻的 Linux 和 Windows 应用程序工作负载,并随着需求的增长动态扩展计算和存储,确保您的数据中心能够针对未来的增长进行调整。

    二、Proxmox VE与ZStack、VMware、OpenStack比较

    在这里插入图片描述

    三。相关概念

    1. ISO Images Files:proxmox本身是一个定制化的linux操作系统,系统内置了一个web管理页面可以和在系统中使用命令一样建议操作虚拟机的创建和维护。
    2. 数据中心:web管理控制台上可以管理多个节点,每个节点是一个iso镜像安装的操作系统,这些节点组成了数据中心。
    3. PVE:proxmox virtual machine,在web控制台上是一个proxmox虚拟机节点,每个节点是一个iso镜像安装的操作系统,虚拟机内核为KVM。
    4. CT虚拟机: 基于CT模板使用LXC隔离技术实现的容器,VE 安装后默认配置的 apt 软件源和 CT (LXC) 容器模板源均是官方默认的,国内使用性能不佳,建议替换为 清华 Tuna 提供的国内镜像源,速度将有一个较大的提升,其中模板可以理解为容器镜像,默认的镜像有centos,debian等。

    四。部署安装

    最新版本下载地址:https://www.proxmox.com/en/downloads/category/iso-images-pve
    安装环境:hyper-v虚拟机安装。
    安装两个pve节点(后续安装集群):

    1. https://192.168.240.183:8006/
    2. https://192.168.240.184:8006/
      以下安装两个环境相同。

    安装pve

    在hyerv上右键新建虚拟机,内存和cpu根据需要设置自选,选择iso文件
    在这里插入图片描述
    点击完成,启动虚拟机,出现界面点击安装,选中Install 回车,国家输入China,密码随意,测试简单点直接123456,邮箱必填。
    主机名随机,确保ip地址和window网络中defaultswitch网卡的ip区间一致,网关就是default switch的ip,

    这里要特别注意hostname自己好规划成每个pve不一样的值,比如这里可以修改为 pve1.example1
    ,否则在搭建集群加入的时候名字冲突就会出现无法加入情况。
    在这里插入图片描述
    这是我default switch的ip
    在这里插入图片描述
    点击下一步,安装完成后,关机,删除掉系统挂载的iso镜像,修改为空,重启,打开虚拟机。
    在这里插入图片描述
    访问上图的网站地址:
    在这里插入图片描述
    输入安装系统的用户名和密码,选择简体中文登录
    在这里插入图片描述

    创建虚拟机

    修改apt和ct源

    PVE 安装后默认配置的 apt 软件源和 CT (LXC) 容器模板源均是官方默认的,国内使用性能不佳,建议替换为 清华 Tuna 提供的国内镜像源,速度将有一个较大的提升。

    如果 pve 官网 iso 镜像下载较慢,也可在 tuna 提供的镜像站下载:https://mirrors.tuna.tsinghua.edu.cn/proxmox/iso/

    使用web页面打开webshell页面,点击左侧pve
    在这里插入图片描述

    替换 apt 软件源

    替换前建议先更新下证书,否则可能由于证书不可用导致 https 无法使用,进而无法下载所有软件。

    $ sudo apt install apt-transport-https ca-certificates
    
    • 1

    首先替换通用软件源, Debian 的软件源配置文件是 /etc/apt/sources.list,备份后将其中内容修改为以下即可。

    默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释

    deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
    deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
    deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
     deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
    deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
     deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
    deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
     deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    之后替换 pve 软件源,pve 镜像默认的 pve 软件源配置文件是 /etc/apt/sources.list.d/pve-enterprise.list ,备份后将其中内容替换为以下即可:

    deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian bullseye pve-no-subscription
    
    • 1

    最后更新下,速度很快:

    sudo apt-get update
    
    • 1
    替换pve模板源

    替换前建议先更新下证书,否则可能由于证书不可用导致 https 无法使用,进而无法下载所有软件。
    执行更新

    $ sudo apt install apt-transport-https ca-certificates
    
    • 1

    修改 CT Templates (LXC 容器) 源
    将 /usr/share/perl5/PVE/APLInfo.pm 文件中默认的源地址 http://download.proxmox.com 替换为 https://mirrors.tuna.tsinghua.edu.cn/proxmox 即可。

    cp /usr/share/perl5/PVE/APLInfo.pm /usr/share/perl5/PVE/APLInfo.pm_back
    sed -i 's|http://download.proxmox.com|https://mirrors.tuna.tsinghua.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm
    
    • 1
    • 2

    针对 /usr/share/perl5/PVE/APLInfo.pm 文件的修改,重启后生效。

    systemctl restart pvedaemon.service
    
    • 1

    测试下载模板
    在这里插入图片描述
    下载完成后
    在这里插入图片描述
    下载到本地缓存中(/var/lib/v2/template/cache,可以手动下载放到该目录),之后就可以用这个模板来创建ct虚拟机了
    在这里插入图片描述

    上传iso镜像

    在这里插入图片描述
    点击local选择iso镜像,点击上传
    iso镜像地址找对应系统官网即可,centos7:http://isoredirect.centos.org/centos/7/isos/x86_64/
    在这里插入图片描述
    ios镜像中已经本地拥有了centos7镜像(缓存目录:/var/lib/vz/template/iso,也可以手工下载后上传)。
    在这里插入图片描述

    iso镜像创建虚拟机

    1. 选择创建虚拟机(名称随意)
      在这里插入图片描述
    2. 选择之前上传的iso镜像
      在这里插入图片描述
    3. 系统默认,磁盘,cpu根据个人需要选择大小,启动虚拟机
    开启虚拟化

    如果出现错误:TASK ERROR: KVM virtualisation configured, but not available. Either disable in VM configuration or enable in BIOS.
    说明 hyper-v或者你的vmware上的虚拟机没有开启虚拟化
    hyper-v配置

    1、要实现 hyper-v 嵌套虚拟化,首先,我们以管理员身份打开 powershell
    2、在命令行中输入 get-vm ,列出我们自己的虚拟机
    PS C:\Users\Windows> Get-VM
    3、输入 Get-VMProcessor -VMName 主机名 | fl
    我们可以看到嵌套虚拟化选项(ExposeVirtualizationExtensions )的值为 False,设置为 True 即可,前提虚拟机先关机。
    4、输入Set-VMProcessor -VMName 主机名 -ExposeVirtualizationExtensions $true
    正常情况下,是没有输出的,
    再输入Get-VMProcessor -VMName 主机名 | fl         查看设置结果
    经过上面 4 步,我们就可以在虚拟机中再进行虚拟化了。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    vmware配置
    在这里插入图片描述
    重新开机web界面开启proxmox创建的100虚拟机,启动后就是一步步安装centos7,略过

    连接网络

    我这里创建的虚拟机是centos7,需要自己规划ip地址,
    我的pve的ip是:192.168.240.183,我给这台pve上的虚拟机设置ip段:192.168.211.0/24
    centos设置ip:修改/etc/sysconfig/network-scripts/ifcfg-eth0

    ONBOOT=yes
    IPADDR=192.168.211.2
    NETMASK=255.255.255.0
    GATEWAY=192.168.240.183
    
    • 1
    • 2
    • 3
    • 4

    修改dns服务器 /etc/resolv.conf

    nameserver 8.8.8.8
    
    • 1

    注意你修改的ip网段对于pve(192.168.240.183)是不可见的,所以你需要在pve上添加路由

    ip route add 192.168.211.0/24 dev vmbr0
    
    • 1

    此时可以ping通192.168.240.183,但是ping通baidu或者hyperv的宿主机都是不通的,包过去了不知道怎么回来。
    此时可以通过nat 将来自211.0的数据包,转换为原地址为240.183,就可以实现数据来回了
    pve上执行。

    iptables -t nat -A POSTROUTING -s '192.168.211.0/24' -o vmbr0 -j MASQUERADE
    
    • 1

    此时能ping通,但是重启后路由和nat就丢了,需要添加到网卡文件
    修改/etc/network/interfaces

    iface vmbr0 inet static
            address 192.168.240.183/24
            gateway 192.168.240.177
            bridge-ports eth0
            bridge-stp off
            bridge-fd 0
            post-up ip route add 192.168.211.0/24 dev vmbr0
            post-up iptables -t nat -A POSTROUTING -s '192.168.211.0/24' -o vmbr0 -j MASQUERADE
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    重启测试即可

    -j MASQUERADE 智能SNAT替换

    ct模板创建虚拟机

    这里切换到另外一台pve来创建CT虚拟机,后续加入集群可以测试网络互通
    我这里创建的虚拟机是centos8-stream,需要自己规划ip地址,
    我的pve的ip是:192.168.240.184,我给这台pve上的虚拟机设置ip段:192.168.212.0/24,
    ct虚拟机ip:192.168.212.2
    centos设置ip:修改/etc/sysconfig/network-scripts/ifcfg-eth0
    点击右侧创建CT
    在这里插入图片描述
    选择本地缓存的模板
    在这里插入图片描述
    设置ip地址:
    在这里插入图片描述
    dns设置为:8.8.8.8即可,填错了可以点击网络修改。
    同理在240.184添加路由和nat,修改网卡/etc/network/interfaces

    post-up ip route add 192.168.212.0/24 dev vmbr0
    post-up iptables -t nat -A POSTROUTING -s '192.168.212.0/24' -o vmbr0 -j MASQUERADE
    
    • 1
    • 2

    在这里插入图片描述

    数据中心多节点

    多节点

    目前我们两个pve都是自己独立的web界面,可以将其中的pve添加到一个集群中,在同一个web界面管理,这里183作为集群管理,184作为一个节点。
    在183上执行命令

    pvecm create clust    //创建集群clust
    pvecm status          //查看集群状态
    
    • 1
    • 2

    或者在web控制台上点击数据中心,创建集群。
    在这里插入图片描述
    183上创建完成后点击加入信息,点击复制
    在这里插入图片描述
    在184上点击加入集群,粘贴信息,输入183的root密码,加入集群完成
    在这里插入图片描述

    加入失败

    
    detected the following error(s):
    * this host already contains virtual guests
    TASK ERROR: Check if node may join a cluster failed!
    
    • 1
    • 2
    • 3
    • 4

    注意能加入集群的两个前提

    1. pve集群创建钱不能先创建虚拟机,比如先规划好集群在创建虚拟机。
    2. pve的主机名不能冲突,不能都是pve。

    如果一开始主机名称取的相同的需要将其中一台的主机名修改

    vi /etc/hosts
    vi /etc/hostname
    hostnamectl set-hostname 新的主机名
    重启
    cp -r /etc/pve/nodes/旧主机名/* /etc/pve/nodes/新主机名/
    重启
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    加入集群后在183和184web控制台都可以管理两个节点
    在这里插入图片描述

    内节点容器互通

    在各自节点内部添加一个ct容器,ip规划如下
    在这里插入图片描述
    节点pve:192.168.240.183,添加ct容器ip:192.168.211.2/24 网关:192.168.240.183
    节点pve:192.168.240.184,添加ct容器ip:192.168.212.2/24 网关:192.168.240.184
    如果直接在容器内部ping是不能互通的,需要通过路由和nat来实现,路由和nat不熟悉的参考:
    https://blog.csdn.net/liaomin416100569/article/details/126782055?spm=1001.2014.3001.5501

    192.168.240.183网络文件/etc/network/interfaces

      # 这是表示当容器内部有ping命令到节点时,回城怎么走,或者节点ping容器时怎么走
      post-up ip route add 192.168.211.0/24 dev vmbr0
      # 这里的nat表示所有来自容器211的访问请求,源ip都替换成183请求,这样就可以通过183访问外部访问。
      post-up iptables -t nat -A POSTROUTING -s '192.168.211.0/24' -o vmbr0 -j MASQ
    UERADE
      # 这里表示通过183访问212段的网络,将请求丢给184处理,184在做一个183nat即可。
      post-up ip route add 192.168.212.0/24 dev vmbr0 via 192.168.240.184
      #这里表示184过来的请求转换成183来访问就可以访问183容器内部了。
      post-up iptables -t nat -A POSTROUTING -s '192.168.240.184/24' -o vmbr0 -j MASQUERADE
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    重启网卡 查看路由和iptables,重启了网卡后,虚拟机都需要重启否则,虚拟机和节点间不通

    --------------------重启网络
    root@pve:~# systemctl restart networking
    --------------------路由
    root@pve:~# ip route
    default via 192.168.240.177 dev vmbr0 proto kernel onlink 
    192.168.211.0/24 dev vmbr0 scope link 
    192.168.212.0/24 via 192.168.240.184 dev vmbr0 
    192.168.240.0/24 dev vmbr0 proto kernel scope link src 192.168.240.183 
    --------------------nat插卡
    root@pve:~# iptables -S -t nat
    -P PREROUTING ACCEPT
    -P INPUT ACCEPT
    -P OUTPUT ACCEPT
    -P POSTROUTING ACCEPT
    -A POSTROUTING -s 192.168.211.0/24 -o vmbr0 -j MASQUERADE
    -A POSTROUTING -s 192.168.212.0/24 -o vmbr0 -j MASQUERADE
    -A POSTROUTING -s 192.168.211.0/24 -o vmbr0 -j MASQUERADE
    -A POSTROUTING -s 192.168.240.0/24 -o vmbr0 -j MASQUERADE
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    192.168.240.184网络文件/etc/network/interfaces

      post-up ip route add 192.168.212.0/24 dev vmbr0
      post-up iptables -t nat -A POSTROUTING -s '192.168.212.0/24' -o vmbr0 -j MASQ
    UERADE
      post-up ip route add 192.168.211.0/24 dev vmbr0 via 192.168.240.183
      post-up iptables -t nat -A POSTROUTING -s '192.168.240.183/24' -o vmbr0 -j MASQUERADE
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    Java类成员和函数的执行顺序(static、非static、代码块、构造函数)
    大学生游戏静态HTML网页设计 (HTML+CSS+JS仿英雄联盟网站15页)
    振南技术干货集:C语言的一些“骚操作”及其深层理解(4)
    SpringBoot笔记:SpringBoot集成MyBatisPlus、Sqlite实战
    2022-07-04 反省
    计算机专业毕业论文java毕业设计网站SSM学生信息管理系统[包运行成功]
    【宏基因组学】微生物宏基因组学论文摘要集锦
    【regex】正则表达式
    性能优化必备——火焰图
    使用Golang Web3库进行区块链开发
  • 原文地址:https://blog.csdn.net/liaomin416100569/article/details/128134043