当前位置: 首页 >> 虚拟化 >> 【方案】虚拟化方案Centos kvm+ceph >> 正文

【方案】虚拟化方案Centos kvm+ceph

3年前 (2021-10-16)     作者:Jiaozn     分类:虚拟化     阅读次数:3071     评论(0)    


Centos kvm+ceph

一. centos6.5 安装kvm

1. disable selinux

2. 确认支持intel虚拟化

3. 安装需要的包

4.设置桥接网络

5.运行kvm instance(此步骤仅用于测试环境是否安装成功)

6.连接到kvm

二. centos安装ceph(firefly版本)

准备机器

管理机安装

安装其他节点

三. kvm使用ceph

创建osd pool(块设备的容器)

设置账号对该pool的读写权限

用qemu-img在pool中创建img

验证img创建成功

用kvm创建一个虚拟机

Centos kvm+ceph

centos 7无法用公用源安装ceph, 包依赖不满足

centos 6可以安装,但内核不支持rbd,需要更新内核

rpm --importhttp://elrepo.org/RPM-GPG-KEY-elrepo.org


rpm -Uvhhttp://elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm


yum --enablerepo=elrepo-kernel install kernel-lt-y )


一. centos6.5 安装kvm

1. disable selinux

vi /etc/selinux/config

reboot


2. 确认支持intel虚拟化

egrep '(vmx|svm)' --color=always /proc/cpuinfo

空代表不支持


3. 安装需要的包

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

yum install virt-manager libvirt qemu-kvm openssh-askpass kvm python-virtinst


service libvirtd start

chkconfig libvirtd on


emulator 一般是qemu-kvm,也可能是其他。

/usr/libexec/qemu-kvm -M ? 查看支持的host系统类型 (我碰到的情况,启动虚拟机时提示host类型rhel6.5不支持,virsh edit ...将host中的rhel6.5改为pc通过)

/usr/libexec/qemu-kvm -drive format=? 查看支持的设备类型 (必须支持rbd,如果没有显示,需要安装支持的版本。源码安装git clone git://git.qemu.org/qemu.git;./configure --enable-rbd。 可能未必产生qemu-kvm,也许是qemu-system-x86_64之类的,那就需要在配置文件里将emulator换成编译好的可执行文件)


4.设置桥接网络

yum install bridge-utils

vi /etc/sysconfig/network-scripts/ifcfg-br0


DEVICE="br0"

NM_CONTROLLED="no"

ONBOOT=yes

TYPE=Bridge

BOOTPROTO=none

IPADDR=192.168.0.100

PREFIX=24

GATEWAY=192.168.0.1

DNS1=8.8.8.8

DNS2=8.8.4.4

DEFROUTE=yes

IPV4_FAILURE_FATAL=yes

IPV6INIT=no

NAME="System br0"


vi /etc/sysconfig/network-scripts/ifcfg-eth0


DEVICE="eth0"

NM_CONTROLLED="no"

ONBOOT=yes

TYPE="Ethernet"

UUID="73cb0b12-1f42-49b0-ad69-731e888276ff"

HWADDR=00:1E:90:F3:F0:02

DEFROUTE=yes

IPV4_FAILURE_FATAL=yes

IPV6INIT=no

NAME="System eth0"

BRIDGE=br0


/etc/init.d/network restart


5.运行kvm instance(此步骤仅用于测试环境是否安装成功)

virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /dev/cdrom --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm


6.连接到kvm

如果需要安装gui

yum -y groupinstall "Desktop" "Desktop Platform" "X Window System" "Fonts"


二. centos安装ceph(firefly版本)

准备机器

一台安装管理机:admin

一台monitor:node1

两台数据机osd: node2, node3

一台使用ceph rbd的客户端: ceph-client


所有机器上都创建ceph用户,给予sudo权限,所以后续命令以ceph用户执行。

所有机器关闭 selinux

所有机器关闭Defaults requiretty(sudo visudo)

所有机器检查iptables等防火墙设置,节点间通讯使用22,6789,6800等端口,防止被拒绝


管理机安装

添加repo

sudo vim /etc/yum.repos.d/ceph.repo


[ceph-noarch]

name=Ceph noarch packages

baseurl=http://ceph.com/rpm-{ceph-release}/{distro}/noarch

enabled=1

gpgcheck=1

type=rpm-md

gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc


我将baseurl替换为baseurl=http://ceph.com/rpm-firefly/el6/noarch


执行sudo yum update && sudo yum install ceph-deploy


使得admin用ssh key登陆其他机器

ssh-keygen

ssh-copy-id ceph@node1

ssh-copy-id ceph@node2

ssh-copy-id ceph@node3


安装其他节点

admin机器上

mkdir my-cluster

cd my-cluster


初始化配置:

ceph-deploy new node1

此时会在当前目录下创建配置文件ceph.conf,编辑ceph.conf,

添加osd pool default size = 2, 这是因为我们只有2个osd

添加rbd default format = 2, 将默认的rbd image格式设置为2,支持image的clone功能

添加journal dio = false,


在所有节点上安装ceph

ceph-deploy install admin node1 node2 node3


初始化监控节点

ceph-deploy mon create-initial node1


初始化osd节点

ssh node2

sudo mkdir /var/local/osd0

exit

ssh node3

sudo mkdir /var/local/osd1

exit


ceph-deploy osd prepare node2:/var/local/osd0 node3:/var/local/osd1

ceph-deploy osd activate node2:/var/local/osd0 node3:/var/local/osd1

(此处两个命令应该在数秒内结束,若长时间不响应直至300秒超时,考虑是否有防火墙因素。)


将配置拷贝到各个节点

ceph-deploy admin admin-node node1 node2 node3


sudo chmod +r /etc/ceph/ceph.client.admin.keyring

ceph health

ceph status

希望得到active_clean状态


三. kvm使用ceph

创建osd pool(块设备的容器)

ceph osd pool create libvirt-pool 128 128


设置账号对该pool的读写权限

假设我们使用的账号是libvirt(如果使用admin账号默认拥有所有权限,无需设置)

ceph auth get-or-create client.libvirt mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=libvirt-pool'


用qemu-img在pool中创建img

qemu-img create -f rbd rbd:libvirt-pool/new-libvirt-image 10G

这一步我遇到了Unknown file format 'rbd', 这是因为低版本的qemu-img不支持rbd.

但是我的qemu-img版本号已经够了,猜测是我的包在编译时没有加rbd的选项。无奈强制安装了版本号更低的 http://ceph.com/packages/qemu-kvm/centos/x86_64/qemu-img-0.12.1.2-2.355.el6.2.cuttlefish.x86_64.rpm 才支持)


验证img创建成功

rbd -p libvirt-pool ls


用kvm创建一个虚拟机

1. 用virsh命令或virt-manager创建一个虚拟机

需要一个iso或img 在/var/lib/libvirt/images/下

我将它命名为test。 cd rom中选择一个iso,比如debian.iso.不选硬盘。


2. virsh edit test


将该vm的配置修改为使用rbd存储

找到

<devices>


在其后添加如下:

<disk type='network' device='disk'>

<source protocol='rbd' name='libvirt-pool/new-libvirt-image'>

<host name='{monitor-host}' port='6789'/>

</source>

<target dev='vda' bus='virtio'/>

</disk>


3. 创建访问ceph的账号

cat > secret.xml <<EOF

<secret ephemeral='no' private='no'>

<usage type='ceph'>

<name>client.libvirt secret</name>

</usage>

</secret>

EOF


sudo virsh secret-define --file secret.xml

<uuid of secret is output here>

保存用户libvirt的key

ceph auth get-key client.libvirt | sudo tee client.libvirt.key

保存产生的uuid


sudo virsh secret-set-value --secret {uuid of secret} --base64 $(cat client.libvirt.key) && rm client.libvirt.key secret.xml


virsh edit test


add auth

...

</source>

<auth username='libvirt'>

<secret type='ceph' uuid='9ec59067-fdbc-a6c0-03ff-df165c0587b8'/>

</auth>


4. 开启虚拟机安装os

同时 virsh edit test

将配置的boot方式从cdrom改为hd


5.安装结束重启虚拟机,会boot from vda,也就是rbd


6. 下一步可以使用rbd snap, rdb clone, virsh, guestfs制作和使用虚拟机模板


除非注明,发表在“Jiaozn的博客”的文章『【方案】虚拟化方案Centos kvm+ceph』版权归Jiaozn所有。 转载请注明出处为“本文转载于『Jiaozn的博客』原地址https://www.jiaozn.com/reed/726.html
0

评论

发表评论   

昵称*

E-mail*(建议输入,以便收到博主回复的提示邮件)

网站

分享:

支付宝

微信