系列文章目录
目录
openstack简介
Openstack是一个控制着大量计算能力、存储、乃至于整个数据中心网络资源的云操作系统,通过Dashboard这个Web界面,让管理员可以控制、赋予他们的用户去提供资源的权限(即:能够通过Dashboard控制整个Openstack云计算平台的运作)。
作为IaaS层的云操作系统,OpenStack为虚拟机提供并管理三大类资源:计算、网络和存储。
openstack官网文档地址:https://docs.openstack.org/
openstack中文文档地址:https://docs.openstack.org/zh_CN/
openstack架构说明
整体架构
OpenStack是由一系列具有RESTful接口的Web服务所实现的,是一系列组件服务集合。如下图为OpenStack的概念架构,我们看到的是一个标准的OpenStack项目组合的架构。这是比较典型的架构,但不代表这是OpenStack的唯一架构,我们可以选取自己需要的组件项目,来搭建适合自己的云计算平台。
整个OpenStack可是由控制节点,计算节点,网络节点,存储节点四大部分组成,openstack的各组件对应各自相关的节点。(这四个节点也可以安装在一台机器上,单机部署)其中:
- 控制节点:
负责对其余节点的控制,包含虚拟机建立,迁移,网络分配,存储分配等等。
- 计算节点:
负责虚拟机运行。
- 网络节点:
负责对外网络与内网络之间的通信。
- 存储节点:
负责对虚拟机的额外存储管理。
在实际生产环境根据本身的服务器资源合理分配openstack服务
主要模块介绍
在部署私有云环境时,只需要用到6个模块,简介如下
- Nova :计算模块(Compute)
一套控制器,用于为单个用户或使用群组管理虚拟机实例的整个生命周期,负责虚拟机创建、开机、关机、挂起、暂停、调整、迁移、重启、销毁等操作。
- Glance:镜像服务(Image Service)
一套虚拟机镜像查找及检索系统,支持多种虚拟机镜像格式(AKI、AMI、ARI、ISO、QCOW2、Raw、VMDK),有创建上传镜像、删除镜像、编辑镜像基本信息的功能。
- Keystone:身份服务(Identity Service)
为OpenStack其他服务提供身份验证、服务规则和服务令牌的功能,管理Domains、Projects、Users、Groups、Roles。
- Neutron:网络&地址管理(Network)
提供云计算的网络虚拟化技术,为OpenStack其他服务提供网络连接服务。为用户提供接口,可以定义Network、Subnet、Router,配置DHCP、DNS、负载均衡、L3服务,网络支持GRE、VLAN。
- Cinder:块存储 (Block Storage)
为运行实例提供稳定的数据块存储服务,它的插件驱动架构有利于块设备的创建和管理,如创建卷、删除卷,在实例上挂载和卸载卷。
- Horizon:UI 界面 (Dashboard)
OpenStack中各种服务的Web管理门户,用于简化用户对服务的操作,例如:启动实例、分配IP地址、配置访问控制等。
安装教程
接下进入安装的部分,简单说明规划。
主机规划
主机名 | IP地址 | 操作系统 | 内存 | 存储 | 主机用途 |
---|---|---|---|---|---|
controller01 | 192.168.1.100 | centos7 | 128G | 4T | 控制节点、计算节点、存储节点、网络节点 |
后期支持扩展或者迁移节点
环境准备
-
检查cpu虚拟化是否开启
>一个KVM(kernel-based virtual machine)虚拟机在宿主机上就是一个 qemu-kvm进程,与其他Linux进程一样被调用。 虚拟机的每个虚拟CPU则对应 qemu-kvm进程中的一个进程。 因此,虚拟CPU可以超过物理CPU的数量,叫CPU超配。在本机CPU核数达到一定数量的时候,可以不开启,非必要步骤。
检查是否支持cpu虚拟化,在终端执行
cat /proc/cpuinfo
命令,找到flags
部分,如果其中输出有VMX或SVM
,即表明支持虚拟化技术。
cat /proc/cpuinfo | grep vmx ##(for Intel CPU)
or
cat /proc/cpuinfo | grep svm ##(for AMD CPU)
查看控制台输入命令:
dmesg |grep kvm [ 4.914811] kvm: VM_EXIT_LOAD_IA32_PERF_GLOBAL_CTRL does not work properly. Using workaround
这样说明没有开启。
开启cpu虚拟化教程:https://zhidao.baidu.com/question/2121998427117068627.html
-
修改hostname
将本机的hostname修改为controller01.
控制台输入vi /etc/hosts
编辑本机host文件
添加以下内容:192.168.1.100 controller01 controller01.controller01
命令行输入
service network restart
重启network.service
,使之生效。 -
更新yum源
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
yum clean all
yum update
- 关闭SElinux
SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。设想一下,如果一个以 root 身份运行的网络服务存在 0day 漏洞,黑客就可以利用这个漏洞,以 root 的身份在您的服务器上为所欲为了。SELinux 就是来解决这个问题的。
openstack 关闭selinux主要是为了降低ssh等操作的可能出现的权限限制,后面将下载openstack-selinux进行取代。
sed -i '/^SELINUX=.*/c SELINUX=disabled' /etc/selinux/config
sed -i 's/^SELINUXTYPE=.*/SELINUXTYPE=disabled/g' /etc/selinux/config
grep --color=auto '^SELINUX' /etc/selinux/config
setenforce 0
- 关闭NetworkManager
systemctl stop NetworkManager
systemctl disable NetworkManager
- 重启
下载相关安装包
- 安装openstack的所有组件包
yum list | grep openstack*
yum -y install centos-release-openstack-train
yum -y install python-openstackclient
yum install -y openstack-selinux.noarch
yum install -y openstack-utils
- 安装rdo
yum install https://rdoproject.org/repos/rdo-release.rpm -y
- 安装packstack安装工具
yum -y install openstack-packstack
部署openstack
主要使用packstack
进行快速安装openstack
-
生成默认配置文件
命令行执行packstack --gen-answer-file=~/openstack.txt
用户目录生成openstack.txt
文件 -
修改默认配置
vi openstack.txt
进行相关配置修改CONFIG_SWIFT_INSTALL=n #y-n SWIFT是OpenStack的对象存储组件,默认是Y,在生产环境中一般是不装,所以改n CONFIG_AODH_INSTALL=n #y-n 不安装该服务 CONFIG_COMPUTE_HOSTS=192.168.1.100 #计算节点ip地址 CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vxlan,flat CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vxlan CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch CONFIG_NEUTRON_ML2_FLAT_NETWORKS=physnet1 #flat网络这边要设置物理网卡名字 CONFIG_NEUTRON_L2_AGENT=openvswitch #L2网络的代理模式,也可选择linuxbridge CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex #这边要设置物理网卡的名字 CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0 #这边br-ex:eth0是网络节点的nat网卡,到时候安装完毕之后IP地址会漂到这个上
本机网卡可使用
ifconfig
进行查看 -
更改密码(******)
sed -i -r 's/(.+_PW)=.+/\1=******/' openstack.txt
- 备份配置文件
egrep -v "^#|^$" openstack.txt >openstack.txt.bak1
- 执行安装
输入以下命令进行安装:
packstack --answer-file=openstack.txt
安装成功后,可访问http://$IP/dashboard
相关的用户名密码可在用户目录的/root/keystonerc_admin
查看
- 查看运行openstack服务列表
控制台输入openstack-service list
查看启动的openstack服务如下:
[root@controller01 ~]# openstack-service list
neutron-destroy-patch-ports
neutron-dhcp-agent
neutron-l3-agent
neutron-metadata-agent
neutron-metering-agent
neutron-openvswitch-agent
neutron-server
openstack-ceilometer-notification
openstack-ceilometer-polling
openstack-cinder-api
openstack-cinder-scheduler
openstack-cinder-volume
openstack-glance-api
openstack-glance-registry
openstack-gnocchi-metricd
openstack-gnocchi-statsd
openstack-losetup
openstack-nova-compute
openstack-nova-conductor
openstack-nova-novncproxy
openstack-nova-scheduler
...
修改openstack配置
修改实例存储位置
通过修改nova的配置文件配置项 vi /etc/nova/nova.conf
实现自定义日志目录、实例存储目录、快照存储目录
instances_path=/test/openstack/instances #实例存储目录
state_path=/test/openstack/nova
log_dir=/test/openstack/log/nova # 日志存储目录
snapshots_directory=/test/openstack/snapshots #快照存储目录
通过以下命令授权目录
chown -R nova:nova /test/openstack/instances
chown -R nova:nova /test/openstack/nova
chown -R nova:nova /test/openstack/log/nova
chown -R nova:nova /test/openstack/snapshots
重启nova-compute服务:systemctl restart openstack-nova-compute.service
修改镜像存储位置
通过修改glance的配置文件配置项 vi /etc/glance/glance-api.conf
实现自定义镜像存储目录
filesystem_store_datadir=/test/openstack/glance/images/
通过以下命令授权目录
chown -R glance:glance test/openstack/glance/images/
重启glance服务:systemctl restart openstack-glance-api.service openstack-glance-registry.service
问题与解决
- openstack登录dashboard无法获取实例,无法获取镜像
查看nova错误日志
grep ‘ERROR’ /var/log/nova/*
/var/log/nova/nova-api.log:2019-07-30 17:28:54.468 3043 ERROR nova.api.openstack.wsgi
[req-658adbbb-614e-49fe-a4cd-1c3e0a1eee13 4a01afbb5b3c45feb53fbbf186a615a3
71daca9bc26f44f2b1da8a490cde9348 - default default] Unexpected exception in API
method: OperationalError: (pymysql.err.OperationalError) (1040, u’Too many
connections’) (Background on this error at: http://sqlalche.me/e/e3q8)
应该是数据库的连接数满了,增大数据库连接数就行。
- 修改mariadb.service文件
vi /usr/lib/systemd/system/mariadb.service
在[Service]新添加两行参数:
LimitNOFILE=10000
LimitNPROC=10000
- 重新加载系统服务,并重启mariadb
systemctl --system daemon-reload
systemctl restart mariadb.service
- 进入数据库查看最大连接数:
MariaDB [(none)]> show global variables like ‘%max_conn%’;
±----------------------±------+
| Variable_name | Value |
±----------------------±------+
| extra_max_connections | 1 |
| max_connect_errors | 100 |
| max_connections | 4096 |
±----------------------±------+
- 出现
/usr/bin/openstack domain list --quiet --format csv HTTP 500
这个是一个表面的错误,需要进入***/controller.pp的log进行查看,根据log定位问题,一般主要出现在数据库、配置项、文件目录权限这几个方向,具体问题具体解决。
openstack 日志目录列表
openstack少说也有10个服务,日志对于一个稳定的系统来说相当重要,对于OpenStack这样一个大型的系统,日志当然也是必不可少,理解Openstack系统的日志对于保证OpenStack环境稳定非常重要。对于出现系统错误,查看日志是一个很好的习惯。
OpenStack通过生成大量日志信息来帮助排查系统安装运行期间出现的问题,接下来介绍几个常见服务的相关日志位置。
Nova日志
OpenStack计算服务日志默认位于/var/log/nova
,默认权限拥有者是nova用户。需要注意的是,并不是每台服务器上都包含所有的日志文件,例如nova-compute.log仅在计算节点生成。
log名称 | 作用 |
---|---|
nova-compute.log | 虚拟机实例在启动和运行中产生的日志 |
nova-manage.log | 运行nova-manage命令时产生的日志 |
nova-scheduler.log | 有关调度的,分配任务给节点以及消息队列的相关日志 |
nova-api.log | 用户与OpenStack交互以及OpenStack组件间交互的消息相关日志 |
Dashboard日志
Dashboard是一个DJango的web应用程序,默认运行在Apache服务器上,相应的运行日志也都记录在Apache的日志中,用户可以在/var/log/apache2/
中查看。
存储日志
对象存储Swift默认日志写到syslog中,在Ubuntu系统中,可以通过/var/log/syslog
查看,在其他系统中,可能位于/var/log/messages
中。
块存储Cinder产生的日志默认存放在/var/log/cinder
目录中
log名称 | 作用 |
---|---|
cinder-api.log | 关于cinder-api服务的细节 |
cinder-scheduler.log | 关于cinder调度服务的操作的细节 |
cinder-volume.log | 与cinder卷服务相关的日志项 |
Keystone日志
身份认证Keystone服务的日志记录在/var/log/keystone/keystone.log
中。
Glance日志
镜像服务Glance的日志默认存放在/var/log/glance
目录中
log名称 | 作用 |
---|---|
api.log | Glance API相关的日志 |
registry.log | Glance registry服务相关的日志 |
根据日志配置的不同,会保存诸如元信息更新和访问记录这些信息。
Neutron日志
网络服务Neutron的日志默认存放在/var/log/neutron
目录中
log名称 | 作用 |
---|---|
dhcp-agent.log | 关于dhcp-agent的日志 |
l3-agent.log | 与l3代理及其功能相关的日志 |
metadata-agent.log | 通过neutron代理给Nova元数据服务的相关日志 |
openvswitch-agent.log | 与openvswitch相关操作的日志项,在具体实现OpenStack网络时,如果使用了不同的插件,就会有相应的日志文件名 |
server.log | 与Neutron API服务相关的日志 |
openstack 配置目录列表
Nova配置
OpenStack计算服务配置默认位于/etc/nova
,默认权限拥有者是nova用户。
存储配置
块存储Cinder配置默认存放在/etc/cinder
目录中
Keystone配置
身份认证Keystone服务配置在/etc/keystone/
中。
Glance配置
镜像服务Glance的配置默认存放在/etc/glance
目录中
Neutron配置
镜像服务Glance的配置默认存放在/etc/neutron
目录中
openstack 服务端口号列表
openstack组件使用的默认端口号
openstack service | default ports | port type |
---|---|---|
openstack service default ports port type | ||
Block Storage (cinder) | 8776 | publicurl and adminurl |
Compute (nova) endpoints | 8774 | publicurl and adminurl |
Compute API (nova-api) | 8773, 8775 | |
Compute ports for access to virtual machine consoles | 5900-5999 | |
Compute VNC proxy for browsers ( openstack-nova-novncproxy) | 6080 | |
Compute VNC proxy for traditional VNC clients (openstack-nova-xvpvncproxy) | 6081 | |
Proxy port for HTML5 console used by Compute service | 6082 | |
Data processing service (sahara) endpoint | 8386 | publicurl and adminurl |
Identity service (keystone) administrative endpoint | 35357 | adminurl |
Identity service public endpoint | 5000 | publicurl |
Image service (glance) API | 9292 | publicurl and adminurl |
Image service registry | 9191 | |
Networking (neutron) | 9696 | publicurl and adminurl |
Object Storage (swift) | 6000, 6001, 6002 | |
Orchestration (heat) endpoint | 8004 | publicurl and adminurl |
Telemetry (ceilometer) | 8777 | publicurl and adminurl |
非openstack组件使用的默认端口号
openstack service | default ports | used by |
---|---|---|
openstack service default ports used by | ||
HTTP | 80 | OpenStack dashboard (Horizon) when it is not configured to use secure access. |
HTTP alternate | 8080 | OpenStack Object Storage (swift) service. |
HTTPS | 443 | Any OpenStack service that is enabled for SSL, especially secure-access dashboard. |
rsync | 873 | OpenStack Object Storage. Required. |
iSCSI target | 3260 | OpenStack Block Storage. Required. |
MySQL database service | 3306 | Most OpenStack components. |
Message Broker (AMQP traffic) | 5672 | OpenStack Block Storage, Networking, Orchestration, and Compute. |
参考
https://www.jianshu.com/p/7e99604fe83f
https://blog.csdn.net/u013355826/article/details/100577385
https://blog.csdn.net/shiyuqi_blog/article/details/97803387
https://blog.csdn.net/weixin_42506599/article/details/101287608
https://www.cnblogs.com/diantong/p/11962045.html
https://blog.csdn.net/henulwj/article/details/47276391