Self-Hosted Engine + GlusterFS超融合部署指南
oVirt是一款免费开源虚拟化软件,是RedHat商业版本虚拟化软件RHEV的开源版本。oVirt基于kvm,并整合使用了libvirt、gluster、patternfly、ansible等一系列优秀的开源软件,oVirt的定位是替代vmware vsphere,oVirt目前已经成为了企业虚拟化环境可选的解决方案,另外相比OpenStack的庞大和复杂,oVirt在企业私有云建设中具备部署和维护使用简单的优势。
Glusterfs是一个开源的分布式文件系统,是Scale存储的核心,能够处理千数量级的客户端。是整合了许多存储块(server)通过Infiniband RDMA或者 Tcp/Ip方式互联的一个并行的网络文件系统。
oVirt Self-Hosted Engine,简单来说,就是一个运行于虚拟机上的oVirt引擎,该虚拟机运行于oVirt引擎所管理的Host上.配置Self-Hosted Engine高可用虚拟化平台,至少需要两个及以上的Host.当一个Host宕机的时候,运行oVirt引擎的虚拟机,会自动迁移到环境中依然可用的Host上.达到高可用的目的.
在本次部署环境中,采用三台物理主机,每台物理主机配置三块网卡,其中一张作为管理网络,另外两张经过绑定,提供高达两万兆的网络环境,给GlusterFS作为数据交换网络通道.一块1.3T的磁盘(硬件RAID 5),在装完系统后,剩余1.1T配置GlusterFS文件系统给oVirt作为存储.
环境配置
OS | FQDN | PARTITION | MANAGE IP | DATA IP |
---|---|---|---|---|
CentOS 7.6 | ovm4.example.com | sda3 160G sda4 1.1T | ovirtmgmt 172.16.10.4 | bond0 100.100.100.4 |
CentOS 7.6 | ovm5.example.com | sda3 160G sda4 1.1T | ovirtmgmt 172.16.10.5 | bond0 100.100.100.5 |
CentOS 7.6 | ovm6.example.com | sda3 160G sda4 1.1T | ovirtmgmt 172.16.10.6 | bond0 100.100.100.6 |
注:以下步骤,有标记为全部节点的需要在三个节点上分别执行,步骤中只贴出第一个节点的配置,其余节点配置步骤需要根据实际来修改.
- 安装CentOS 7.6 1804,最小化安装,并配置好hostname与第一张网卡的IP(全部节点)
- 配置双网卡绑定(全部节点)
# more /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BONDING_OPTS='mode=4 miimon=100 xmit_hash_policy=2'
ONBOOT=yes
DEFROUTE=no
NM_CONTROLLED=no
IPV6INIT=no
BOOTPROTO=static
IPADDR=100.100.100.4
NETMASK=255.255.255.0
#
# more ifcfg-ens1f0
DEVICE=ens1f0
MASTER=bond0
SLAVE=yes
ONBOOT=yes
DEFROUTE=no
NM_CONTROLLED=no
IPV6INIT=no
#
# more ifcfg-ens2f0
DEVICE=ens2f0
MASTER=bond0
SLAVE=yes
ONBOOT=yes
DEFROUTE=no
NM_CONTROLLED=no
IPV6INIT=no
- 编辑/etc/hosts文件(全部节点)
# more /etc/hosts
172.16.10.4 ovm4.example.com ovm4
172.16.10.5 ovm5.example.com ovm5
172.16.10.6 ovm6.example.com ovm6
100.100.100.4 ovm4stor.example.com ovm4stor
100.100.100.5 ovm5stor.example.com ovm5stor
100.100.100.6 ovm6stor.example.com ovm6stor
配置完这两部,重启network,并在节点间互ping IP与FQDN,确保网络没有问题
systemctl restart network
- 关闭selinux,并设置时间同步(全部节点)
# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
# setenforce 0
# ntpdate time.windows.com
- 配置SSH信任关系(全部节点)
# ssh-keygen -t rsa
# ssh-copy-id ovm4
# ssh-copy-id ovm5
# ssh-copy-id ovm6
# ssh-copy-id ovm4stor
# ssh-copy-id ovm5stor
# ssh-copy-id ovm6stor
# ssh-copy-id ovm4.example.com
# ssh-copy-id ovm5.example.com
# ssh-copy-id ovm6.example.com
# ssh-copy-id ovm4stor.example.com
# ssh-copy-id ovm5stor.example.com
# ssh-copy-id ovm6stor.example.com
# ssh-copy-id 172.16.10.4
# ssh-copy-id 172.16.10.5
# ssh-copy-id 172.16.10.6
# ssh-copy-id 100.100.100.4
# ssh-copy-id 100.100.100.5
# ssh-copy-id 100.100.100.6
- 确认DNS配置文件/etc/resolv.conf,安装常用的rpm包,最好先update下
# yum update -y
# yum install -y net-tools wget
GlusterFS部署
官方文档建议配置GlusterFS要求至少三个节点,每个节点至少两个分区,系统分区与GlusterFS存储分区,
- 分区,格式化并挂载块文件(全部节点)
# parted /dev/sda
mkpart primary 190G -1 #使用parted命令将sda磁盘里剩余的空间划分为一个主分区
# mkfs.xfs -i size=512 /dev/sdb4 #格式化
# mkdir -p /gluster_bricks
# blkid #用blkid命令查看/dev/sda4 UUID
/dev/sda4: UUID="5f77844e-ae6c-477a-8000-c936df9adaba" TYPE="xfs" PARTLABEL="primary" PARTUUID="b26a3423-c074-4c90-99d0-f173339afba9"
# echo 'UUID=5f77844e-ae6c-477a-8000-c936df9adaba XFS DEFAULT 0 0' >> /etc/fstab
# mount -a && mount
# df -h #查看是否挂载成功,并重启系统确认
- 安装glusterfs组件并配置防火墙(全部节点)
# yum install -y vdsm-gluster
# systemctl enable --now glusterd
# firewall-cmd --add-service=glusterfs --permanent
# firewall-cmd --reload
- 将分布式存储主机加入到信任主机池(全部节点)
# gluster peer probe ovmstor5
# gluster peer probe ovmstor6
# gluster peer probe ovmstor5.example.com
# gluster peer probe ovmstor6.example.com
# gluster peer probe 100.100.100.5
# gluster peer probe 100.100.100.6
查看主机池中主机的状态,重启所有节点验证磁盘挂载,glusetef服务及连通性
# gluster peer status
注意:一旦建立了这个池,只有受信任的成员能将新的服务器探测到池中。新服务器无法探测池,必须从池中探测。
- 配置3副本的GlusterFS复制卷(ovm4节点)
# mkdir -p /gluster_bricks/data/ #这一步要在全部节点上先执行
# gluster volume create gv_data replica 3 transport tcp ovm4stor:/gluster_bricks/data/ ovm5stor:/gluster_bricks/data/ ovm6stor:/gluster_bricks/data/ #此处配置的主机名为双网卡绑定IP所对应的主机名
# gluster volume start gv_data #启动Gluster卷
# gluster volume info #可在所有节点上执行,确认Gluster卷状态
Volume Name: gv_data
Type: Replicate
Volume ID: a80edc75-e322-488b-a0be-287dcf7008de
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: ovm4stor:/gluster_bricks/data
Brick2: ovm5stor:/gluster_bricks/data
Brick3: ovm6stor:/gluster_bricks/data
Options Reconfigured:
performance.client-io-threads: off
nfs.disable: on
transport.address-family: inet
到这里,GlusterFS配置完成,此次部署中由于条件限制没有使用GlusterFS分布式复制卷,企业环境中最好使用分布式复制卷,性能与安全并得.
oVirt Self-Hosted Engine部署
- 在部署前可以先安装 oVirt Engine Appliance,该组件是用来创建Engine virtual machine的
# yum install -y http://resources.ovirt.org/pub/yum-repo/ovirt-release43.rpm #安装oVirt yum源
# yum install -y cockpit cockpit-ovirt-dashboard #安装Linux系统控制台组件
# systemctl enable --now cockpit.socket
# firewall-cmd --add-service=cockpit --permanent
# yum install -y ovirt-engine-appliance
- 安装部署工具
# yum install -y ovirt-hosted-engine-setup
# yum install -y screen
- screen开启屏幕记录,防止断网...
screen
- 运行部署脚本
# hosted-engine --deploy
- 此处应该有记录(并没有)
这里是官方文档 - 在本次部署中,主要有几点不同
- 在选择存储类型时候,需要选择glusterfs,并填入路径:
ovm4stor:/gv_data
Please specify the storage you would like to use (glusterfs, iscsi, fc, nfs)[nfs]:glusterfs
- 指定冗余mount options的时候,填入
backup-volfile-servers=ovm5stor:ovm6stor
:
If needed, specify additional mount options for the connection to the hosted-engine storage domain []:backup-volfile-servers=ovm5stor:ovm6stor
脚本跑完,单节点的Self-Hosted Engine就部署完了.
- 配置管理机的hosts文件,就可以进入Administration Portal管理其他节点了.
- 增加其他两个Host步骤在界面上完成,在Host界面上点击
new
new host
deploy
配置完成,在界面上,能作为Self-Hosted Engine运行的主机,前面会有个crown.
crown
在Virtual Machines选项中,可以看到运行着Self-Hosted Engine的虚拟机,前面也有个皇冠.选中该虚拟机,点击右侧Migrate标签,在下拉框中可以看到下面界面,说明部署完成
Migrate