OpenStack简介
OpenStack Docs: Chinese(Simplified)
OpenStack是什么? OpenStack是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过web接口让最终用户部署资源。
版本
OpenStack传统的以字母顺序(A~Z)命名的主版本系列。在OpenStack中,每个主版本系列确实是以字母表顺序命名,但每个系列内还会有多个小版本或补丁版本,这些版本通过数字来标识。
例如,OpenStack的第一版被称为Austin(2010.1),而后续版本如Bexar、Cactus等则按照字母顺序递增
看不出具体的版本号
[root@controller ~]# openstack --version
openstack 3.14.3
查找nova版本号,从版本中找到对应nova版本的即可
[root@controller ~]# rpm -qa | grep nova
openstack-nova-scheduler-17.0.10-1.el7.noarch
openstack-nova-api-17.0.10-1.el7.noarch
openstack-nova-common-17.0.10-1.el7.noarch
openstack-nova-placement-api-17.0.10-1.el7.noarch
python2-novaclient-10.1.0-1.el7.noarch
python-nova-17.0.10-1.el7.noarch
openstack-nova-conductor-17.0.10-1.el7.noarch
openstack-nova-novncproxy-17.0.10-1.el7.noarch
openstack-nova-console-17.0.10-1.el7.noarch
本文使用的openstack版本为OpenStack Releases: Queens
组件
组件名称 | 作用 |
---|---|
Keystone | 身份服务模块,提供认证管理服务,管理所有组件的认证信息和令牌,负责创建和修改用户、角色和权限等。 |
Nova | 计算服务组件,负责计算资源的管理和实例生命周期管理(虚拟机),提供虚拟机实例的创建、删除、迁移等操作,支持多种虚拟化技术。 |
Glance | 镜像服务组件,提供虚拟机镜像的存储、查询和检索功能,为Nova提供服务,支持多种镜像格式。 |
Swift | 对象存储服务模块,提供高可用分布式对象存储服务,用于存储大量的非结构化数据,如图片、视频、文档等。 |
Cinder | 块存储服务模块,管理所有块存储设备,为虚拟机提供存储服务,支持多种存储后端。 |
Neutron | 网络服务组件,为云计算提供虚拟网络功能,为每个租户建立独立的网络环境,支持多种网络模型和协议。 |
Ceilometer | 监控服务组件,为上层的计费、结算或监控应用提供统一的资源使用数据收集功能,支持多种数据源和监控指标。 |
Horizon | 控制台服务,提供以Web形式对所有节点的所有服务的管理界面,通常称为Dashboard,方便用户进行可视化管理。 |
这些组件共同协作,为OpenStack提供了一个完整的云计算解决方案,涵盖了计算、存储、网络、监控和管理等多个方面。
OpenStack云平台搭建
VMware安装系统
安装系统生成eth0为名的网卡配置文件
装系统初始界面首先上下键选第一个,然后tab键,按空格输入net.ifnames=0 biosdevname=0,回车开始安装系统
系统安装完成进入后编辑内核
vi /etc/default/grub
#同样添加biosdevname=0 net.ifnames=0
GRUB_CMDLINE_LINUX="crashkernel=auto biosdevname=0 net.ifnames=0 rd.lvm.lv=centos/root rd.lvm.lv=centos/swap biosdevname=0 net.ifnames=0 rhgb quiet"
vi /etc/selinux/config
SELINUX=disbaled
sudo systemctl stop firewalld
sudo systemctl disable firewalld
reboot
环境
手把手教你搭建OpenStack云平台(超级详细)_openstack云平台搭建-CSDN博客
用到三个镜像,从以上文章的云盘获取
- centos7.5镜像链接:https://pan.baidu.com/s/1stvdGLKTwVqrAyzTW-WQuA 提取码:yjsq
- centos7.0镜像链接:https://pan.baidu.com/s/10zQAxkSqO37_EAX2wVyy9A 提取码:yjsq
- iaas镜像链接:https://pan.baidu.com/s/11iAL7pQf31Kyer2UfVe2ZA 提取码:yjsq
其中,centos7.5是系统,centos7.0和iaas镜像做yum源
最好在一个新的的系统中测试,我开始使用的是现成的,走了很多弯路,最后还是不得不安装新的系统,记得保存干净环境的镜像,错了直接还原
安装注意事项
以下配置需要按照顺序搭建,错了一步可能都要重来,openrc.sh配置文件有几个要注意的点
1.ip地址一个都不要错,不要两个ip写混了
2.两个系统的密码要和实际密码对应
3.主机名要设置到对应的解析,同配置文件一致
安装配置openstack
配置controller端网卡
cat > /etc/sysconfig/network-scripts/ifcfg-eth0<<EOF
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=6d0723bf-40f8-4c4f-b3f7-981398c64298
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.126.70
DNS1=8.8.8.8
GATEWAY=192.168.126.2
EOF
cat > /etc/sysconfig/network-scripts/ifcfg-eth1<<EOF
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth1
UUID=91838ecd-c59c-4f26-b14c-797ea14329b3
DEVICE=eth1
ONBOOT=yes
IPADDR=192.168.200.10
DNS1=8.8.8.8
GATWAY=192.168.126.2
EOF
systemctl restart network
配置controller端yum源
mount -o loop CentOS-7-x86_64-DVD-1804.iso /mnt/
mkdir /opt/centos
cp -rf /mnt/* /opt/centos/
umount /mnt/
mount -o loop chinaskills_cloud_iaas.iso /mnt/
cp -rf /mnt/* /opt/
umount /mnt/
cp /etc/yum.repos.d/ /etc/yum.repos.d.bak -r
rm -fr /etc/yum.repos.d/*
cat > /etc/yum.repos.d/local.repo <<EOF
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=file:///opt/iaas-repo
gpgcheck=0
enabled=1
EOF
yum clean all #清除yum源缓存
yum repolist #列出所有可用的yum源
yum install -y vim vsftpd iaas-xiandian #安装所需的软件包
echo anon_root=/opt/ >> /etc/vsftpd/vsftpd.conf #设置匿名访问
systemctl restart vsftpd #重启ftp服务
systemctl enable vsftpd #设置ftp服务开机自启
这个分别配置两个主机的hostname和解析
hostnamectl set-hostname controller
hostnamectl set-hostname compute
cat >> /etc/hosts <<EOF
192.168.126.70 controller
192.168.126.71 compute
EOF
安装controller端软件
cat > /etc/xiandian/openrc.sh <<EOF
#--------------------system Config--------------------##
#Controller Server Manager IP. example:x.x.x.x
HOST_IP=192.168.126.70 #controller节点的IP地址
#Controller HOST Password. example:000000
HOST_PASS=520140
#Controller Server hostname. example:controller
HOST_NAME=controller
#Compute Node Manager IP. example:x.x.x.x
HOST_IP_NODE=192.168.126.71 #compute节点的IP地址
#Compute HOST Password. example:000000
HOST_PASS_NODE=520140
#Compute Node hostname. example:compute
HOST_NAME_NODE=compute
#--------------------Chrony Config-------------------##
#Controller network segment IP. example:x.x.0.0/16(x.x.x.0/24)
network_segment_IP=192.168.126.0/24 #controller节点所在的网段
#--------------------Rabbit Config ------------------##
#user for rabbit. example:openstack
RABBIT_USER=openstack
#Password for rabbit user .example:000000
RABBIT_PASS=000000
#--------------------MySQL Config---------------------##
#Password for MySQL root user . exmaple:000000
DB_PASS=000000
#--------------------Keystone Config------------------##
#Password for Keystore admin user. exmaple:000000
DOMAIN_NAME=demo
ADMIN_PASS=000000
DEMO_PASS=000000
#Password for Mysql keystore user. exmaple:000000
KEYSTONE_DBPASS=000000
#--------------------Glance Config--------------------##
#Password for Mysql glance user. exmaple:000000
GLANCE_DBPASS=000000
#Password for Keystore glance user. exmaple:000000
GLANCE_PASS=000000
#--------------------Nova Config----------------------##
#Password for Mysql nova user. exmaple:000000
NOVA_DBPASS=000000
#Password for Keystore nova user. exmaple:000000
NOVA_PASS=000000
#--------------------Neturon Config-------------------##
#Password for Mysql neutron user. exmaple:000000
NEUTRON_DBPASS=000000
#Password for Keystore neutron user. exmaple:000000
NEUTRON_PASS=000000
#metadata secret for neutron. exmaple:000000
METADATA_SECRET=000000
#Tunnel Network Interface. example:x.x.x.x
INTERFACE_IP=192.168.126.70 #本机IP地址
#External Network Interface. example:eth1
INTERFACE_NAME=eth1
#External Network The Physical Adapter. example:provider
Physical_NAME=provider
#First Vlan ID in VLAN RANGE for VLAN Network. exmaple:101
minvlan=101
#Last Vlan ID in VLAN RANGE for VLAN Network. example:200
maxvlan=200
#--------------------Cinder Config--------------------##
#Password for Mysql cinder user. exmaple:000000
CINDER_DBPASS=000000
#Password for Keystore cinder user. exmaple:000000
CINDER_PASS=000000
#Cinder Block Disk. example:md126p3
BLOCK_DISK=sdb1 #compute节点的存储块
#--------------------Swift Config---------------------##
#Password for Keystore swift user. exmaple:000000
SWIFT_PASS=000000
#The NODE Object Disk for Swift. example:md126p4.
OBJECT_DISK=sdb2 #compute节点的存储块
#The NODE IP for Swift Storage Network. example:x.x.x.x.
STORAGE_LOCAL_NET_IP=192.168.126.71 #compute节点的IP地址
#--------------------Heat Config----------------------##
#Password for Mysql heat user. exmaple:000000
HEAT_DBPASS=000000
#Password for Keystore heat user. exmaple:000000
HEAT_PASS=000000
#--------------------Zun Config-----------------------##
#Password for Mysql Zun user. exmaple:000000
ZUN_DBPASS=000000
#Password for Keystore Zun user. exmaple:000000
ZUN_PASS=000000
#Password for Mysql Kuryr user. exmaple:000000
KURYR_DBPASS=000000
#Password for Keystore Kuryr user. exmaple:000000
KURYR_PASS=000000
#--------------------Ceilometer Config----------------##
#Password for Gnocchi ceilometer user. exmaple:000000
CEILOMETER_DBPASS=000000
#Password for Keystore ceilometer user. exmaple:000000
CEILOMETER_PASS=000000
#--------------------AODH Config----------------##
#Password for Mysql AODH user. exmaple:000000
AODH_DBPASS=000000
#Password for Keystore AODH user. exmaple:000000
AODH_PASS=000000
#--------------------Barbican Config----------------##
#Password for Mysql Barbican user. exmaple:000000
BARBICAN_DBPASS=000000
#Password for Keystore Barbican user. exmaple:000000
BARBICAN_PASS=000000
EOF
iaas-pre-host.sh #刷完该脚本后需要重启
reboot
iaas-install-mysql.sh
iaas-install-keystone.sh
source /etc/keystone/admin-openrc.sh #使环境生效
iaas-install-glance.sh
iaas-install-nova-controller.sh
iaas-install-neutron-controller.sh
iaas-install-dashboard.sh
配置compute网卡
cat > /etc/sysconfig/network-scripts/ifcfg-eth0<<EOF
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=4fc1a2dd-5286-4760-a02d-74f212f0b3ac
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.126.71
DNS1=8.8.8.8
GATEWAY=192.168.126.2
EOF
cat > /etc/sysconfig/network-scripts/ifcfg-eth1<<EOF
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth1
UUID=6f4aff52-ff0e-4319-9678-f013584b0fd1
DEVICE=eth1
ONBOOT=yes
IPADDR=192.168.200.11
DNS1=8.8.8.8
GATWAY=192.168.126.2
EOF
systemctl restart network
配置compute分区
fdisk /dev/sdb
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-62914559,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-62914559,默认为 62914559):+15G
分区 1 已设置为 Linux 类型,大小设为 15 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p):
Using default response p
分区号 (2-4,默认 2):
起始 扇区 (31459328-62914559,默认为 31459328):
将使用默认值 31459328
Last 扇区, +扇区 or +size{K,M,G} (31459328-62914559,默认为 62914559):
将使用默认值 62914559
分区 2 已设置为 Linux 类型,大小设为 15 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
配置compute源
cp /etc/yum.repos.d/ /etc/yum.repos.d.bak -r
rm -fr /etc/yum.repos.d/*
cat > /etc/yum.repos.d/local.repo <<EOF
[centos]
name=centos
baseurl=ftp://192.168.126.70/centos
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=ftp://192.168.126.70/iaas-repo
gpgcheck=0
enabled=1
EOF
yum clean all #清除yum源缓存
yum repolist #列出所有可用的yum源
安装compute端软件
yum install -y vim iaas-xiandian #安装所需的软件包
scp 192.168.126.70:/etc/xiandian/openrc.sh /etc/xiandian/
vim /etc/xiandian/openrc.sh
修改
INTERFACE_IP=192.168.126.71 #本机IP地址
iaas-pre-host.sh #刷完该脚本后需要重启
reboot
iaas-install-nova-compute.sh
iaas-install-neutron-compute.sh
配置成功后网卡2 ip消失
控制台操作
进入登录页面
http://controller-ip/dashboard/
用户
设置修改用户密码
[root@controller ~]# openstack user set --password 'password' test
[root@controller ~]# openstack user set --password '000000' test
云主机类型
根磁盘的大小必须比镜像设置的大,而不是镜像的实际大小,下面的设置错了,至少要8G以上,设置9G
镜像
网络
网络拓扑
新建路由
创建主机
浮动ip
安全组
此时无法连接和ping,openstack设置了安全组,只能出不能入
云主机选择安全组,或者在创建云主机时选择安全组,默认时default安全组
问题及解决
步骤出错或者配置错误重新配置
最好保存镜像直接还原
chrony起不来
修改第七行
controller端
vi /etc/chrony.conf
server ntp.aliyun.com iburst
systemctl restart chronyd.service
copute端
vi /etc/chrony.conf
server controller
systemctl restart chronyd.service
控制节点
iaas-install-neutron-controller.sh报错
这是不按照教程的镜像才有的错误
1:openstack-nova-console-17.0.10-1.el7.noarch 有缺少的需求 python-websockify >= ('0', '0.8.0', None)
1:openstack-nova-novncproxy-17.0.10-1.el7.noarch 有缺少的需求 python-websockify >= ('0', '0.8.0', None)
[Errno 2] No such file or directory: '/etc/neutron/neutron.conf'
[Errno 2] No such file or directory: '/etc/neutron/neutron.conf'
[Errno 2] No such file or directory: '/etc/neutron/neutron.conf'
[Errno 2] No such file or directory: '/etc/neutron/neutron.conf'
版本冲突的问题,解决方法如下:https://ask.csdn.net/questions/7746766
yum remove libxslt.x86_64
yum install libxslt-1.1.28-5.el7.x86_64
edge默认无法访问ftp,修改设置
云主机创建出错
将云主机的根磁盘改为9G即可,因为这是镜像设置的最大大小为8G,镜像实际的大小只有几百M,但磁盘还是必须比设置的大
controller运行正确的截图
运行后基本都是Create symlink 结束,或者结束、Sucess