Openstack-笔记(一)

Openstack-笔记一

文章分享


简介

OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。 
Openstack官网:https://www.openstack.org/ 
github地址:https://github.com/openstack/


Openstack核心组件

屏幕快照 2019-04-16 上午11.21.01.png-129.4kB
任何计算机信息系统无外乎三大核心,计算、存储、网络。大致罗列Openstack的一些核心项目,具体内容可去Openstack官网和Github上查看具体的项目内容。

概念架构图: 
屏幕快照 2019-04-16 上午11.22.43.png-278.3kB

Nova(计算服务组件) :Nova组件主要有三个模块构成(nova-api,nova-scheduler,nova-compute),nova-api在表示层主要负责处理外部请求,nova-scheduler在逻辑控制层,主要负责选择那个主机创建VM,nova-compute虚拟机创建和资源分配,不提供虚拟化功能,但是支持kvm,LXC,xen等。三个组件通过rabbit MQ进行消息传递。(核心组件)

Swift(对象存储服务模块) :主要功能:高可用分布式对象存储服务,特点是无限和扩展没有单点故障。(核心组件)

Neutorn(网络服务组件) :为云计算提供虚拟的网络功能,为每个不同的租户建立独立的网路环境。三种不同的网络模式(Flat模式 Flat DHCP模式,Vlan模式)

Glance(镜像服务组件) :提供虚拟机镜像的存储,查询和检索功能,为nova进行服务,依赖于存储服务(存储镜像本身)和数据库服务(存储镜像相关的数据)

keystone(身份服务模块) :用户身份认证(Idemity)、访问请求控制(Token)、注册表服务(Catalog)、身份验证引擎(Policy)

Cinder(块存储服务模块) :管理所有块存储设备,为VM服务。cinder-api处理发送过来的请求,处理结果发送到rabbit MQ,通过消息中间件把所有请求发送到cinder-scheduler,通过调度器决定存储到哪里,并且创建VM,cinder-volume管理存储模块的生命周期。

Ceilometer(监控服务组件) :Ceilometer 的目标是 计量 Metering 方面,为上层的计费、结算或者监控应用提供统一的资源使用数据收集功能。

Horizon :提供基于 Web 的自助服务门户,以便与底层 OpenStack 服务进行交互。

Heat :编排服务。

Trove :为关系数据库和非关系数据库引擎提供可伸缩和可靠的云数据库即服务功能。

Sahara :通过指定 Hadoop 版本,集群拓扑和节点硬件信息等参数,提供在 OpenStack 中配置和扩展 Hadoop 群集的功能。


安装部署

实验环境:

 
  1. 1.controller 192.168.1.122 Centos7.4 Cpu:4C、内存:16G、硬盘:500G (控制节点)
  2. 2.compute1 192.168.1.123 Centos7.4 Cpu:4C、内存:16G、硬盘:500G (计算节点)
  3. 3.object1 192.168.1.124 Centos7.4 Cpu:4C、内存:16G、硬盘:500G (对象存储)
  4. 4.object2 192.168.1.125 Centos7.4 Cpu:4C、内存:16G、硬盘:500G (对象存储)

实验主机关闭Selinux、防火墙~~~

所有实验主机配置hosts文件如下:

 
  1. 192.168.1.122 controller
  2. 192.168.1.123 compute1
  3. 192.168.1.124 object1
  4. 192.168.1.125 object2

配置主机时间同步和yum

使用Chrony 
选择服务端(controller)设备配置如下:

 
  1. yum -y install chrony
  2. vim /etc/chrony.conf
  3. server 0.centos.pool.ntp.org iburst
  4. server 1.centos.pool.ntp.org iburst
  5. server 2.centos.pool.ntp.org iburst
  6. server 3.centos.pool.ntp.org iburst
  7. server controller iburst(增加)
  8. allow 192.168.1.0/24(修改)
  9. timedatectl set-timezone Asia/Shanghai
  10. systemctl enable chronyd.service
  11. systemctl start chronyd.service

配置客户端节点(compute1、object1、object2),配置如下:

 
  1. yum -y install chrony
  2. vim /etc/chrony.conf
  3. #server 0.centos.pool.ntp.org iburst
  4. #server 1.centos.pool.ntp.org iburst
  5. #server 2.centos.pool.ntp.org iburst
  6. #server 3.centos.pool.ntp.org iburst
  7. server controller iburst(增加)
  8. timedatectl set-timezone Asia/Shanghai
  9. systemctl enable chronyd.service
  10. systemctl start chronyd.service

服务端测试如下: 
屏幕快照 2019-04-16 下午1.05.07.png-151.5kB

客户端测试如下: 
屏幕快照 2019-04-16 下午1.05.30.png-73.4kB

建议yum源修改到163~~、配置如下:

 
  1. cd /etc/yum.repos.d
  2. mv CentOS-Base.repo CentOS-Base-repo.bak
  3. wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
  4. yum clean all
  5. mv CentOS7-Base-163.repo CentOS-Base.repo
  6. yum makecache

完成后如下图: 
屏幕快照 2019-04-16 下午1.08.17.png-435.9kB


安装Openstack

安装客户端

 
  1. yum install -y python-openstackclient
  2. yum install -y openstack-selinux

安装完成如图: 
屏幕快照 2019-04-16 下午1.28.18.png-782.4kB

安装配置数据库(mysql)

 
  1. yum install -y mariadb mariadb-server MySQL-python
  2. cp /usr/share/mariadb/my-medium.cnf /etc/my.cnf
  3. vim /etc/my.cnf
  4. 增加相应参数配置:
  5. [mysqld]
  6. bind-address = 192.168.1.122
  7. default-storage-engine = innodb
  8. innodb_file_per_table
  9. collation-server = utf8_general_ci
  10. init-connect = 'SET NAMES utf8'
  11. character-set-server = utf8
  12. max_connections=1000
  13. systemctl enable mariadb.service && systemctl start mariadb.service
  14. mysql_secure_installation(YES设置root密码、然后一路Y即可)

完成后如下图: 
屏幕快照 2019-04-16 下午1.48.30.png-525.1kB

安装配置消息队列服务(RabbitMQ)

 
  1. yum install -y rabbitmq-server
  2. systemctl enable rabbitmq-server.service && systemctl start rabbitmq-server.service
  3. 设置用户openstack、密码、配置权限
  4. rabbitmqctl add_user openstack ******
  5. rabbitmqctl set_permissions openstack ".*" ".*" ".*"
  6. 查看支持的插件且使用插件web管理
  7. rabbitmq-plugins list
  8. rabbitmq-plugins enable rabbitmq_management
  9. systemctl restart rabbitmq-server.service

完成后如图,也可通过netstat命令查看端口:

屏幕快照 2019-04-16 下午1.52.48.png-329kB
屏幕快照 2019-04-16 下午1.57.19.png-639.6kB
屏幕快照 2019-04-16 下午1.57.54.png-94kB

完成后登录:http://192.168.1.122:15672/ 用户:guest、密码:guest 
登录后如下:

屏幕快照 2019-04-16 下午2.00.47.png-308.4kB
之前新建的openstack用户在admin标签中: 
屏幕快照 2019-04-16 下午2.00.55.png-161.1kB
点击openstack,点击图中设置,更新用户后、然后退出guest,再用openstack即可登录成功。 
屏幕快照 2019-04-16 下午2.02.49.png-155.4kB
屏幕快照 2019-04-16 下午2.03.31.png-150.3kB

安装和配置OpenStack身份认证服务(keystone)

在配置 OpenStack 身份认证服务前,必须创建一个数据库及权限授权。步骤如下:

 
  1. mysql -u root -p******
  2. GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '******';
  3. GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '******';
  4. show databases;
  5. select User,Password,Host from mysql.user where User like "keystone";

结果如下图: 
屏幕快照 2019-04-16 下午2.30.01.png-221.3kB

安装服务:

 
  1. yum install openstack-keystone httpd mod_wsgi memcached python-memcached -y
  2. systemctl enable memcached.service && systemctl start memcached.service(配置启动服务开机)
  3. netstat -tnlp|grep memcached(查看应用端口)

结果如下图: 
屏幕快照 2019-04-16 下午2.34.31.png-244.1kB

创建管理员令牌、配置数据库访问地址、配置Memcached访问地址。

 
  1. openssl rand -hex 10 (生成的内容请记录,后续要用到~~)
  2. vi /etc/keystone/keystone.conf
  3. 修改下列内容:
  4. DEFAULT]
  5. admin_token = ****(之前记录内容)
  6. [database]
  7. connection = mysql://keystone:******@controller/keystone
  8. [memcache]
  9. servers = localhost:11211
  10. [revoke]
  11. driver = sql
  12. [token]
  13. provider = uuid
  14. driver = memcache
  15. 完成后执行:
  16. su -s /bin/sh -c "keystone-manage db_sync" keystone
  17. 查看日志输出:
  18. tail /var/log/keystone/keystone.log

结果如下图:

屏幕快照 2019-04-16 下午3.10.38.png-291.1kB

配置Apache HTTP: 
修改下列文件,设置服务、查看端口:

 
  1. vi /etc/httpd/conf/httpd.conf
  2. 修改 ServerName controller
  3. vi /etc/httpd/conf.d/wsgi-keystone.conf
  4. 编辑内容:
  5. Listen 5000
  6. Listen 35357
  7.  
  8. <VirtualHost *:5000>
  9. WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
  10. WSGIProcessGroup keystone-public
  11. WSGIScriptAlias / /usr/bin/keystone-wsgi-public
  12. WSGIApplicationGroup %{GLOBAL}
  13. WSGIPassAuthorization On
  14. <IfVersion >= 2.4>
  15. ErrorLogFormat "%{cu}t %M"
  16. </IfVersion>
  17. ErrorLog /var/log/httpd/keystone-error.log
  18. CustomLog /var/log/httpd/keystone-access.log combined
  19.  
  20. <Directory /usr/bin>
  21. <IfVersion >= 2.4>
  22. Require all granted
  23. </IfVersion>
  24. <IfVersion < 2.4>
  25. Order allow,deny
  26. Allow from all
  27. </IfVersion>
  28. </Directory>
  29. </VirtualHost>
  30.  
  31. <VirtualHost *:35357>
  32. WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
  33. WSGIProcessGroup keystone-admin
  34. WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
  35. WSGIApplicationGroup %{GLOBAL}
  36. WSGIPassAuthorization On
  37. <IfVersion >= 2.4>
  38. ErrorLogFormat "%{cu}t %M"
  39. </IfVersion>
  40. ErrorLog /var/log/httpd/keystone-error.log
  41. CustomLog /var/log/httpd/keystone-access.log combined
  42.  
  43. <Directory /usr/bin>
  44. <IfVersion >= 2.4>
  45. Require all granted
  46. </IfVersion>
  47. <IfVersion < 2.4>
  48. Order allow,deny
  49. Allow from all
  50. </IfVersion>
  51. </Directory>
  52. </VirtualHost>
  53. 执行配置启动:
  54. systemctl enable httpd.service && systemctl start httpd.service
  55. 查看端口状态:
  56. netstat -tnlp|grep httpd

结果如图: 
屏幕快照 2019-04-16 下午4.05.15.png-178.2kB

创建服务实体和API端点:

仔细如下命令,分别配置URL、认证API、配置认证令牌、创建身份认证服务创建服务实体、创建认证服务的 API 端点、创建 admin 项目、admin用户、角色、添加 admin 角色到 admin 项目和用户、创建demo 项目、创建 demo 用户,角色、添加 user 角色到 demo 项目和用户。

 
  1. export OS_URL=http://controller:35357/v3
  2. export OS_IDENTITY_API_VERSION=3
  3. export OS_TOKEN=2a372436509e7381a1e0
  4. openstack service create --name keystone --description "OpenStack Identity" identity
  5. openstack endpoint create --region RegionOne identity public http://controller:5000/v2.0
  6. openstack endpoint create --region RegionOne identity internal http://controller:5000/v2.0
  7. openstack endpoint create --region RegionOne identity admin http://controller:35357/v2.0
  8. openstack project create --domain default --description "Admin Project" admin
  9. openstack user create --domain default --password-prompt admin
  10. 需要设置密码
  11. openstack role create admin
  12. openstack role add --project admin --user admin admin
  13. openstack project create --domain default --description "Service Project" service
  14. openstack project create --domain default --description "Demo Project" demo
  15. openstack user create --domain default --password-prompt demo
  16. 需要设置密码
  17. openstack role create user
  18. openstack role add --project demo --user demo user

结果如下图: 
屏幕快照 2019-04-16 下午4.15.22.png-671.2kB
屏幕快照 2019-04-16 下午4.15.38.png-554kB
屏幕快照 2019-04-16 下午4.15.49.png-503.9kB

创建admin和demo项目和用户创建客户端环境变量脚本.

 
  1. vi admin-openrc.sh
  2. export OS_PROJECT_DOMAIN_ID=default
  3. export OS_USER_DOMAIN_ID=default
  4. export OS_PROJECT_NAME=admin
  5. export OS_TENANT_NAME=admin
  6. export OS_USERNAME=admin
  7. export OS_PASSWORD=******
  8. export OS_AUTH_URL=http://controller:35357/v3
  9. export OS_IDENTITY_API_VERSION=3
  10.  
  11. vi demo-openrc.sh
  12. export OS_PROJECT_DOMAIN_ID=default
  13. export OS_USER_DOMAIN_ID=default
  14. export OS_PROJECT_NAME=demo
  15. export OS_TENANT_NAME=demo
  16. export OS_USERNAME=demo
  17. export OS_PASSWORD=******
  18. export OS_AUTH_URL=http://controller:5000/v3
  19. export OS_IDENTITY_API_VERSION=3
  20. source admin-openrc.sh
  21. openstack token issue
  22. source demo-openrc.sh
  23. openstack token issue

结果如下图: 
屏幕快照 2019-04-16 下午4.49.42.png-254.2kB

镜像服务:

安装和配置镜像服务之前,必须创建创建一个数据库、服务凭证和API端点. 
操作如下:

 
  1. mysql -u root -p******
  2. CREATE DATABASE glance;
  3. GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '******';
  4. GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '******';
  5. 退出mysql
  6. source admin-openrc.sh
  7. openstack user create --domain default --password-prompt glance
  8. 设置密码
  9. openstack role add --project service --user glance admin
  10. openstack service create --name glance --description "OpenStack Image service" image
  11. openstack endpoint create --region RegionOne image public http://controller:9292
  12. openstack endpoint create --region RegionOne image internal http://controller:9292
  13. openstack endpoint create --region RegionOne image admin http://controller:9292

完成如下图: 
屏幕快照 2019-04-16 下午4.58.57.png-493.1kB
屏幕快照 2019-04-16 下午4.59.11.png-377.3kB

 

(未完待续)坑真多~~~~

 

参考

http://docs.openstack.org/ 
http://www.javashuo.com/article/p-gqaspyvc-cb.html 
https://blog.51cto.com/weiwendi/2161308 
http://www.jb51.net/article/104511.htm 
http://www.javashuo.com/article/p-yxsbnhfh-dx.html