02.OpenStack基础环境
- 1.OpenStack基本概述
- 2.OpenStack项目组件
- 3.OpenStack实践环境
- 4.OpenStack基础服务安装
- 5.OpenStack基础服务MySQL
- 6.OpenStack基础服务RabbitMQ
- 7.OpenStack基础服务Memcached
徐亮伟, 江湖人称标杆徐。多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。擅长Web集群架构与自动化运维,曾负责国内某大型电商运维工作。
个人博客"徐亮伟架构师之路"累计受益数万人。
笔者Q:552408925、572891887
架构师群:471443208
1.OpenStack基本概述
OpenStack是一个开源的云计算管理平台项目,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。
OpenStack支持几乎所有类型的云环境,OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。
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"
7.修改允许openStack用户登陆RabbitMQ消息队列服务,修改成功后退出重新登陆即可。
password: "openstack"
Tags: "administrator"
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