一, 关于 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
同步成功,+ 备胎 , ? 同步失败
来源: http://www.bubuko.com/infodetail-2729962.html