筆記cloud

虛擬機的組成
—> 內核虛擬化模塊(KVM)
—> 系統設備仿真(QEMU)
—> 虛擬機管理程序(LIBVIRT)
一個XML文件(虛擬機配置聲明文件)
— 位置:/etc/libvirt/qemu
一個磁盤鏡像文件(虛擬機的硬盤)
— 位置:/var/lib/libvert/images/
虛擬化平臺的安裝
]# yum -y install qemu-kvm \
libvirt-daemon \
libvirt-client \
libvirt-daemon-driver-qemu
]# systemctl start libvirtd
查看後端文件
]# cd /var/lib/libvert/images
]# qemu-img info node1.img
連接其他人的虛擬機(命令)
]# virsh -c qemu+ssh://172.242.8.157/system
連接其他人的虛擬機(圖形)
將自己的公鑰傳給想要連接的主機上
]# ssh-copy-id -i /root/.ssh/id_rsa.pub 172.242.8.157
]# ssh 172.242.8.157 // 驗證是否可以無密碼登錄
]# virt-manager
文件—>添加連接—>管理程序(QEMU/KVM)—>連接到遠程主機—>主 機名(172.242.8.157)—>連接
Virsh管理虛擬機
— virsh nodeinfo // 查看KVM節點(服務器)信息
— virsh list | list --all // 列出虛擬機
— virsh dominfo 虛擬機名稱 // 查看指定虛擬機的信息
— virsh start | reboot | shutdown 虛擬機名稱 // 開機 | 關機 | 重起
— virsh destroy 虛擬機名稱 // 強制關閉指定的虛擬機
— cirsh autostart 虛擬機名稱 // 將指定虛擬機設爲開機自動運行
Virsh管理虛擬網絡(虛擬交換機)
— net-list // 查看虛擬網絡
— net-define vbr.xml // 創建虛擬網絡
— net-undfine vbr // 刪除虛擬網絡
— net-start vbr // 啓動虛擬網絡
— net-destroy vbr // 停止虛擬網絡
— net-edit vbr // 修改vbr網絡的配置
— net-autostart vbr // 設置vbr虛擬網絡開機自啓動
常用磁盤鏡像文件格式
raw qcow2
磁盤管理命令
格式:
— qemu-img 命令 參數 塊文件名稱 大小
常用命令:
— create 創建一個磁盤
— convert 轉換磁盤格式
— info 查看磁盤信息
— snapshot 管理磁盤快照
qemu-img
創建新的鏡像盤文件
— qemu-img create -f qcow2 disk.img 50G
查詢鏡像盤文件的信息
— qemu-img info disk.img
-b 使用後端模版文件
— qemu-img create -b disk.img -f qcow2 disk1.img
Lftp使用
]# yum -y install lftp
]# lftp 172.242.5.110 // 可以查看ftp裏的東西
]# lftp sftp://172.242.8.165 -u root // 對方即使沒開ftp服務,也可 以用ftp+ssh遠程上傳下載文件

命令沒有的時候用yum provides 命令
createrepo . //自定義yum源,創建repodata目錄
createrepo --update . //更新repodata目錄
systemctl (un)mask firewalld //進程鏈接放入/dev/null 防止其他程序調用啓動
lsmod //linux 內核模塊

lrzsz這個包可以用xshell 使用rz sz命令

搭建KVM服務器
配置虛擬網橋(交換機)
準備
禁用selinux配置文件
vim /etc/selinux/config
]# SELINUX=disabled
禁用firewalld
]# systemctl stop firewalld
]# systemctl (un)mask firewalld
停掉所有虛擬機
]# virsh list
]# virsh destory node1 | node2

將配置文件後綴爲.xml的快捷方式刪除
]# cd /etc/libvert/qemu/networks/autostart
]# rm -f *
停掉其餘虛擬網絡
]# virsh net-list
]# virsh net-destroy private1 | private2 | public1 | public2

創建網橋(vbr)
拷貝虛擬交換機vbr.xml配置文件到 /etc/libvert/qemu/networks 目錄下
<network>
<name>vbr</name> // net-list 看到的名字 倆名字一致
<bridge name="vbr"/> // ifconfig看到的名字
<forward mode="nat"/> // 交換機要通過內核的nat機制上網
<ip address="192.168.1.254" netmask="255.255.255.0">
// 虛擬交換機的接口ip,也是所有虛擬機的默認網關
<dhcp>
<range start="192.168.1.100" end="192.168.1.200"/>
// dhcp分配的虛擬機ip範圍100~200
</dhcp>
</ip>
</network>
創建虛擬交換機(在/etc/libvert/qemu/networks 目錄下)
]# virsh net-define vbr.xml // 創建
]# virsh net-list --all // 可以看到vbr
]# virsh net-start vbr // 開啓
]# ifconfig // 也可以看到
]# virsh net-autostart vbr // 開機自啓動
]# virsh net-start private1 // 開啓
]# virsh net-autostart private1 // 開機自啓動

]# virsh net-edit private1 //修改虛擬交換機配置(加dhcp)
// edit是vim的調用

重起服務
]# virsh net-destroy private1
]# virsh net-start private1
自定義虛擬機安裝(模版)
網絡yum源安裝和配置
安裝軟件
]# yum -y install httpd
]# systemctl start httpd
]# systemctl enable httpd
掛載
]# mkdir /var/www/html/centos7
]# vim /etc/fstab
/var/lib/libvirt/images/iso/CentOS7-1708.iso /var/www/html/centos7 iso9660 defaults 0 0
配置yum源
]# vim /etc/yum.repos.d/centos7.repo
[centos]
name=centos7
baseurl=file:///var/www/html/centos7
enabled=1
gpgcheck=0
]# yum makecacke // 更新yum源
]# yum clean all
]# yum repolist

DNS服務器
安裝軟件
]# yum-y install bind bind-chroot
修改配置文件
]# vim /etc/name.conf
listen-on port 53 { 192.168.1.254; }; // 修改地址
allow-query { any; }; // 改爲any,允許所有主機查詢
forwarders { 202.106.196.115; }; // 新添加,轉發給聯通解析
dnssec-enable no; // yes改爲no,不需要驗證
dnssec-validation no; // yes改爲no
重起服務
]# systemctl restart named
查看端口監聽
]# ss -ltun
驗證
]# nslookup

server 192.168.4.10
NTP時間服務器(最後操作)
安裝軟件
]# yum -y install chronyd
修改配置文件
]# vim /etc/chrony.conf
server ntp1.aliyun.com
bindacqaddress 0.0.0.0
allow 0/0 重起
virt-manager安裝虛擬機
創建一個空文件
]# cd /var/lib/libnert/images
Images]# qemu-img create -f qcow2 node.img 8G
創建虛擬機
]# virt-manager
文件—>新建虛擬機—>網絡安裝 —>URL(http://192.168.1.254/centos7)—>內存(2048)、 CPU(2)—>選擇或創建自定義存儲(管理—>node.img)—>選擇網絡 (虛擬網絡‘vbr’:NAT)—>完成
語言選擇英語—>時間、日期(上海)—>KDUMP(關掉)—>分區(I will configure partioning —>Done—>StandardPartition—>+(/)Add mount point—>Done(兩次)
系統初始化
禁用selinux
]# vim /etc/selinux/config
SELINUX=disabled
修改網卡配置文件
]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

Generated by dracut initrd

DEVICE="eth0" // 設備名字
ONBOOT="yes" // 開機自起
NM_CONTROLLED="no" // 拒絕接受NetworkManager管理
TYPE="Ethernet"
BOOTPROTO="dhcp" | “static”下面三行去掉註釋
#IPADDR="192.168.1.50"
#PREFIX="24"
#GATEWAY="192.168.1.254"
停止 firewalld NetworkManager
]# systemctl stop firewalld
]# systemctl stop NetworkManager
卸載防火牆與NetworkManager
]# yum -y remove NetworkManager- firewalld- python-firewall
重起機器
]# reboot
配置yum源
]# rm -rf /etc/yum.repos.d/
]# vim /etc/yum.repos.d/centos7.repo
[centos]
name=centos7
baseurl=http://192.168.1.254/centos7
enabled=1
gpgcheck=0
驗證數字簽名
真機下載RPM-GPG-KEY-CentOS-7傳給虛擬機
]# scp /var/www/html/centos7/RPM-GPG-KEY-CentOS-7 虛擬機 ip:/etc/yum.repos.d
導入
]# cd /etc/yum.repos.d
]# rpm --import RPM-GPG-KEY-CentOS-7
修改yum配置文件
]# vim /etc/yum.repos.d/centos.repo
gpgcheck =1
安裝常用軟件
]# yum provides vim | ifconfig |
]# yum list | grep bash
// bash-completin.noarch 可以tab
]# yum -y install lftp bridge-utils pstree
lftp sftp://192.168.1.154 -u root //通過ssh鏈接ftp服務
禁止空路由
]# ip r s 或者 ip route show // 查看
]# vim /etc/sysconfig/network 追加寫入
NOZEROCONF=“yes”
]# systemctl restart network
]# ip r s // 再次查看空路由沒有了
添加串口終端(Console及磁盤分區配置)
// 可以virsh console,不添加不可以
修改grub配置文件
]# vim /etc/default/grub
GRUB_CMDLINE_LINUX="biosdevname=0 net.ifnames=0 console=ttyS0,115200n8" // 修改
GRUB_DISABLE_LINUX_UUID="true" // 添加
GRUB_ENABLE_LINUX_LABEL="true" // 添加
全文如下:
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .
$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL="serial console"
GRUB_SERIAL_COMMAND="serial --speed=115200"
GRUB_CMDLINE_LINUX="biosdevname=0 net.ifnames=0 console=ttyS0,115200n8"
GRUB_DISABLE_RECOVERY="true"
GRUB_DISABLE_LINUX_UUID="true"
GRUB_ENABLE_LINUX_LABEL="true"
創建引導文件
]# grub2-mkconfig -o /boot/grub2/grub.cfg
重起
]# reboot
修改/etc/fstab配置文件
blkid 查看uuid對應的磁盤設備
]# blkid
]# vim /etc/fstab 修改
// 將UUID手工改爲系統設備
安裝分區擴展軟件
]# yum -y install cloud-utils-growpart
關閉虛擬機,清理信息(真機)
LANG=en_US.UTF-8 // 設置語言爲英文
]# virt-sysprep -d CentOS-7.2
刪除虛擬定義
]# virsh undefine centos7.0
利用模版快速創建虛擬機node1
創建磁盤文件
]# cd /var/lib/libvert/images
]# qemu-img create -b node.img -f qcow2 node1.img 32G
配置xml配置文件
// 在day02下有node.xml模版
]# sed ‘s/node/node1/’ node.xml > /etc/libvirt/qemu/node1.xml
定義配置文件
]# virsh define /etc/libvirt/qemu/node1.xml
啓動虛擬機
]# virsh start node1
]# virsh console node1
擴容磁盤分區空間vda1(lsblk讓vda1變大)
]# LANG=en_US.UTF-8
]# /usr/bin/growpart /dev/vda 1
擴容文件系統識別空間(讓df -h可使用空間變大)
]# /usr/sbin/xfs_growfs /

xml配置文件
默認存放在 /etc/libvert/qemu 下
查看配置文件:virsh dumpxml 虛擬機名
備份配置文件:virsh dumpxml 虛擬機名 > 虛擬機名.xml
編輯虛擬機配置:virsh edit 虛擬機名
配置文件的講解
// 可能修改的用紅色標註,其餘不用修改
]# cat node.xml
<domain type="kvm"> // 類型是kvm的虛擬機(固定寫法)
名字
<name>node</name> //虛擬機的名字(virsh list、virt-manager)
內存
<memory unit="KB">2097152</memory>
// 虛擬機能使用的最大的內存
<currentMemory unit="KB">2097152</currentMemory>
// 啓動虛擬機時的要用的內存,兩個保持一致
cpu數
<vcpu placement="static">2</vcpu> // 系統的cpu數
// 如果修改cpu數,不會算
<cpu mode="host-passthrough">
<topology sockets="1" cores="1" threads="2"/> // 刪除這行 自己會算
</cpu>

<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
磁盤
// 第一塊磁盤
<disk type="file" device="disk">
<driver name="qemu" type="qcow2"/>
<source file="/var/lib/libvirt/images/node.img"/>
<target dev="vda" bus="virtio"/>
</disk>
// 第二塊磁盤
<disk type="file" device="disk">
<driver name="qemu" type="qcow2"/>
<source file="/var/lib/libvirt/images/disk1.img"/>
<target dev="vdb" bus="virtio"/>
</disk>
// 先在外面創建磁盤
]# cd /var/lib/libvert/images
images]# qemu-img create -f qcow2 disk1.img 32G
// 先poweroff 再 start ,lsblk會出現vdb
網卡
// 第一塊網卡
<interface type="bridge">
<source bridge="vbr"/>
<model type="virtio"/>
</interface>
// 第二塊網卡
<interface type="bridge">
<source bridge="private1"/>
<model type="virtio"/>
</interface>

//virsh console用這個端口連接
<serial type="pty"/>
<console type="pty">
<target type="serial"/>
</console>
全文配置如下:
<domain type='kvm'>
<name>node</name>
<memory unit='KB'>2097152</memory>
<currentMemory unit='KB'>2097152</currentMemory>
<vcpu placement='static'>2</vcpu>
<os>
<type arch='x86_64' machine='pc'>hvm</type>
<boot dev='hd'/> //引導選項
<bootmenu enable='yes'/>
<bios useserial='yes'/>
</os>
<features>
<acpi/>
<apic/>
</features>
<cpu mode='host-passthrough'>
<topology sockets='1' cores='1' threads='2'/> //與上邊CPU配置對應可刪除
</cpu>
<clock offset='localtime'/> //時鐘配置
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/node.img'/>
<target dev='vda' bus='virtio'/>
</disk>
<interface type='bridge'>
<source bridge='vbr'/>
<model type='virtio'/>
</interface>
<channel type='unix'>
<target type='virtio' name='org.qemu.guest_agent.0'/>
</channel>
<serial type='pty'></serial>
<console type='pty'>
<target type='serial'/>
</console>
<memballoon model='virtio'></memballoon>
</devices>
</domain>
guestmount -a 後端盤 -i 掛載點 //修改後端盤
chroot 掛載點
爲Openstack環境創建兩臺虛擬機
虛擬機1(nide5)
8G內存
2塊網卡—eth0:192.168.1.10、eth1:192.168.4.10
第一塊網卡連接虛擬交換機vbr
第一塊網卡連接虛擬交換機private1
設置靜態IP,默認網關 192.168.1.254
2塊硬盤
/ 的vda1 要求50G 擴容vda1
vbd 20G

虛擬機1(nide6)
6G內存
2塊網卡—eth0:192.168.1.11、eth1:192.168.4.11
第一塊網卡連接虛擬交換機vbr
第一塊網卡連接虛擬交換機private1
設置靜態IP,默認網關 192.168.1.254
要求與第一臺虛擬主機的兩個IP都能ping通
2塊硬盤
/ 的vda1 要求50G 擴容vda1
// qemu-img create -b node.img -f qcow2 node5.img 50G | node6.img
// virsh edit node5 | node6 修改內存、硬盤、網卡
dns服務器 ]# yum -y install bind-utils
時間服務器
]# yum -y install chronyd
]# vim /etc/chronyd.conf
server 192.168.1.254 iburst 重起
驗證:chronyc sources -v

IaaS (Infrastrecture as a Service)
—基礎設施即服務
Paas (Platform as a Service)
—平臺即服務
Saas (Software as a Service)
—軟件即服務
Openstack七大主要組件
Horizon
—管理Openstack各種服務的、基於web的管理接口
Keystone
—爲其他服務提供認證和授權的集中身份管理服務
Neutron
—一種軟件定義網絡服務
Swift
—用於對象存儲
Cinder
—爲虛擬機管理存儲卷的服務
Nova
—在節點上用於管理虛擬機的服務
Glance
—扮演虛擬機鏡像註冊的角色

部署openstack
安裝環境
配置yum倉庫
CentOS7-1708.iso
RHEL7OSP-10.iso // repodata在每個目錄下,寫repo文件時加上目錄
RHEL7-extras.iso
// 在真機掛載,虛擬機寫repo文件,共10731個包
DNS服務器
在真機部署,虛擬機安裝bind-utils,可以nslookup
NTP服務
]# chronyc sources -v // 檢查時間服務器是否可用

  • 正常 + 備胎 ?失敗
    關閉NetworkManager服務
    禁用SELINUX
    ]# sestatus // 檢查selinux是否關閉
    卸載firewalld、NetworkManager
    配置主機ip
    導入公鑰
    Gpgcheck=1 // CentOS7-1708.iso 這個光盤的gpgcheck
    查看內存是否夠8G
    ]# free -m
    是否有20G的vdb設備
    ]# lsblk
    是否有兩塊網卡,並ping通
    rpm -qa |grep -P firewalld|NetworkManager 檢查包是否卸載

安裝openstack依賴包
配置卷組
]# yum -y install lvm2 // pvcreate命令的安裝包
]# pvcreate /dev/vdb // 創建物理卷
]# vgcreate cinder-volumes /dev/vdb // 創建卷組
]# vgs // 查看卷組信息
安裝依賴包
]# yum -y install qemu-kvm \
libvirt-daemon \
libvirt-client \
libvirt-daemon-driver-qemu \
python-setuptools
安裝packstack
安裝軟件
]# yum -y install openstack-packstack
可以ping通openstack
]# vim /etc/hosts 追加寫入
192.168.1.10 openstack
創建安裝openstack的應答文件
]# packstack --help | grep answer
]# packstack --gen-answer-file=answer.ini
修改應答文件
]# vim answer.ini
11 CONFIG_DEFAULT_PASSWORD=Taren1
// 配置默認密碼
42 CONFIG_SWIFT_INSTALL=n
// 設置禁用 swift (對象存儲) 模塊
75 CONFIG_NTP_SERVERS=192.168.1.254
// NTP 服務器地址
98 CONFIG_COMPUTE_HOSTS=192.168.1.10
// 計算節點IP地址
102 CONFIG_NETWORK_HOSTS=192.168.1.10
// 需要配置vxlan網絡的 IP 地址
554 CONFIG_CINDER_VOLUMES_CREATE=n
// 禁用自動創建 cinder-volumns 卷組
840 CONFIG_NEUTRON_ML2_TYPE_DRIVERS=flat,vxlan
// 設置網絡支持協議
876 CONFIG_NEUTRON_ML2_VXLAN_GROUP=239.1.1.5
// 設置組播地址
910 // 設置虛擬交換機
CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex
921 CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0
// 設置虛擬交換機所連接的物理網卡
936 CONFIG_NEUTRON_OVS_TUNNEL_IF=eth1
// 設置隧道網絡使用的網卡
1179 CONFIG_PROVISION_DEMO=n
// 禁用測試的DEMO
安裝opensatck
]# packstack --answer-file=answer.ini
Horizon BUG處理
修改httpd配置文件
]# vim /etc/httpd/conf.d/15-horizon_vhost.conf 最後
WSGIProcessGroup apache下面添加一句
WSGIApplicationGroup %{GLOBAL}
刷新配置文件
]# apachectl graceful
修改密碼:openstack user set --password ‘a’ u1
真機訪問
]# firefox http://192.168.4.10

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章