Centos kvm+ceph

來源:互聯網
上載者:User

標籤:des   http   io   ar   color   os   使用   for   on   


  • 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 安裝kvm1. 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 [email protected]1
ssh-copy-id [email protected]
ssh-copy-id [email protected]

安裝其他節點

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製作和使用虛擬機器範本

Centos kvm+ceph

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.