02.OpenStack基础环境

徐亮伟, 江湖人称标杆徐。多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。擅长Web集群架构与自动化运维,曾负责国内某大型电商运维工作。
个人博客"徐亮伟架构师之路"累计受益数万人。
笔者Q:552408925、572891887
架构师群:471443208

1.OpenStack基本概述

 OpenStack是一个开源的云计算管理平台项目,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台
 OpenStack支持几乎所有类型的云环境,OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。
OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。
OpenStack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性。
本文希望通过提供必要的指导信息,帮助大家利用OpenStack前端来设置及管理自己的公共云或私有云。

openstack架构

Openstack基础架构

2.OpenStack项目组件

服务名称 项目名称 描述
Dashboard Horizon 基于OpenStack接口使用django开发的WEB管理
Compute Nova 通过虚拟化技术提供计算资源池
存储Storage
Object Storage Swift 对象存储,适合一次写入多次读取
Block Storage Cinder 块存储,提供存储资源池
共享服务Shared services
IdentityService Keystone 认证管理
ImageService Glance 提供虚拟镜像的注册和存储管理
Telemetry Ceilometer 提供监控和数据采集、计量服务
高级服务Higher-level services
Orchestration Heat 自动化部署的组件
DatabaseService Trove 提供数据库应用服务

3.OpenStack实践环境

注意:环境必须和本指南保持一致,对于环境不一致者,我不保证通过此文档能完成OpenStack搭建。

  • 电脑一台,内存>=8G,可用磁盘空间大于 100G。
  • 安装 VMware Workstation虚拟机软件,用于创建虚拟机。
  • 创建两台虚拟机,安装CentOS-7.x-x86_64系统。

生产部署OpenStack,参考使用如下SOA方式部署

以下重要服务做好相关备份以及集群(仅供参考,如有更好建议,请联系QQ:552408925)

主机名(FQDN) IP地址(NAT) 描述 部署服务
openstack-controller-node1 eth0:10.10.10.10 控制节点 Nova、Neutron、cinder
openstack-compute-node1 eth0:10.10.10.20 计算节点 Nova、Neutron、cinder
openstack-keystone-node1 eth0:10.10.10.30 认证服务 Keystone
openstack-glance-node1 eth0:10.10.10.40 镜像服务 Glance
openstack-memcached-node1 eth0:10.10.10.50 缓存服务 Memcached
openstack-rabbitmq-node1 eth0:10.10.10.60 消息队列服务 RabbitMQ
openstack-mysql-node1 eth0:10.10.10.70 数据库服务 MySQL
openstack-dashboard-node1 eth0:10.10.10.100 可视化UI Dashboard

注意: 本指南实践环境如下

主机名(FQDN) IP地址(NAT) 描述 设备
linux-node1.xuliangwei.com eth0:192.168.56.11 控制节点 1VCPU、2G内存、50G硬盘(动态)
linux-node2.xuliangwei.com eth0:192.168.56.12 计算节点 1VCPU、2G内存、50G硬盘(动态)

作为OpenStack的服务和虚拟机的数量增加,所以做了最佳性能的硬件要求。如果性能使更多的服务或虚拟机后下降,考虑增加硬件资源环境。(实验环境控制节点内存4G最佳)

为了统一环境,保证实验的通用性,建议将网卡名称设置为 eth*,不使用 CentOS7 默认的网卡命名规则。
1.安装CentOS7.x系统时在启动选项增加内核参数。net.ifnames=0 biosdevname=0
2.如果已安装CentOS7.x,参考CentOS7配置eth0

3.1系统初始化

1.安装 EPEL 仓库和常用命令
rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm 
yum install -y net-tools vim wget lrzsz tree screen lsof tcpdump 
 
2.关闭 NetworkManager 和防火墙 
systemctl disable firewalld 
systemctl disable NetworkManager

3.关闭SELinux并确认处于关闭状态 
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
grep SELINUX=disabled /etc/selinux/config
setenforce 0

4.调整文件描述符
echo '*   -    nofile   100000 ' >>/etc/security/limits.conf

5.更新系统并重启
[root@linux-node1 ~]# yum update -y && reboot

3.2域名解析服务

配置hosts域名解析,如果开始了OpenStack部署,一定不要修改主机名,否则会引起意想不到的结果。

1.设置hostname

#VM1 hostname
echo linux-node1.xuliangwei.com > /etc/hostname
hostname linux-node1.xuliangwei.com

#VM2 hostname
echo linux-node2.xuliangwei.com > /etc/hostname
hostname linux-node2.xuliangwei.com

2.解析hostname

#VM1 hosts
[root@linux-node1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.56.11 linux-node1 linux-node1.xuliangwei.com
192.168.56.12 linux-node2 linux-node2.xuliangwei.com


#VM2 hosts
[root@linux-node2 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.56.11 linux-node1.xuliangwei.com   linux-node1
192.168.56.12 linux-node2.xuliangwei.com   linux-node2

3.3时间服务NTP

1.OpenStack控制节点部署chrony时间同步

[root@linux-node1 ~]# yum install chrony -y

2.编辑/etc/chrony.conf文件并添加以下项,根据需要为您的环境(这步可跳过)

server time.windows.com iburst

3.为了让其他节点连接到chrony守护进程在控制器上,添加以下关键至/etc/chrony.conf文件

allow 192.168/16

4.启动NTP服务,并将其配置为在系统启动时启动

[root@linux-node1 ~]# systemctl enable chronyd.service
[root@linux-node1 ~]# systemctl start chronyd.service

5.设置并查看时区

[root@linux-node1 ~]# timedatectl set-timezone Asia/Shanghai
[root@linux-node1 ~]# timedatectl status  #查看时区
      Local time: 六 2016-09-24 20:48:29 CST
  Universal time: 六 2016-09-24 12:48:29 UTC
        RTC time: 六 2016-09-24 12:48:29
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

4.OpenStack基础服务安装

1.安装OpenStack Newton版、安装OpenStack客户端

[root@linux-node1 ~]# yum install https://rdoproject.org/repos/rdo-release.rpm -y
[root@linux-node1 ~]# yum install centos-release-openstack-newton python-openstackclient -y

5.OpenStack基础服务MySQL

OpenStack服务使用SQL数据库来存储信息。该数据库通常在控制器节点上运行。本指南中使用MariaDB程序。OpenStack服务还支持其他SQL数据库包括PostgreSQL。

1.安装MySQL服务

[root@linux-node1 ~]# yum install mariadb mariadb-server python2-PyMySQL -y

2.创建和编辑/etc/my.cnf.d/openstack.cnf文件并添加以下部分

[root@linux-node1 ~]# vim /etc/my.cnf.d/openstack.cnf
[mysqld]
...
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8

3.启动数据库服务,并将其配置为在系统启动时启动

[root@linux-node1 ~]# systemctl enable mariadb.service
[root@linux-node1 ~]# systemctl start mariadb.service

4.通过运行mysql_secure_installation脚本安全数据库服务。为数据库帐户配置合适的密码(生产建议使用openssl rand -hex 10生成密码)

#本指南使用密码为: 123456

[root@linux-node1 ~]# mysql_secure_installation

6.OpenStack基础服务RabbitMQ

OpenStack使用消息队列来协调服务的操作和状态信息。消息队列服务通常在控制器节点上运行。
OpenStack支持多消息队列服务包括RabbitMQ,QPID,和ZeroMQ。然而,大多数分布包OpenStack支持一个特定的消息队列服务。
本指南使用RabbitMQ消息队列服务因为大多数发行版支持。如果您喜欢实现不同的消息队列服务,请查阅与之相关的文档。

1.安装RabbitMQ服务

[root@linux-node1 ~]# yum install -y rabbitmq-server

2.启动消息队列服务,并将其配置为启动系统时启动

[root@linux-node1 ~]# systemctl enable rabbitmq-server.service
[root@linux-node1 ~]# systemctl start rabbitmq-server.service

3.检查RabbitMQ的"5672"端口

[root@linux-node1 ~]# netstat -lntp|grep 5672
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      76234/beam
tcp6       0      0 :::5672                 :::*                    LISTEN      76234/beam

4.RabbitMQ新建OpenStack用户,并授权读写权限

[root@linux-node1 ~]# rabbitmqctl add_user openstack openstack
[root@linux-node1 ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"

5.启动RabbitMQ_Web插件,管理界面监听15672端口

[root@linux-node1 ~]# rabbitmq-plugins enable rabbitmq_management
[root@linux-node1 ~]# systemctl restart rabbitmq-server.service

6.访问RabbitMQ_SERVER_IP:15672,用户: "guest" 密码: "guest"

RabbitMQ登陆

图1-1

7.修改允许openStack用户登陆RabbitMQ消息队列服务,修改成功后退出重新登陆即可。
password: "openstack"
Tags: "administrator"

RabbitMQ修改

图1-2

7.OpenStack基础服务Memcached

对身份认证服务使用Memcached的缓存存储。Memcached的服务通常运行在控制器节点上。对于生产部署,建议启用防火墙,身份验证和加密的组合来保护它。

1.安装Memcached服务

[root@linux-node1 ~]# yum install memcached python-memcached -y

2.启动memcached服务并将其配置为启动系统时启动

[root@linux-node1 ~]# systemctl enable memcached.service
[root@linux-node1 ~]# systemctl start memcached.service