Openstack是一套IaaS解决方案,是一个开源的云计算管理平台,以Apache许可证为授权
基础管理服务包含Keystone,Cinder、Glance,Nova,Neutron,Horizon六个服务
Horizon
– 用于管理Openstack各种服务的、基于web的管理接口
– 通过图形界面实现创建用户、管理网络、启劢实例等操作
Keystone
– 为其他服务提供认证和授权的集中身份管理服务
– 也提供了集中的目录服务
– 支持多种身份认证模式,如密码认证、令牌认证、以及AWS(亚马逊Web服务)登陆
– 为用户和其他服务提供了SSO认证服务
Glance
– 扮演虚拟机镜像注册的角色
– 允许用户为直接存储拷贝服务器镜像
– 这些镜像可以用于新建虚拟机的模板
Cinder
– 为虚拟机管理存储卷的服务
– 为运行在Nova中的实例提供永久的块存储
– 可以通过快照迚行数据备份
– 经常应用在实例存储环境中,如数据库文件
Nova
– 在节点上用于管理虚拟机的服务
– Nova是一个分布式的服务,能够与Keystone交互实现认证,与Glance交互实现镜像管理
– Nova被设计成在标准硬件上能够迚行水平扩展
– 启劢实例时,如果有则需要下载镜像
Neutron
– 一种软件定义网络服务
– 用于创建网络、子网、路由器、管理浮劢IP地址
– 可以实现虚拟交换机、虚拟路由器
– 可用于在项目中创建VPN
Swift:对象存储,实现数据的存储和共享
下面我们搭建一台openstack简易平台
环境:在真机上部署DNS解析服务器和NTP时间同步服务器
]# cat /etc/named.conf
options {
listen-on port 53 {192.168.4.254;};
//listen-on-v6 port 53 {::1;};
allow-query {any;};
directory "/var/named";
forwarders { 114.114.114.114; };
dnssec-enable no; //dnssec,数据安全认证
dnssec-validation no;
};
]# systemctl restart named
]#vim /etc/chrony.conf
server ntp.aliyun.com iburst //同步的时间服务器地址
bindacqaddress 0.0.0.0 //监听所有地址
allow 0/0 //允许所有地址同步
]# chronyc sources -v ntp.aliyun.com
配置yum源
]# ls /var/ftp/OSP //可以从关网上下载以下的软件包做网络yum源
docs rhel-7-server-rhceph-2-osd-rpms
rhel-7-server-openstack-10-devtools-rpms rhel-7-server-rhceph-2-tools-rpms
rhel-7-server-openstack-10-optools-rpms rhel-7-server-rhscon-2-agent-rpms
rhel-7-server-openstack-10-rpms rhel-7-server-rhscon-2-installer-rpms
rhel-7-server-openstack-10-tools-rpms rhel-7-server-rhscon-2-main-rpms
rhel-7-server-rhceph-2-mon-rpms version.txt
]# ls /var/ftp/EXTRA
comps.xml Packages repodata version.txt
安装两台虚拟机,要求如下:
1、虚拟机openstack: openstack nova,内存9.5G,硬盘 系统50G,添加一块硬盘20G,两块网卡:eth0:vbr eth1:provate1
2、虚拟机nova01: nova,内存5G,硬盘 系统50G,两块网卡:eth0:vbr eth1:provate1
]# qemu-img create -b node.qcow2 -f qcow2 openstack.img 50G
]# qemu-img create -b node.qcow2 -f qcow2 nova.img 50G
]# cd /var/lib/libvirt/images/
]# qemu-img create -f qcow2 disk.img 20G //创建一块空的磁盘镜像
]# virsh edit openstack
<name>openstack</name> //名称修改为主机名
<memory unit='KiB'>9848000</memory> //内存大小修改为环境要求的9.5G大小
<currentMemory unit='KiB'>9848000</currentMemory> //同上
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/openstack.img'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x 0'/>
</disk>
<disk type='file' device='disk'> //由于需要添加磁盘,在配置文件中添加disk项即可,删除address内容
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/disk.img'/>
<target dev='vdb' bus='virtio'/>
</disk>
<interface type='bridge'>
<mac address='52:54:00:25:28:9b'/>
<source bridge='vbr'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<interface type='bridge'> //由于需要添加网卡并加入不同的网络则需要添加interface项,删除address和mac地址,source bridge
改为另一个网络名
<source bridge='private1'/>
<model type='virtio'/>
</interface>
---------nova虚拟机作如上同样的操作-----------------------------------------------------
开启虚拟机,远程连接并修改ip为静态
]# virsh net-start private1
]# virsh start openstack
]# virsh console openstack
]#vim /etc/sysconfig/network-scripts/ifcfg-eth0
# Generated by dracut initrd
DEVICE="eth0"
ONBOOT="yes"
NM_CONTROLLED="yes"
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR="192.168.1.10"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.254"
]#cp /etc/sysconfig/network-scripts/ifcfg-eth0 >/etc/sysconfig/network-scripts/ifcfg-eth1
]#vim /etc/sysconfig/network-scripts/ifcfg-eth1
# Generated by dracut initrd
DEVICE="eth1"
ONBOOT="yes"
NM_CONTROLLED="yes"
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR="192.168.4.10"
NETMASK="255.255.255.0"
]#reboot
扩容操作
]# /usr/bin/growpart /dev/vda 1
]# /usr/sbin/xfs_growfs /
------------------nova虚拟机上做同样的操作,ip改成11-----------------------------------------
部署Openstack:
1、在Openstack上创建卷组
]# yum -y install lvm2
]# pvcreate /dev/vdb //创建物理卷
]# vgcreate cinder-volumes /dev/vdb //创建卷组,名字必须是cinder-volumes
]# vgs //查看卷组,这个卷组是给Cinder使用
VG #PV #LV #SN Attr VSize VFree
cinder-volumes 1 0 0 wz--n- <20.00g <20.00g
]# yum install -y qemu-kvm libvirt-client libvirt-daemon >libvirt-daemon-driver-qemu python-setuptools
//安装额外软件包
检查openstack环境部署****************************
• 是否禁用selinux
• 是否卸载firewalld和NetworkManager
• 检查配置主机网络参数(静态IP)
• 检查配置主机yum源(12个)
• 检查cinder-volumes卷组是否已经创建
• 检查公钥是否导入
• 查看相关软件包是否安装
• 检查NTP和DNS服务器是否可用
]# yum install -y openstack-packstack //openstack批量安装管理工具
]# packstack --gen-answer-file=answer.ini //生成应答文件,ini结尾的文件字有颜色
]# vim answer.ini 修改应答文件
CONFIG_DEFAULT_PASSWORD=redhat //在11行,设置一个默认密码,
CONFIG_SWIFT_INSTALL=n //在42行,对象存储是否安装,由于容量不够,这边写no
CONFIG_NTP_SERVERS=192.168.1.254 //在75行,NTP服务器ip
CONFIG_CINDER_VOLUMES_CREATE=n //554行,不允许系统自己创建卷组
CONFIG_NEUTRON_ML2_TYPE_DRIVERS=flat,vxlan //840行,网络格式
vxlan-隔离网络,划分不同网络 flat-扁平网络,共用外网
CONFIG_NEUTRON_ML2_VXLAN_GROUP=239.1.1.5 //876行,组播地址
CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex
//910行,设置虚拟交换机,用来打通次元,physnet1:br-ex:定一个有物理端口的虚拟交换机:虚拟交换机的名字
CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0 //921行,将eth0网卡变成虚拟端口
CONFIG_NEUTRON_OVS_TUNNEL_IF=eth1 //936行,隧道端口,用于两个域的虚拟机交换数据
CONFIG_PROVISION_DEMO=n //配置测试文件,1179行
]# packstack --answer-file=answer.ini //执行应答文件
**** Installation completed successfully ****** //无报错即可
BUG—安装虽然没有报错,但默认无法打开 Horizon,这是一个软件的配置 BUG
]#vim /etc/httpd/conf.d/15-horizon_vhost.conf
## Server aliases //在配置文件中找到以下内容部分
ServerAlias 192.168.1.10
ServerAlias openstack.localhost
ServerAlias localhost
WSGIDaemonProcess apache group=apache processes=3 threads=10 user=apache
WSGIProcessGroup apache
WSGIApplicationGroup %{GLOBAL} //添加此行内容解决bug
WSGIScriptAlias /dashboard
"/usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi"
]# apachectl graceful //重新载入配置文件 apachectl graceful
]# cat /root/keystonerc_admin //登陆Horizon页面的账户和密码文放在此文件中
unset OS_SERVICE_TOKEN
export OS_USERNAME=admin //账户名
export OS_PASSWORD=202748b2dc544626 //密码
export OS_AUTH_URL=http://192.168.1.10:5000/v2.0
export PS1='[\u@\h \W(keystone_admin)]\$ '
export OS_TENANT_NAME=admin
export OS_REGION_NAME=RegionOne
]# firefox http://192.168.1.10 //真机访问192.168.1.10
]# cat ifcfg-br-ex //配置eth0为外部OVS网桥的端口
ONBOOT="yes"
NM_CONTROLLED="yes"
IPADDR="192.168.1.10"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.254"
DEVICE=br-ex //设备名称
NAME=br-ex
DEVICETYPE=ovs //设备类型
OVSBOOTPROTO="static"
TYPE=OVSBridge //OVS外部网桥
]# ovs-vsctl show //查看ovs网桥配置
.........
Bridge br-int //内网
.........
Bridge br-ex //外网
.....
Port "eth0" //eth0作为网桥端口
Interface "eth0"
...........
]# ip -o addr show //查看网卡信息
]# openstack --help //查看openstack命令帮助
以上步骤可以帮助我们搭建一个基本的openstack平台。