你好,游客 登录 注册 搜索
背景:
阅读新闻

CentOS7.2下安装部署OpenStack+KVM 云平台虚拟化环境详解

[日期:2017-02-08] 来源:Linux社区  作者:kevingrace [字体: ]

公司在IDC机房有两台很高配置的服务器,计划在上面部署OpenStack云平台虚拟化环境,用于承载后期开发测试和其他的一些对内业务。以下对OpenStack的部署过程及其使用做一详细介绍,仅仅依据本人实际经验而述,如有不当,敬请指出~

********************************************************************************************************************************

1 OpenStack 介绍

1.1 百度百科
OpenStack 是一个由 NASA ( 美国国家航空航天局)和 Rackspace 合作研发并发起的,以 Apache
许可证授权的自由软件和开放源代码项目。

1.2 版本历史

1.3 OpenStack 架构概念

1.4 OpenStack 各个服务名称对应

 

***************************************************************************************************************

以下安装部署已经过测试,完全通过!

建议在物理机上部署OpenStack,并且是CentOS7或Ubuntu系统下,centos6x的源里已不支持OpenStack部分组件下载了。

2 环境准备
OpenStack 主机名不能改,装的时候是什么就是什么, 运维标准化。

1、 CentOS 7.2 系统 2 台
node1 即作为控制节点,也作为计算节点;(即可以单机部署,单机部署时则下面记录的控制节点和计算节点的操作步骤都要在本机执行下)
node2 就只是计算节点
控制节点去操控计算节点,计算节点上可以创建虚拟机

linux-node1.OpenStack   192.168.1.17 网卡 NAT em2 (外网ip假设是58.68.250.17)(em2是内网网卡,下面neutron配置文件里会设置到)
linux-node2.OpenStack   192.168.1.8   网卡 NAT em2

控制节点:linux-node1.OpenStack    192.168.1.17                                                                                    

                     

计算节点:linux-node2.OpenStack 192.168.1.8  

 

2.域名解析和关闭防火墙 (控制节点和计算节点都做)
/etc/hosts                                                         #主机名一开始设置好,后面就不能更改了,否则就会出问题!这里设置好ip与主机名的对应关系
192.168.1.17 linux-node1.OpenStack     
192.168.1.8   linux-node2.OpenStack 

关闭 selinux
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux
setenforce 0
关闭 iptables
systemctl start firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service

3 安装配置 OpenStack
官方文档 http://docs.OpenStack.org/

3.1 安装软件包

linux-node1.OpenStack   安装

*************************************************************************************

#Base
yum install -y http://dl.Fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm
yum install -y centos-release-OpenStack-liberty
yum install -y python-OpenStackclient

##MySQL
yum install -y mariadb mariadb-server MySQL-python

##RabbitMQ
yum install -y rabbitmq-server

##Keystone
yum install -y OpenStack-keystone httpd mod_wsgi memcached python-memcached

##Glance
yum install -y OpenStack-glance python-glance python-glanceclient

##Nova
yum install -y OpenStack-nova-api OpenStack-nova-cert OpenStack-nova-conductor OpenStack-nova-console OpenStack-nova-novncproxy OpenStack-nova-scheduler python-novaclient

##Neutron linux-node1.example.com
yum install -y OpenStack-neutron OpenStack-neutron-ml2 OpenStack-neutron-linuxbridge python-neutronclient ebtables ipset

##Dashboard
yum install -y OpenStack-dashboard

##Cinder
yum install -y OpenStack-cinder python-cinderclient

*************************************************************************************

linux-node2.OpenStack   安装

##Base
yum install -y http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm
yum install centos-release-OpenStack-liberty
yum install python-OpenStackclient

##Nova linux-node2.OpenStack
yum install -y OpenStack-nova-compute sysfsutils

##Neutron linux-node2.OpenStack
yum install -y OpenStack-neutron OpenStack-neutron-linuxbridge ebtables ipset

##Cinder
yum install -y OpenStack-cinder python-cinderclient targetcli python-oslo-policy

*************************************************************************************

3.2 设置时间同步、 关闭 selinux 和 iptables
在 linux-node1 上配置( 只有 centos7 能用, 6 还用 ntp)
[root@linux-node1 ~]# yum install -y chrony
[root@linux-node1 ~]# vim /etc/chrony.conf
allow 192.168/16 #允许那些服务器和自己同步时间
[root@linux-node1 ~]# systemctl enable chronyd.service    #开机启动
[root@linux-node1 ~]# systemctl start chronyd.service
[root@linux-node1 ~]# timedatectl set-timezone Asia/Shanghai     #设置时区
[root@linux-node1 ~]# timedatectl status
Local time: Fri 2016-08-26 11:14:19 CST
Universal time: Fri 2016-08-26 03:14:19 UTC
RTC time: Fri 2016-08-26 03:14:19
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a

在 linux-node2 上配置
[root@linux-node2 ~]# yum install -y chrony
[root@linux-node2 ~]# vim /etc/chrony.conf
server 192.168.1.17 iburst #只留一行
[root@linux-node2 ~]# systemctl enable chronyd.service
[root@linux-node2 ~]# systemctl start chronyd.service
[root@linux-node2 ~]# timedatectl set-timezone Asia/Shanghai
[root@linux-node2 ~]# chronyc sources

3.3 安装及配置 mysql

[root@linux-node1 ~]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf                   #或者是/usr/share/mariadb/my-medium.cnf
[mysqld]
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
[root@linux-node1 ~]# systemctl enable mariadb.service                                                      #Centos7里面mysql叫maridb
[root@linux-node1 ~]# ln -s '/usr/lib/systemd/system/mariadb.service' '/etc/systemd/system/multi-user.target.wants/mariadb.service'
[root@linux-node1 ~]# mysql_install_db --datadir="/var/lib/mysql" --user="mysql"               #初始化数据库
[root@linux-node1 ~]# systemctl start mariadb.service
[root@linux-node1 ~]# mysql_secure_installation                                                                 #设置密码及初始化
密码 123456,一路 y 回车

创建数据库
[root@OpenStack-server ~]# mysql -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 5579
Server version: 5.5.50-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE keystone;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone';
MariaDB [(none)]> CREATE DATABASE glance;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'glance';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance';
MariaDB [(none)]> CREATE DATABASE nova;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova';
MariaDB [(none)]> CREATE DATABASE neutron;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'neutron';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'neutron';
MariaDB [(none)]> CREATE DATABASE cinder;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'cinder';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema   |
| cinder                       |
| glance                       |
| keystone                    |
| mysql                        |
| neutron                     |
| nova                         |
| performance_schema |
+--------------------+
8 rows in set (0.00 sec)

MariaDB [(none)]>

----------------------------------------------------------------------------------------------------------------------------
修改下mysql的连接数,否则OpenStack后面的操作会报错:“ERROR 1040 (08004): Too many connections ”
----------------------------------------------------------------------------------------------------------------------------

3.4 配置 rabbitmq
MQ 全称为 Message Queue, 消息队列( MQ)是一种应用程序对应用程序的通信方法。应用
程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。
消 息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通
信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。
队列的使用除去了接收和发送应用程序同时执行的要求。
RabbitMQ 是一个在 AMQP 基础上完整的,可复用的企业消息系统。他遵循 Mozilla Public
License 开源协议。
启动 rabbitmq, 端口 5672,添加 OpenStack 用户

[root@linux-node1 ~]# systemctl enable rabbitmq-server.service
[root@linux-node1 ~]# ln -s '/usr/lib/systemd/system/rabbitmq-server.service' '/etc/systemd/system/multi-user.target.wants/rabbitmq-server.service'
[root@linux-node1 ~]# systemctl start rabbitmq-server.service
[root@linux-node1 ~]# rabbitmqctl add_user OpenStack openstack                               #添加用户及密码
[root@linux-node1 ~]# rabbitmqctl set_permissions OpenStack ".*" ".*" ".*"                                   #允许配置、写、读访问 OpenStack
[root@linux-node1 ~]# rabbitmq-plugins list                                 #查看支持的插件
.........
[ ] rabbitmq_management 3.6.2                                    #使用此插件实现 web 管理
.........
[root@linux-node1 ~]# rabbitmq-plugins enable rabbitmq_management #启动插件
The following plugins have been enabled:
mochiweb
webmachine
rabbitmq_web_dispatch
amqp_client
rabbitmq_management_agent
rabbitmq_management
Plugin configuration has changed. Restart RabbitMQ for changes to take effect.
[root@linux-node1 ~]# systemctl restart rabbitmq-server.service

[root@linux-node1 ~]#lsof -i:15672

访问RabbitMQ,访问地址是http://58.68.250.17:15672
默认用户名密码都是guest,浏览器添加OpenStack用户到组并登陆测试,连不上情况一般是防火墙没有关闭所致!

之后退出使用 OpenStack 登录
如何使用 zabbix 监控?
左下角有 HTTP API 的介绍,可以实现 zabbix 的监控

*********************************************************************************************

以上完成基础环境的配置,下面开始安装 OpenStack 的组件

完整PDF文档可以到Linux公社资源站下载:

------------------------------------------分割线------------------------------------------

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2017年资料/2月/8日/CentOS7.2下安装部署OpenStack+KVM 云平台虚拟化环境详解/

下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm

------------------------------------------分割线------------------------------------------

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-02/140386.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款