1. 程式人生 > >Centos6.7 Openstack映象製作.md

Centos6.7 Openstack映象製作.md

Centos6.7 Openstack映象製作

映象需求

  • 磁碟分割槽,自動resizefs(虛擬機器啟動時自動將額外分割槽擴充套件到/ cloud-init)
  • 沒有硬體 MAC address information
  • ssh server 執行
  • 禁用防火牆、selinux
  • 訪問instance use ssh public key (cloud-init)
  • 接受 user-data 和metadata
  • qemu-guest-agent (支援操作虛擬機器,改密碼等操作 開機自動啟動)

映象製作

環境準備

NOTE: ‘#’開頭的是root許可權執行的命令 ‘virsh #’開頭的是virsh命令列下執行的命令

硬體環境

專案 版本
伺服器型別 VMware虛擬機器
伺服器系統 CentOS7.1503
伺服器網路 橋接模式
伺服器IP 192.168.1.111

軟體環境

專案 版本
hypervisor qemu-kvm-1.5.3-141.el7_4.4
映象網路模式 Bridge
映象版本 CentOS7.1
VNC客戶端 VNC-Viewer-6.17.1113-Windows-64bit

kvm環境搭建

軟體安裝

安裝kvm等工具

# yum install -y qemu-kvm libvirt libvirt-python  \
libguestfs-tools virt-install

啟動服務

# systemctl enable libvirtd && systemctl start libvirtd

網路設定

由於我用的是VMware虛擬機器,啟動的映象也採用bridge模式會使後續的遠端連線除錯更加方便 新增網橋br0需修改ifcfg-ens33與ifcfg-br0(dhcp模式),配置如下:

# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
DEVICE="ens33"
ONBOOT="yes"
BRIDGE="br0"
# cat /etc/sysconfig/network-scripts/ifcfg-br0
TYPE="bridge"
BOOTPROTO="dhcp"
DEVICE="br0"
ONBOOT="yes"

映象製作

建立磁碟(建立將來的Openstack映象)

# qemu-img create -f qcow2 /tmp/CentOS67.qcow2 30G

啟動虛擬機器

# virt-install --name CentOS67 --vcpu 4 --ram 4096 \
--disk path=/tmp/CentOS67.qcow2  \
--network bridge=br0  \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=rhel6  \
--cdrom=/data/img/CentOS-6.7-x86_64-minimal.iso
##cdrom後面的映象需要從CentOS官網下載

連線vnc進行系統安裝系統初始化

檢視vnc埠

virsh # vncdisplay CentOS67
:0

外部連線的vnc埠為590x例如上面就為5900,以192.168.1.111:5900連線之後進行安裝系統 如果要實現分割槽自動伸縮,必須在安裝系統的時候手動將檔案系統格式配置成ext4 lvm不支援自動伸縮功能 安裝完系統之後就開始一一實現功能

基礎軟體包

yum install -y ntp vim wget net-tools tcpdump strace \
sysstat iotop pciutils lsof telnet iftop lrzsz \
unzip dos2unix ipmitool psmisc tree

基礎優化配置

echo "
* soft nproc 655360
* hard nproc 655360
* soft nofile 655360
* hard nofile 655360" >>/etc/security/limits.conf
sed -i -e "/UseDNS/c UseDNS no" /etc/ssh/sshd_config
sed -i -e "/StrictHostKeyChecking/c StrictHostKeyChecking no\nUserKnownHostsFile /dev/null" /etc/ssh/ssh_config
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 關閉SElinux
echo "net.ipv4.ip_forward=1
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0" >> /etc/sysctl.conf
sysctl -p
service postfix stop
service iptables stop
chkconfig --del iptables
# 禁用防火牆
chkconfig --del postfix

磁碟分割槽,自動resizefs(虛擬機器啟動時自動將額外分割槽擴充套件到/ cloud-init)

redhat系可以通過cloud-utils-growpart工具來實現,安裝即可用***非lvm才可用***

yum install -y epel-release
yum install cloud-utils-growpart

訪問instance use ssh public key (cloud-init),安裝即可用

安裝cloud-int

預設安裝之後會把ssh密碼登陸關掉需手動開啟

yum install cloud-init -y

開啟ssh密碼登陸

  • 修改/etc/cloud/cloud.cfg
users:
 - default

disable_root: 0
ssh_pwauth:   1
  • 修改/etc/ssh/sshd_config
sed -i '/^#Port/c Port 22' /etc/ssh/sshd_config
sed -i '/^PasswordAuthentication/c PasswordAuthentication yes' /etc/ssh/sshd_config
  • 安裝ssh客戶端
yum install -y openssh-clients

安裝qemu-guest-agent

yum install -y qemu-guest-agent
chkconfig --add qemu-ga

接受 user-data 和metadata

保證虛擬機器能連線到openstack元資料即可,一般情況用dhcp元資料,所以用不到zeroconf route,需將zeroconf禁用掉,否則zeroconf router在虛擬機器開機時會自動生成路由169.254.0.0/16 0.0.0.0 導致無法與元資料通訊 編輯vim /etc/sysconfig/network-scripts/ifup-eth註釋掉以下部分

if [ -z "${NOZEROCONF}" -a "${ISALIAS}" = "no" -a "${REALDEVICE}" != "lo" ]; then
    ip route add 169.254.0.0/16 dev ${REALDEVICE} metric $((1000 + $(cat /sys/class/net/${REALDEVICE}/ifindex))) scope link
fi

或者

echo "NOZEROCONF=yes" >> /etc/sysconfig/network

重啟網路 service network restart

沒有硬體 MAC address information

centos6中udev rule會在伺服器啟動時生成mac地址資訊,如果不清的話eth0網絡卡將無法正常使用 做完以上操作 清除mac資訊

rm -f /etc/udev/rules.d/70-persistent-net.rules

如果網絡卡配置不是按照上面配的,網絡卡配置中也可能有mac地址 需要刪掉

以上完成,就可以清除掉操作資訊,關閉虛擬機器匯入上傳映象

清除操作痕跡

> /root/.bash_history

關閉虛擬機器

poweroff

壓縮映象,便於傳輸

qemu-img convert -c -O qcow2 CentOS67.qcow2 CentOS67_convert.qcow2

測試

映象建立完先在vmvare上啟動虛擬機器測試一下,用建立的映象啟動虛擬機器

cp  CentOS67_convert.qcow2  CentOS67_convert_test.qcow2
qemu-img resize  CentOS67_convert_test.qcow2 +30G
#擴容映象 驗證映象分割槽自動擴充套件功能,首次啟動之後虛擬還需重啟一次才會擴容分割槽
virt-install --name centos67 --vcpu 2 --ram 4096 \
--disk /tmp/CentOS67_convert_test.qcow2 \
--import --network bridge=br0,model=virtio  \
--graphics vnc,listen=0.0.0.0 --noautoconsole

啟動之後一一驗證功能,驗證沒問題之後,上傳至openstack

上傳

  • 拷貝映象到Openstack控制節點
  • 轉化成raw格式 Openstack glance nova後端用ceph的話raw格式最快
qemu-img convert -f qcow -O raw CentOS67_convert_test.qcow2 CentOS67.raw
  • 上傳至Openstack
source ~/keystonerc_admin
glance image-create --name centos6.7 \
--file  CentOS67.raw --dish-format raw \
--container-format bare --is-public true --progress