Proxmox集群网络配置
用过vmware和virtualbox的人大概都知道虚拟机是怎么回事儿,这种虚拟化软件通常装在windows环境下,而且是单机环境。那么随着云计算与大数据的发展,虚拟化技术也是得到了极大的发展,比如分布式的虚拟化软件OpenStack和Proxmox VE等。
对于这4种常用的虚拟化软件我的使用感受就是在windows上virtualbox比vmware好用,服务器上Proxmox比OpenStack好用。windows上的不说了,本文重点说一下服务器上的虚拟软件使用感受,之前用过windows server服务器上装的virtualbox,然后再开各种各样的虚拟机,总体感受就是很慢,在相同的环境下跑相同的程序结果很慢得多。可能与这种virtualbox是半裸的虚拟化技术有关(寄居虚拟化),vmware也是这种技术。
说到虚拟化技术,下面的图更加解释得直观:
而在服务器上Proxmox和OpenStack则表现更加稳定。OpenStack配置要求高,安装配置过程复杂,但是可以用Fuel进行一键安装,总体来说没有Proxmox易用。而Proxmox只需要30分钟就能安装系统,还有很多操作系统的模版可以使用。Proxmox比较稳定,我们实验室和我之前实习的公司都是用的Proxmox集群来作为生成环境,基本上没有出什么大问题。
接下来说说应用:Proxmox主要是创建KVM虚拟机和lxc容器,KVM虚拟机需要iso镜像(几个G),lxc容器需要tar.gz模版(100M左右)。
首先安装系统,去官网下载Proxmox iso镜像,最新版是5.3.我前段时间装的是5.2,但基本上没有差别,我们实验室的集群是4.2,也没有很大的区别。Proxmox 是基于debian的系统(ubuntu也是基于debian的系统),我觉得他是裸机虚拟机技术(可能理解不准确,它集成了多种虚拟化技术),但这不重要,重要的是Proxmox 的安装就和普通linux系统一模一样,而且比装一个centos或者ubuntu更简单,更快!!!
安装教程很多,服务器上装需要做个U盘系统,也可以在vmware和virtualbox上装,如下图,按照提示一步一步走即可,ip配置那一步先用默认的配置!!!
本文要重点说的是proxmox的集群模式和网络模式!!!
安装好之后proxmox 登陆命令行界面有一个连接:
https://192.168.1.100:8006,注意是https,不是http。
这是网页端的管理界面,通过网页上点点鼠标可以省去很多复杂的操作命令。
下面将proxmox ve简称为pve,对与pve集群,他不是传统的主控集群(一个主节点几个从节点)因为主控集群容易产生单点故障如hadoop集群、spark集群等。pve集群的每个节点完全是对等的,没有主从之分,也就是挂了某个节点,其余节点不受影响,只是挂了那个节点上的虚拟机有影响。而虚拟机只是pve某个节点上的一个进程而已,但是虚拟机的存储可以共享,也就是说每个pve节点的硬盘可以共享给其他节点。
集群搭建过程:
首先分别把每台服务器的pve系统装好,然后通过web UI可以看到是这种的:
单机: ,集群:
pve1是系统的主机名,可以通过 vi /etc/hostname修改,主机名修改后重启生效。
一、网络配置
1.规划网络:
192.168.1.125 pve1192.168.1.126 pve2
网上说搭建集群要在交换机上开多播,其实不开也可以。
2.在每个机器上修改ip地址:
通过命令修改 vi /etc/network/interfaces,如果通过网页端修改ip也可以,但修改是保存在临时文件/etc/network/interfaces.new里,都是重启生效。
这里要重点说一下有很多中网络方案,常见的有2种网络模式:
a.只有一个网卡
这种方式下虚拟机使用10.10.10.x网段,宿主机集群的通信和虚拟机的通信都走一个网卡,虚拟机通过nat转发。
b.有两个网卡:
这种模式下就宿主机集群走网卡1,而虚拟机之间的通信走网卡2。这种模式下多个服务的网卡2之间要走单独的网线,也就是双网卡双网线,这样每个节点上的虚拟机都能互通。
3.在宿主机上为虚拟机开启转发规则:(这一步先跳过,创建虚拟机时再做)
重点说明:
1 开启IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/ip_forward
恢复规则:iptables-restore > /etc/iptables.up.rules
开机自动恢复规则,把恢复命令添加到启动脚本:
echo '/sbin/iptables-restore /etc/iptables.up.rules' >>/etc/rc.d/rc.local
宿主机重启后规则会失效,最好设置开机自动恢复规则!
4.然后按照这种配置规则把每个服务器的ip都改好:
/etc/init.d/networking restartreboot
二、创建集群
通过命令:
systemctl start corosync因为没有开多播会corosync会启动失败,需要手动生成authkey:corosync-keygensystemctl start pvedaemonsystemctl start pve-cluster然后:1.在主服务器pve1上创建集群:名字为abcpvecm create abc2.分别在其余服务器上加入到该集群abc:pvecm add 192.168.1.125 3.查看状态:pvecm status 或 pvecm nodes
(重点)如果报错,意外说明:
单机版默认会集群pvedaemon和pve-cluster,而不会启动corosync。
创建集群最核心的就是集群同步服务corosync,corosync成功后会生成配置文件corosync.conf,,如果启动失败后需要手动修改配置文件:
logging {debug: offto_syslog: yes}nodelist {node {name: pve1nodeid: 1quorum_votes: 1ring0_addr: 192.168.1.125}node {name: pve2nodeid: 2quorum_votes: 1ring0_addr: 192.168.1.126}}quorum {provider: corosync_votequorum}totem {cluster_name: abcconfig_version: 2interface {bindnetaddr: 192.168.1.125ringnumber: 0}ip_version: ipv4secauth: onversion: 2}
这是集群赖以成功的关键因素!!!
三、文件目录说明:
/etc/pve 是文件系统挂载
这个目录是只读的,只有当pve-cluster启动后才会有内容,pve-cluster关掉服务后, 这个目录会被清空!!!他是属于www-data 用户组,就是web UI的文件目录,因此不能修改!关掉pve-cluster服务后,web UI也就关掉了,/etc/pve也就清空了。
/etc/corosync 是集群通信服务(corosync)所在的本地目录
注意!
我们配置是只关注/etc/corosync/和/etc/pve/目录,但它会自动关联一些目录:
通过以下查看相关的目录:
find / -name"pve"
find / -name"corosync"
如果配置出错了,需要将相关的配置全部删除干净,再重新配置:
官方文档说需要重装系统,其实不用,删除这些配置即可,亲测成功!
rm -rf /var/lib/pve-cluster/*rm -rf /var/lib/corosync/*rm -rf /var/lib/rrdcached/db/*rm -rf /etc/pve/*rm -rf /etc/corosync/*
由于/etc/corosync/和/etc/pve/是只读的,因此修改corosync.conf的时候需要先把只读权限去掉,修改后再恢复:
四、启动过程:
单机版:开机默认先启pvedaemon服务,再启pve-cluster服务。
集群版:开机默认先启pvedaemon服务,再启pve-cluster服务,最后启动corosync服务。
前提是保证/etc/pve/为空,如果不为空则第二步的pve-cluster服务就会启动失败。
启动corosync的过程:就是将本地目录的/etc/corosync/corosync.conf复制到集群目录/etc/pve/下面。
这三个步骤对应着三个重要命令:
systemctl start pvedaemon
systemctl start pve-cluster
systemctl start corosync
报错authkey不存在,需要手动生成authkey,命令为: corosync-keygen
单机版的服务说明
systemctl start pvedaemon 默认开机启动pvedaemon. service服务
systemctl startpve-cluster 默认开机启动pve-cluster. service服务
pve-cluster启动后会在/etc/pve下面生成文件,/etc/pv/下的所有文件和目录都属于 root 用户和www-data 用户组。systemctl stop pve-cluster关掉服务后, /etc/pve目录会清空!!!
如果要搭建集群还需要另外启动corosync服务:
systemctl start corosync
corosync-keygen
默认不会启动,创建一个集群时才会启动它!
相关命令
systemctl stoppvedaemonsystemctl stoppve-clustersystemctl stopcorosyncsystemctl statuspvedaemonsystemctl statuspve-clustersystemctl statuscorosyncsystemctl statussystemctl statuscorosync.servicepvecm status 查看集群节点状态详细pvecm nodes 查看集群节点状态简单
五、通过web UI点点鼠标来创建集群:
如果觉得上述通过命令创建集群比较繁琐,可以用过通过web UI点点鼠标来创建集群。
然后在弹出框输入集群名字如abc,弹框输出TASK OK表示成功:
可以看到创建集群的步骤为:
2.再其他节点上输入命令加入创建好的集群中去:
这些信息来自于:pve1的网页上的Join Information:
这一步也可以直接输入命令:
pvecm add pve1
pvecm add pve1 –force 强制添加
即在pve2节点上输入命令pvecm add pve1,pve1是集群abc中已经存在的节点名。
添加节点成功输出TASK OK表示成功!
然后刷新网页即可看到:这是登陆pve1和pve2都是一样的页面了!!!
这时通过任意一个节点的ip登陆看到的效果都是一样的!!!
https://192.168.1.125:8006
https://192.168.1.126:8006
由于篇幅原因本文只介绍集群创建过程,后面再接着将如果配置存储和创建虚拟机模版等等内容。
Proxmox集群网络配置相关推荐
- kubernetes集群网络配置方案——flannel部署
部署环境: CentOS Linux release 7.2 64位 10.10.0.103 node01 10.10.0.49 node02 安装过程: # yum install flannel ...
- Windows集群网络配置最佳做法
要开始做集群了,找点资料来看看: 阅读提示:本文为 Microsoft Windows 2000 或 Windows Server 2003 服务器群集的网络基础结构提供了服务器群集要求和最佳做法.若 ...
- Kubernetes: 集群网络配置 - flannel
参考: [ Kubernetes 权威指南 ] Kubernetes 集群搭建可以参考 [ Kubernetes : 多节点 k8s 集群实践 ] 在多个 Node 组成的 Kubernetes 集群 ...
- K8s 从懵圈到熟练 – 集群网络详解
作者 | 声东 阿里云售后技术专家 导读:阿里云 K8S 集群网络目前有两种方案:一种是 flannel 方案:另外一种是基于 calico 和弹性网卡 eni 的 terway 方案.Terway ...
- K8S从懵圈到熟练 – 集群网络详解
阿里云K8S集群网络目前有两种方案,一种是flannel方案,另外一种是基于calico和弹性网卡eni的terway方案.Terway和flannel类似,不同的地方在于,terway支持Pod弹性 ...
- k8s ubuntu cni_K8S从懵圈到熟练 – 集群网络详解
阿里云K8S集群网络目前有两种方案,一种是flannel方案,另外一种是基于calico和弹性网卡eni的terway方案.Terway和flannel类似,不同的地方在于,terway支持Pod弹性 ...
- Kubernetes系列教程(二)---集群网络之Flannel核心原理
来自:指月 https://www.lixueduan.com 原文:https://www.lixueduan.com/post/kubernetes/02-cluster-network/ 本文主 ...
- 云原生容器安全之安全狗对云原生集群网络流量可观测性的思考
问题背景 在云原生技术的广泛普及和实施过程中,笔者接触到的很多用户需求里都涉及到对云原生集群的可观测性要求.实现集群的可观测性,是进行集群安全防护的前提条件.而在可观测性的需求中,集群中容器和容器之间 ...
- 【VMware vSAN 7.0】6.4 延伸集群网络设计—我们有软硬件解决方案
目录 1. vSAN简介 1.1 vSAN 概念 1.1.1 vSAN 的特性 1.2 vSAN术语和定义 1.3 vSAN 和传统存储 1.4 构建 vSAN 群集 1.5 vSAN 部署选项 1. ...
最新文章
- 【转】做正确的事情,等着被开除(Do the right thing, Wait to get fired)
- Android NDK JNI 简单例子2
- Content Provide详解
- linux 输入是否为数字,【shell】Linux shell 之 判断用户输入的变量是否为数字
- 混频通信的matlab仿真,基于MATLAB的扩频通信系统仿真研究—上海交通大学
- 【LA3415 训练指南】保守的老师 【二分图最大独立集,最小割】
- 卸任后的马云“忙”坏了,健美大赛、蹦迪、修空调、种蘑菇,真相看懵了
- 史上最佳GAN被超越!生成人脸动物高清大图真假难辨,DeepMind发布二代VQ-VAE
- 数据结构c语言版马睿课后答案,清华大学出版社-图书详情-《C语言程序设计习题解答与实验指导》...
- 微信小程序云开发教程-后端接口分析和接口返回值的格式定义
- 读取jar包中的资源文件
- 大学计算机应用与基础第二版答案,大学计算机应用基础(第2版)上机指导与习题集...
- c++控制台版 俄罗斯方块 闪瞎眼
- 网站cc攻击的防御步骤
- 设计模式(三)代理设计模式
- 在高德地图上添加折线
- 武僧一龙狂殴韩国拳王 用中国功夫醉拳轻松赢战
- kafka 启动时提示 /brokers/ids/1001 is: NODEEXISTS
- html基本页面的构成,HTML网页的基本组成概述
- 复杂网络分析工具总结