一、关于openstack安装的环境需求 1.yum源(网络yum源) yum 源必须要有repodata 作为索引,即有repodata目录才可以作为yum 源。 创建repodata :#createrepo (命令执行后当前目录下就有了repodata目录) 更新:createrepo --update (也可以删除repodata再重新创建) 2.dns服务器 3.时间服务器 4.2台虚拟机(8G+6G) 5.禁用selinux vim /etc/selinux/config SELINUX=disabled 6.禁用firewalld systemctl stop firewalld systemctl disabled firewalld//该命令虽然停止了防火墙自身调用,但是当其他程序调用的时候他还是会启动 systemctl mask firewalld //该命令会把firewalld服务的连接变成/dev/null ,别的程序调用他不会启动(当启用的时候就敲systemctl unmask firewalld命令)

二、KVM虚拟机 1、虚拟化:x个物理资源成y个逻辑资源(就是一台物理机虚拟成n个虚拟机) 2、虚拟化主要厂商及产品: VMware : VMware Workstation、vSphere(商业版软件 服务器版用esxi软件 终端用vcenter软件管理虚拟机) RedHat: KVM、RHEV Citrix: Xen 3.KVM的组成: -- KVM:是linux内核的模块(可以通过lsmod命令查看),需要CPU的支持,采用硬件辅助虚拟化技术 -- QEMU : 是一个虚拟化的仿真工具,完成对硬件的虚拟化支持,会模拟出其他的硬件(显卡声卡等) -- Libvirt : 是一个对虚拟化管理的接口和工具 4.需要安装的软件 -- qemu-kvm : 为kvm提供底层硬件仿真支持 -- libvirt-dremon : libvirtd守护进程,管理虚拟机 -- libvirt-client : 用户端软件,提供客户端管理命令 -- libvirt-daemon-driver-qemu : libvirtd连接qemu的驱动

5.虚拟机的组成 -- 一个xml文件(虚拟机配置声明文件,定义虚拟机的各种参数),默认在/etc/libvirt/qemu/下 -- 一个磁盘镜像文件(虚拟机的硬盘,真机用一个很大的文件来充当虚拟机的硬盘,保存虚拟机的操作系统和文档数据),位置在/var/lib/libvirt/images/下 磁盘镜像文件格式:raw和qcow2 qcow2是KVM默认的,占用空间小,支持压缩、后端盘复用和快照

三、virsh 命令工具介绍 virsh命令进入交互模式,--help 产看命令帮助 list (--all) //列出虚拟机 nodeinfo //查看物理机的信息 dominfo 虚拟机名 //查看虚拟机的信息 net-list (--all) //查看虚拟交换机 start | reboot | shutdown | destroy | autostart 虚拟机名 //运行|重启|关闭|强制关闭|开机自动运行 --连接自己的virsh管理器: # virsh 或# virsh -c qemu:///system --连接别人的virsh管理器: virsh -c qemu+ssh://176.233.3.17/system net-list //查看虚拟网络 net-define vbr.xml //创建虚拟网络 net-undefine vbr //删除虚拟网络 net-start vbr //启动虚拟网络 net-destroy vbr //停用虚拟网络 net-edit vbr //修改vbr网络的配置

四、自定义虚拟机 步骤: 1.安装软件(参见二、4) 2.搭建网络yum源 光盘作为 yum 源 CentOS7-1708.iso (共9591包) #vim /etc/yum.repos.d/centos.repo [centos7] name=centos7 baseurl=ftp://176.233.3.17/centos gpgcheck=0 enabled=1 :wq

3.禁用selinux(参见一、5) 4.禁用firewalld(参见一、6) 5.安装虚拟网桥 #vim /etc/libvirt/qemu/network/vbr.xml <network> <name>vbr</name> //vbr是虚拟交换机的名字 <bridge name="vbr"/> //vbr是网卡的名字(写一样便于辨认) <forward mode="nat"/> <ip address="192.168.1.254" netmask="255.255.255.0"> <dhcp> <range start="192.168.1.100" end="192.168.1.200"/> </dhcp> </ip> </network> #virsh //进入虚拟机管理器 #net-define vbr.xml //创建虚拟网络 #net-start vbr //启动 #net-autostart vbr //开机自启

6.创建磁盘文件 #cd /var/lib/libvirt/images #qemu-img create -f qcow2 node.img 8G

7.新建虚拟机 #virt-manager 选择网络安装—>前进 URL:ftp://176.233.3.17/centos (网络yum源的地址)—>前进 RAM:2048 CPU:2 —>前进 选择或创建自定义存储:管理—>选择node.img(步骤6中创建的镜像)—>选择卷—>前进 选择网络:虚拟网络‘vbr’(步骤5中创建的网桥)—>完成 语言选择English(由于创建的虚拟机是模板虚拟机,因此需要满足共性) 安装分区:手动分区,选择标准分区,只添加一个根分区 设置密码(此密码可用于以该虚拟机为模板创建的虚拟机的root密码)

五、虚拟机模板制作 初始化刚安装好的系统: 1.禁用selinux #vi /etc/selinux/config SELINUX=disabled

2.网卡及配置文件设置 #vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" //网卡的名字 ONBOOT="yes" //开机是否启动 NM_CONTROLLED="no" //拒绝接受NetworkManager服务的管理 TYPE="Ethernet" //网卡设备 还有一种类型是bridge交换机 BOOTPROTO="dhcp" //dhcp动态IP
//r如果BOOTPROTO="static"则以下三项取消注释 #IPADDR="192.168.1.50"
#PREFIX="24" #GATEWAY="192.168.1.254"

3.停止并卸载防火墙与NetworkManager systemctl stop firewalld systemctl stop NetworkManager yum remove -y NetworkManager-* firewalld-* python-firewall

4.重启虚拟机(重启后确保可以上网) 5.配置yum源 #vi /etc/yum.repo/local.repo [local_repo] name=CentOS-$releasever - Base baseurl="ftp://192.168.1.254/centos7" enabled=1 gpgcheck=0 :wq #yum -y install bash-completion //命令行自动补齐,重启生效

6.验证数字签名 下载 RPM-GPG-KEY-CentOS-7 //包在yum源的文件夹里,也可scp到虚拟机里 导入 rpm --import RPM-GPG-KEY-CentOS-7 修改 local.repo gpgcheck=1 //开启数字验证 使用 yum install lftp lrzsz 验证

ps:lftp 的功能 --可以连自己的ftp: lftp 192.168.4.11 --可以连对方的ftp: lftp sftp://192.168.4.12 -u root s表示ssh ,即使对方没开ftp,但开了ssh ,也可以在对方的ftp上操作

7.禁用空路由 vim /etc/sysconfig/network NOZEROCONF="yes" 不禁用的话可能会在某种情况下影响计算机的通讯

8.添加串口终端(可以console 虚拟机) #vim /etc/default/grub 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" :wq

修改完之后创建引导文件 #grub2-mkconfig -o /boot/grub2/grub.cfg #beboot 修改/etc/fstab ,把UUID改成系统设备名(用blkid命令查看uuid对应的磁盘设备)

9.去除个性化信息 安装分区扩展软件 #yum -y install cloud-utils-growpart

设置第一次开机自动扩容根目录 #chmod 755 /etc/rc.local

在 rc.local 里加入如下配置

/usr/bin/growpart /dev/vda 1 /usr/sbin/xfs_growfs / /usr/bin/sed '/^###/,$d' -i /etc/rc.d/rc.local

10.关闭虚拟机后执行信息清理工作(真机) 设置语言为英文 #LANG=en_US.UTF-8 #virt-sysprep -d 虚拟机名

11.删除虚拟机定义 #virsh undefine 虚拟机名

六、快速创建虚拟机 创建 2 个虚拟机 要求: 虚拟机1 8G 内存 2块网卡 第一块网卡连接虚拟交换机 vbr 第二块网卡连接虚拟交换机 private1 设置静态 IP,默认网关 192.168.1.254

 2块硬盘
 其中 / 的 vda1 要求 50G
 vdb  20G

虚拟机2 6G 内存 2块网卡 第一块网卡连接虚拟交换机 vbr 第二块网卡连接虚拟交换机 private1 设置静态 IP,默认网关 192.168.1.254 要求与第一台虚拟主机的两个 IP 都能 ping 通 硬盘 / 的 vda1 要求 50G

1.开启虚拟网卡 #virsh net-start default
#virsh net-autostart default //将所有的虚拟网卡开启并设置成开机自启动

2.创建磁盘文件 #cd /var/lib/libvirt/images #qemu-img create -b node.img -f qcow2 node1.img 50G #qemu-img create -f qcow2 disk.img 20G

3.更改虚拟机node1的配置文件 #virsh edit node1 修改内存大小为8G: <memory unit='KiB'>8192000</memory> <currentMemory unit='KiB'>8192000</currentMemory> 添加第二块硬盘:(在原来disk后面添加) <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/var/lib/libvirt/images/disk.img'/> <target dev='vdb' bus='virtio'/> </disk> 添加网卡(在原来interface后面添加) <interface type='bridge'> <source bridge='private1'/> <model type='virtio'/> </interface>

4.启动虚拟机 #virsh start node1 #virsh console node1

5.配置网卡IP #cd /etc/sysconfig/network-scripts/ 配置eth0网卡IP #vim ipcfg-eth0 DEVICE="eth0" #虚拟网卡的名字 ONBOOT="yes" #在系统启动时是否启动这个网卡 NM_CONTROLLED="no" #拒绝接受networkmanager的管理 TYPE="Ethernet" #表示它是一个网卡(Bridge表示是一个交换机) BOOTPROTO="none" #如何配置IP地址=static(静态IP),dhcp(自动分配,需要将下面三行注释掉),none(不处理) IPADDR="192.168.1.100" #IP地址 PREFIX="24" #子网掩玛 GATEWAY="192.168.1.254" #默认网关 :wq

配置eth1网卡 #cp ipcfg-eth0 ipcfg-eth1 #vim pcfg-eth1 DEVICE="eth1"
ONBOOT="yes"
NM_CONTROLLED="no" TYPE="Ethernet" BOOTPROTO="none"
IPADDR="192.168.4.100"
PREFIX="24"
:wq

重启配置文件 #systemctl restart network

6.DNS服务器 (真机): #yum -y install bind bind-chroot #vim /etc/named.conf listen-on port 53 { 192.168.1.254; }; allow-query { any; }; forwarders { 202.106.196.115; }; dnssec-enable no; dnssec-validation no; :wq

7.时间服务器 #yum install -y chrony (真机): #vim /etc/chrony.conf server ntp1.aliyun.com iburst bindacqaddress 0.0.0.0 allow 0/0

(虚拟机): #yum install -y chrony #vim /etc/chrony.conf server 192.168.1.254 iburst 检查是否同步成功: chronyc sources -v

  • 同步成功,+ 备胎 , ? 同步失败