创建虚拟网络:
vim /etc/libvirt/qemu/networks/openstack.xml #创建一个名为openstack的虚拟网络
<network>
<name>openstack</name> #openstack为虚拟交换机的名字
<bridge name="openstack"/>
<forward mode="nat"/> #桥接nat方式可以连通外网
<ip address="192.168.100.254" netmask="255.255.255.0"> #ip为192.168.100.254,相当于虚拟机网关
<dhcp>
<range start="192.168.100.100" end="192.168.100.200"/> #DHCP自动分配ip范围是100-200
</dhcp>
</ip>
</network>
virsh net-define /etc/libvirt/qemu/networks/openstack.xml #定义openstack虚拟网络,用绝对路径定义
virsh net-start openstack #启动openstack虚拟网络
ifconfig #ifconfig验证
qemu-img命令
qemu-img 是虚拟机的磁盘管理命令,支持非常多 的磁盘格式,例如raw、qcow2、vdi、vmdk等等
qemu-img 命令格式 :
qemu-img 命令 参数 块文件名称 大小
常用的命令有 :
create 创建一个磁盘
convert 转换磁盘格式
info 查看磁盘信息
resize 扩容磁盘空间
创建新的镜像盘文件
qemu-img create -f 格式 磁盘路径 大小
qemu-img create -f qcow2 disk.img 50G
查询镜像盘文件的信息
qemu-img info 磁盘路径
qemu-img info disk.img
-b 使用后端模板文件
qemu-img create -b disk.img -f qcow2 disk1.img
服务器配置
准备服务主机 3 台,配置如下:
- openstack 管理主机
– 2CPU,6G 内存,50G 硬盘
– 配置静态IP:192.168.100.10 - node01,node02 计算节点 * 2
– 2CPU,4.5G 内存,100G 硬盘
– 配置静态IP:192.168.100.11(12) - 配置主机名 /etc/hosts
- 能够相互 ping 通
- 配置 dns 服务器 /etc/resolv.conf
- 配置NTP服务时间同步
创建openstack 管理主机:
cp /var/lib/libvirt/images/.node_base.xml /etc/libvirt/qemu/openstack.xml #拷贝配置文件
cd /var/lib/libvirt/images/ #切换到指定目录
qemu-img create -f qcow2 -b .node_base_qcow2 openstack,img 50G #创建虚拟磁盘文件
vim /etc/libvirt/qemu/openstack.xml #修改虚拟机配置文件
9 <name>openstack</name> #虚拟机域名
11 <memory unit='KiB'>7488282</memory> #虚拟机最大使用内存,可以手动调整
12 <currentMemory unit='KiB'>7488282</currentMemory> #创建虚拟机使用内存
13 <vcpu placement='static'>2</vcpu> #cup核数
33 <source file='/var/lib/libvirt/images/openstack.img'/> #虚拟机硬盘文件
46 <source bridge='openstack'/> #定义桥接网络源设备,
[root@GGD images]# virsh define /etc/libvirt/qemu/openstack.xml #定义指定文件创建虚拟机
[root@GGD images]# virsh start openstack #启动虚拟机
[root@GGD images]# virsh console openstack #连接虚拟机
创建node01节点主机:
cp /var/lib/libvirt/images/.node_base.xml /etc/libvirt/qemu/node01.xml #拷贝配置文件
cd /var/lib/libvirt/images/ #切换到指定目录
qemu-img create -f qcow2 -b .node_base_qcow2 node01,img 100G #创建虚拟磁盘文件
vim /etc/libvirt/qemu/node01.xml #修改虚拟机配置文件
9 <name>openstack</name> #虚拟机域名
11 <memory unit='KiB'>5488282</memory> #虚拟机最大使用内存,可以手动调整
12 <currentMemory unit='KiB'>5488282</currentMemory> #创建虚拟机使用内存
13 <vcpu placement='static'>2</vcpu> #cup核数
33 <source file='/var/lib/libvirt/images/node01.img'/> #虚拟机硬盘文件
46 <source bridge='openstack'/> #定义桥接网络源设备,
[root@GGD images]# virsh define /etc/libvirt/qemu/node01.xml #定义指定文件创建虚拟机
[root@GGD images]# virsh start node01 #启动虚拟机
[root@GGD images]# virsh console node01 #连接虚拟机
创建node02 节点主机:
cp /var/lib/libvirt/images/.node_base.xml /etc/libvirt/qemu/node02.xml #拷贝配置文件
cd /var/lib/libvirt/images/ #切换到指定目录
qemu-img create -f qcow2 -b .node_base_qcow2 openstack,img 100G #创建虚拟磁盘文件
vim /etc/libvirt/qemu/node02.xml #修改虚拟机配置文件
9 <name>openstack</name> #虚拟机域名
11 <memory unit='KiB'>5488282</memory> #虚拟机最大使用内存,可以手动调整
12 <currentMemory unit='KiB'>5488282</currentMemory> #创建虚拟机使用内存
13 <vcpu placement='static'>2</vcpu> #cup核数
33 <source file='/var/lib/libvirt/images/node02.img'/> #虚拟机硬盘文件
46 <source bridge='openstack'/> #定义桥接网络源设备,
[root@GGD images]# virsh define /etc/libvirt/qemu/node02.xml #定义指定文件创建虚拟机
[root@GGD images]# virsh start node02 #启动虚拟机
[root@GGD images]# virsh console node02 #连接虚拟机
配置DNS
系统环境准备
openstack 安装时候需要使用外部 dns 来解析域名
vim /etc/resolv.conf
nameserver 114.114.114.114 #设置真机DNS地址
注:去掉search开头的所有行
虚拟机DNS设置(三台一样配置):
vim /etc/resolv.conf
nameserver 192.168.100.254
注:去掉search开头的所有行
将域名对应的 IP 解析到我们安装的openstack 服务器
vim /etc/hosts
192.168.100.10 openstack
192.168.100.11 node01
192.168.100.12 node02
• 注:DNS 服务器不能与 openstack 安装在同一台主机上
NTP时间服务
node 服务器之间的时间必须保持一致(三台配置NTP)
• 编辑配置文件 vim /etc/chrony.conf
server 192.168.100.254 iburst
systemctl restart chronyd #重启服务
• 测试服务
[student@openstack ~]# chronyc sources -v #出现*
号代表NTP时间可用
^* gateway 2 6 17 62 -753us[-7003us] +/- 24ms
配置yum仓库
[root@GGD ~]# vim /etc/fstab #真机上挂载文件
/var/lib/libvirt/images/iso/CentOS7-1804.iso /var/ftp/centos-1804 iso9660 defaults 0 0
/linux-soft/04/openstack/RHEL7OSP-10.iso /var/ftp/openstack/ iso9660 defaults 0 0
/linux-soft/04/openstack/RHEL7-extras.iso /var/ftp/extras/ iso9660 defaults 0 0
/var/lib/libvirt/images/iso/CentOS7-1804.iso /var/ftp/node/ iso9660 defaults 0 0
- 创建挂载目录
mkdir /var/ftp/openstack/
mkdir /var/ftp/extras/
mkdir /var/ftp/node/
配置 yum 源,软件仓库一共 4 个,软件包共有10,670
[root@openstack ~]# vim /etc/yum.repos.d/openstack.repo
[openstack1]
name=openstack
baseurl=ftp://192.168.100.254/openstack/rhel-7-server-openstack-10-rpms
enabled=1
gpgcheck=0
[openstack2]
name=openstack
baseurl=ftp://192.168.100.254/openstack/rhel-7-server-openstack-10-devtools-rpms
enabled=1
gpgcheck=0
[extras]
name=extras
baseurl=ftp://192.168.100.254/extras
enabled=1
gpgcheck=0
部署Openstack
安装openstack期间,有些软件包所依赖的软件包,并没有在安装过程中安装,这些软件包需提前安装
yum install -y qemu-kvm libvirt-client libvirt-daemon libvirt-daemon-driver-qemu python-setuptools
openstack 计算节点添加依赖包(node01,node02节点添加)
yum -y install qemu-kvm libvirt-client libvirt-daemon libvirt-daemon-driver-qemu python-setuptools #node01,node02添加依赖包
-
配置packstack应答文件 (只需在管理节点上安装)
安装 openstack 需要使用 packstack -
首先安装 openstack-packstack
[root@openstack ~]# yum install -y openstack-packstack -
使用 packstack 创建通用应答文件
[root@openstack ~]# packstack --gen-answer-file=answer.ini -
修改应答文件
[root@openstack ~]# vim answer.ini
42: CONFIG_SWIFT_INSTALL=n
45: CONFIG_CEILOMETER_INSTALL=n
49: CONFIG_AODH_INSTALL=n
53: CONFIG_GNOCCHI_INSTALL=n
75: CONFIG_NTP_SERVERS=192.168.100.254 #NTP服务器地址
98: CONFIG_COMPUTE_HOSTS=192.168.100.11,192.168.100.12 #安装起虚拟机程序
102: CONFIG_NETWORK_HOSTS=192.168.100.10,192.168.100.11,192.168.100.12 #配置nova网络以逗号隔开,把需要的IP添加到这里
333: CONFIG_KEYSTONE_ADMIN_PW=admin #管理员密码
840: CONFIG_NEUTRON_ML2_TYPE_DRIVERS=flat,vxlan #设置支持flat扁平网络,默认支持vxlan网络,设置flat扁平网络可以跟外部同信
910: CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex #定义一个虚拟交换机名字,固定叫br-ex需要绑定网卡
921: CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0 #把eth0绑定到交换机外网口,设定外网通讯端口
1179: CONFIG_PROVISION_DEMO=n #取消例子安装
• 如果前期环境准备无误,只要耐心等待安装结束即可
• 根据主机配置不同,安装过程需要20分钟左右或更久
• 如果出现错误,根据屏幕上给出的日志文件进行排错
- 执行应答文件
[root@openstack ~]# packstack --answer-file=answer.ini
查看外部OVS网桥
br-ex为外部OVS网桥
[root@openstack ~]# cat /etc/sysconfig/network-scripts/ifcfg-br-ex
ONBOOT=“yes”
NM_CONTROLLED=“no”
IPADDR=“192.168.100.10”
NETMASK=“255.255.255.0”
GATEWAY=“192.168.100.254”
DEVICE=br-ex
NAME=br-ex
DEVICETYPE=ovs
OVSBOOTPROTO=“static”
TYPE=OVSBridge
eth0为外部OVS网桥的端口
[root@openstack ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NAME=eth0
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=br-ex
ONBOOT=yes
BOOTPROTO=none
Horizon配置
Horizon是一个用以管理、控制OpenStack服务的Web控制面板,也称之为Dashboard仪表盘
• 可以管理实例、镜像、创建密匙对,对实例添加卷、操作Swift容器等。除此之外,用户还可以在控制面板中使用终端(console)或VNC直接访问实例
• 基于python的django web框架进行开发
功能与特点
• 实例管理:创建、终止实例,查看终端日志,VNC连接,添加卷等
• 访问与安全管理:创建安全群组,管理密钥对,设置浮动IP等
• 偏好设定:对虚拟硬件模板可以进行不同偏好设定
• 镜像管理:编辑或删除镜像
• 用户管理:创建用户等
• 卷管理:创建卷和快照
• 对象存储处理:创建、删除容器和对象
Horizon BUG 处理
• 安装虽然没有报错,但默认无法打开 Horizon,这是一个软件的配置 BUG
/etc/httpd/conf.d/15-horizon_vhost.conf
WSGIApplicationGroup %{GLOBAL}
ServerAlias localhost
WSGIDaemonProcess apache group=apache processes=3
threads=10 user=apache
WSGIProcessGroup apache
WSGIApplicationGroup %{GLOBAL} <— 这里添加
- 修改配置文件后重启apache服务:systemctl restart httpd
- 重新载入配置文件 apachectl graceful
初始化环境变量
[root@openstack ~]# source ~/keystonerc_admin
[root@openstack ~(keystone_admin)]# env | grep OS
HOSTNAME=openstack
OS_REGION_NAME=RegionOne
OS_PASSWORD=admin #登入密码
OS_AUTH_URL=http://192.168.100.10:5000/v2.0
OS_USERNAME=admin #登入用户名
OS_TENANT_NAME=admin
• 使用帮助
[root@openstack ~(keystone_admin)]# openstack help
到这里openstack云平台就可以用web登入了
用户名:admin
密码: 初始登入密码在 keystonerc_admin 文件里