笔记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

猜你喜欢

转载自blog.51cto.com/13858237/2168829
今日推荐