openstack.md

一、为什么需要云计算

1. 网格

基础是虚拟化,前身是网格(分布式)计算

oracl 发展:intnet--grade--cluster 即网格计算的发展。

云计算发展历程:
单主机多用户:资源依赖,互相影响,无隔离
单主机多虚拟机:资源共享,互相隔离,动作响应慢。
多主机多虚拟机
云计算:使用计算资源使用网络资环像使用自来水一样按需自由有偿。

二、云计算的分类

私有云,公有云,混合云

chrome_wpIhRaCvZf.png
chrome_wpIhRaCvZf.png

目前企业混合方案:
用户访问量大方公有云
安全性高计算量大用私有云

chrome_redfFABNGp.png
chrome_redfFABNGp.png

从第二种开始分别是IAAS(基础设施服务,腾讯云,阿里云,aws),PAAS(平台即服务新浪云),SAAS(软件即服务offcie365 B/S服务式使用办公软件)

有的厂商扩容硬盘不需要提前做lvm,有的需要提前做,肯定前者方便。

三、openstack

开源平台的选择:

  • API接口的广泛性
  • 使用何种开源协议进行编写
  • 平台的成熟度

openstack 特性:

  • API对接亚马逊平台
  • 使用Apache协议开源
  • 一个框架多组件
  • 是哟和哪个Python开发
  • 混合云

版本历程:

chrome_ulTq9CNUoU.png
chrome_ulTq9CNUoU.png

1. 组件说明

选择了Juno版本

chrome_ucYD5FLUf3.png
chrome_ucYD5FLUf3.png

2. 安装结构说明

软硬件版本及资源要求
chrome_ddtwJD0ttH.png

网络结构拓扑及网卡数量(对应ip地址的数量)
chrome_hpDWUgGfU9.png

3. 基础环境构建

全部机器controller,compute,block,neutron所有网卡使用主机网络=》这样就需要自己准备本地YUM源(对应版本的操作系统)
chrome_mOCTAAlQjg.png

windows端工具软件server-u(ftp服务端服务器:放yum源和系统镜像)
chrome_vetYCL5ADf.png
创建一个新的用户这个用户可以通过文件浏览器ftp协议访问server-u指定的根目录数据
chrome_rsWW9CihYG.png

3-1. 环境初始化

3-1-1. ftp本地yum源配置ftp.repo样例如下

chrome_yZMt5VrFRk.png
chrome_yZMt5VrFRk.png

  1. # 三台机器都要做 
  2. #先决条件 
  3. ## 关闭NetworkManager 
  4. systemctl stop NetworkManager 
  5. systemctl disable NetworkManager 
  6. ## 关闭防火墙 
  7. systemctl stop firewalld 
  8. systemctl disable firewalld 
  9. ## 设置主机名 
  10. hostnamectl set-hostname xx.xx.xx 
  11. ## 关闭SELINUX 
  12. # 配置Dns服务器或者使用hosts进行主机名的IP对应:demo如下 
  13. controller.nice.com 192.168.x.5 
  14. network.nice.com 192.168.x.6 
  15. compute1.nice.com 192.168.x.10 
  16. compute2.nice.com 192.168.x.11 
  17. block1.nice.com 192.168.x.20 
  18. block2.nice.com 192.168.x.21 
  19. object.nice.com 192.168.x.30 
  20. object.nice.com 192.168.x.31 
  21. # 配置时间同步服务器 
  22. controller.nice.com ntp server controller 
  23. other server ntp client 
  24. # 安装openstack 预备包 
  25. ## 安装yum-plugin-priorities 包,防止高优先级软件被低优先级软件覆盖 
  26. yum -y install yum-plugin-priorities 
  27. ## 安装epel扩展yum源 
  28. yum -y install http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm 
  29. ## 安装openstack yum源 
  30. yum -y install http://rdo.fedorapeople.org/openstack-juno/rdo-release-juno.rpm 
  31. ## 更新操作系统 
  32. yum upgrade 
  33. ## 安装openstack-selinux 自动管理selinux 
  34. yum -y install openstack-selinux 
  35. # 打虚拟机快照 

3-1-2. 组件安装

  1. yum -y install vim net-tools 
  2. # 为controller节点安装数据库 
  3. ## 安装mariadb软件包 
  4. yum -y install mariadb mariadb-server MySQL-python 
  5. ## 编辑/etc/yum.cnf文件,设置绑定IP,默认数据库引擎及默字符集为UTF-8 
  6. [mysql] 
  7. bind-address=192.168.x.5 
  8. default-storage-engine=innodb 
  9. innodb_file_per_table 
  10. collation-server=utf8_general_ci 
  11. init-connect='SET NAMES utf8' 
  12. character-set-server=utf8 
  13. ## 启动数据库并设置为开机自启动 
  14. systemctl enable mariadb 
  15. systemctl start mariadb 
  16. ## 初始化数据库脚本 
  17. mysql_secure_installation 
  18. # 安装Messaing Server 服务 
  19. ## 功能:协调操作和状态信息服务 
  20. ## 常用消息代理软件RabbitMQ Opid,ZeroMQ 
  21. ## 在controller 节点安装RabbitMq 
  22. ### 安装RabbitMQ软件包 
  23. yum -y install rabbitmq-server 
  24. ### 启动服务并设置开机自启动 
  25. systemctl enable rabbitmq-server 
  26. systemctl start rabbitmq-server 
  27. ### rabbitmq默认用户名和密码guest,可以通过以下命令修改 
  28. rabbitmqctl change_password guest new_password 
3-1-2-1. keystone
3-1-2-1-1. 组件说明

keystone 是 openstack Identity Service的项目名称,是一个负责身份管理和授权的组件
主要功能:实现用户的身份认证,基于角色的权限管理,及openstack其他组件的访问地址和安全策略管理。
主要目的是给整个openstack的各个组件提供一个统一的认证方式。

用户管理:账户,认证,授权
服务目录管理

C/S一般走tcp协议,B/S一般http协议

User:一个人,系统或服务在Openstack中的数字表示,已经登陆的用户分配令牌环以访问资源。用户可以直接分配给特定的租户,就想隶属于某个组。
Credentials:(凭证)用于确认用户身份的数据。例如:用户名和密码,用户名和API key,或由认证服务提供的身份验证令牌
Authentication:(验证)确认用户身份的过程。
Token(令牌):一个用于访问OpnstackAPI和资源的字母数字字符串。一个令牌可以随时撤销,并且持续一段时间有效。
Tenant(租户):一个组织或者孤立资源的容器。租户可以组织和隔离认证对象。根据服务运营的要求,一个租户可以映射到客户,账号,组织或项目。
Service(服务):openstack服务,例如计算服务(nova),对象存储服务swift,镜像服务glance.它提供一个或多个端点,供用户访问资源和执行操作。
Endpoint(端点):一个用于访问某个服务的可以通过网络进行访问的地址,通常是一个URL地址。
Role(角色): 定制化的包含特定用户权限和特权的权限集合
Keystone Client(keystone 命令行工具) Keystone的命令行工具,通过该工具可以创建用户,角色,服务和端点等。 C/S结构

chrome_magaPSsB9c.png
chrome_magaPSsB9c.png

3-1-2-1-2. 组件之间沟通方式

chrome_77ApbaP9NT.png
chrome_77ApbaP9NT.png

组件时序图
chrome_CdjWt1TtKC.png
角色相关交互图
chrome_rRjhdSQVq6.png

3-1-2-1-3. 构建实验
  1. #接着组件安装继续 
  2. ## 创建认证数据库 
  3. mysql -uroot -p 
  4. create database keystone; 
  5. grant all privileges on keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone_dbpass'; 
  6. grant all privileges on keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone_dbpass'; 
  7. ##生成一个随机值作为管理令牌在初始配置 
  8. openssl rand -hex 10; 
  9. # 安装和配置认证组件keystone;安装软件包 
  10. yum -y install openstack-keystone python-keystoneclient 
  11. ## 编辑/etc/keystone/keyston.conf文件,做下列修改 
  12. ### 修改[DEFAULT]小节,定会初始管理令牌 
  13. [DEFAULT] 
  14. .... 
  15. admin_token=刚才生成的随机值 
  16. ### 修改[database]小节,配置数据库访问 
  17. [database] 
  18. ... 
  19. connection=mysql://keystone:keystone_dbpass@controller.nice.com/keystone 
  20. ### 修改[token]小节配置UUID提供者和sql驱动 
  21. [token] 
  22. ... 
  23. provider=keystone.token.providers.uuid.Provider 
  24. driver=keystone.token.persistence.backends.sql.Token 
  25. ### (可选)开启详细日志,协助故障排除 
  26. [DEFAULT] 
  27. ... 
  28. verbose=True 
  29. ## 常见通用证书的秘钥,并限制相关文件的访问权限 
  30. keystone-manage pki_setup --keystone-user keystone --keystone-group keystone 
  31. chown -R keystone:keystone /var/log/kehystone 
  32. chown -R keystone:keystone /etc/keystone/ssl 
  33. chmod -R p-rwx /etc/keystone/ssl 
  34. ## 初始化keystone数据库 
  35. su -s /bin/sh -c "keystone-manage db_sync" keystone 
  36.  
  37. # 完成安装 
  38. ## 开启identity服务并开机启动 
  39. systemctl enable openstack-keystone.service 
  40. systemctl start openstack-keystone.service 
  41. ## 默认情况下,服务器会无限存储到期的令牌,在资源有限情况下会验证影响服务器性能,建议用计划任务,每小时删除过期的令牌 
  42. (crontab -l -u keystone 2>&1 | grep -q token_flush) || echo '@hourly /usr/bin/keystone-manage.token_flush >/var/log/keystone/keystone-tokenflush.log 2>&1' >>/var/spool/cron/keystone 
  43.  
  44.  
  45. # 创建tenants租户,users用户,roles角色 
  46. ## 配置先决条件 
  47. ### 配置管理员令牌 
  48. export OS_SERVICE_TOKEN=刚才生成的字符串 
  49. ### 配置端点 
  50. export OS_SERVICE_ENDPOINT=http://controller.nice.com:35357/v2.0 
  51. ## 创建租户,用户和角色 
  52. ### 创建admin租户 
  53. keystone tenant-create --name admin --description "Admin Tenant" 
  54. ### 创建admin用户 
  55. keystone user-create --name admin --pass admin_pass --email EMAIL_ADDRESS 
  56. ### 创建admin 角色 
  57. keystone role-create --name admin 
  58. ### 添加admin组合和用户到admin角色 
  59. keystone user-role-add --tenant admin --user admin --role admin 
  60. ### 创建dashboard访问的“_member_”角色 
  61. keystone role-create --name _member_ 
  62. ### 添加admin租户和用户到_member_角色 
  63. keystone user-role-add --tenant admin --user admin --role _member_ 
  64. ## 创建一个用于演示的demo租户和用户 
  65. ### 创建demo租户 
  66. keystone tenant-create --name demo --description "Demo Tenant" 
  67. ### 创建demo用户 
  68. keystone user-create --name demo --pass demo_pass --email EMAIL_ADDRESS 
  69. ### 添加demo组合和用户到_member_角色 
  70. keystone user-role-add -tenant demo --user demo --role _member_ 
  71. ##Openstack服务也需要一个租户,用户和角色 和其他服务进行交互,因此我们创建一个service的租户。任何一个openstack服务都要和他关联 
  72. keystone tenant-create --name service --description "Service Tenant" 
  73. ## 创建服务实体(服务名称)和API端点(路径) 
  74. ### 在openstack环境中,identity服务管理一个服务目录,并使用这个目录在openstack环境中定位其他服务,为indentity服务创建一个服务实体 
  75. keystone service-create --name keystone --type identity --description "Openstack Identity" 
  76. ### openstack 环境中,identity服务管理目录以及与服务相关API端点,服务使用这个目录来沟通其他服务。OpenStack为每个服务提供了三个API端点:admin(管理),internal(内部),public(公共)。 
  77. ### 为identity服务创建API端点。 
  78.  
  79. renkeystone endpoint-create --service-id $(keystone service-list | awk '/identity/{print $2}') --publicurl http://controller.nice.com:5000/v2.0 --internalurl http://controller.nice.com:5000/v2.0 --adminurl http://controller.nice.com:35357/v2.0 --region regionOne 
  1. ## 确认操作 
  2. ### 删除OS_SERVICE_TOKEN和OS_SERVICE_ENDPOINT临时变量 
  3. unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT 
  4. ### 使用admin租户和用户请求认证令牌 
  5. keystone --os-tenant-name admin --os-username admin --os-password admin_pass --os-auth-url http://controller.nice.com:35357/v2.0 token-get 
  6. ### 以admin租户和用户的身份查看租户列表 
  7. keystone --os-tenant-name admin --os-username admin --os-password admin_pass --os-auth-url http://controller.nice.com:35357/v2.0 tenant-list 
  8. ### 以admin租户和用户的身份查看用户列表 
  9. keystone --os-tenant-name admin --os-username admin --os-password admin_pass --os-auth-url http://controller.nice.com:35357/v2.0 user-list 
  10. ### 以demo用户请求认证令牌并查看用户列表发现403错误,权限认证生效,拒绝查看。 
  11. ## 创建Openstack客户端环境脚本 
  12. ### 为了方便使用上面的环境变量和命令选项,我们为admin和demo租户创建环境脚本 
  13. ### 编辑admin-openrc.sh 
  14. export OS_TENANT_NAME=admin 
  15. export OS_USERNAME=admin 
  16. export OS_PASSWORD=admin_pass 
  17. export OS_AUTH_URL=http://controller.nice.com:35357/v2.0 
  18. ### 编辑demo-openrc.sh 
  19. export OS_TENANT_NAME=demo 
  20. export OS_USERNAME=demo 
  21. export OS_PASSWORD=demo_pass 
  22. export OS_AUTH_URL=http://controller.nice.com:35357/v2.0 
  23. ### 加载客户端环境脚本 
  24. source admin-openrc.sh 
3-1-2-2. Glance服务
3-1-2-2-1. 相关说明
  • openstack镜像服务使用户能够发现,注册并检索虚拟机镜像
  • 提供一个rest api 接口,使用户可以查询虚拟机镜像元数据和jiansu8o一个实际的镜像文件
  • 不论是简单的文件系统还是openstack对象存储,你都可以通过镜像服务在不同位置存储虚拟机的镜像
  • 默认情况下,上传的虚拟机镜像存储路径为/var/lib/glance/images/

glance-api: 一个用来接收镜像发现,检索和存储的API接口
glance-registry:用来存储,处理和检索镜像的元数据。元数据包含对象的大小和类型。glance-registry是一个openstack镜像服务使用的内部服务,不要透露给用户
Database:用于存储镜像的元数据的大小,类型,支持大多数数据库一般mysql,sqlite
Storage repository for image files: 镜像文件的存储仓库。支持包括普通文件系统在内的各种存储类型。包括对象存储、快设备、http,amazon s3,但有些存储只支持只读访问。

Image Identifiers: 就是image url 格式glance server location/imgages/ID

image status:

  • queued:镜像ID已被保留,镜像还未上传
  • saving:镜像正在被上传
  • active:镜像可以使用了
  • killed: 镜像损坏或者不可用
  • deleted: 镜像被删除

Disk format:

  • Raw:不支持扩容
  • Vhd:vmware,xen,microsoft,virtualbox
  • vmdk:common format
  • vdi:virtualbox,qemu emulator
  • ISO:optical disc
  • Qcow2:qemu emulator
  • Aki: Amazon kernel image
  • Ari: Amazon ramdisk image
  • Ami:Amazon machine image

Container format:

  • Bare
  • Ovf:支持动态扩容
  • Aki,Ami,Ari

工作流程:
chrome_tUPBBymG2X.png

3-1-2-2-2. 构建实验

先决条件

  1. # 创建数据库 
  2. ## 以数据库管理root登录数据库,创建glance数据库 
  3. create database glance; 
  4. ##创建用户并授权 
  5. grant all privileges on glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS'; 
  6. grant all privileges on glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS'; 
  7. #启用admin环境脚本 
  8. source admin-openrc.sh 
  9. #创建认证服务凭证,完成以下步骤 
  10. ## 创建glance用户 
  11. keystone user-create --name glance --pass GLANCE_PASS 
  12. ## 将glance用户连接service租户和admin角色 
  13. keystone user-role-add --user glance --tenant service --role admin 
  14. ## 创建glance服务 
  15. keystone service-create --name glacne --type image --description "OpenStack image" 
  16. ## 为OpenStack镜像服务创建认证服务端点 
  17. keystone endpoint-create --service-id $(keystone service-list|awk '/image/{print $2}') --publicurl http://controller.nice.com:9292 --internalurl http://controller.nice.com:9292 --adminurl http://controller.nice.com:9292 --region regionOne 

安装glance组件服务端及客户端工具

  1. # 安装软件包 
  2. yum -y install openstack-glance python-glanceclient 
  3. # 编辑/etc/glance/glance-api.conf文件,并完成下列操作 
  4. ## 修改[database]小节,配置数据库连接 
  5. [database] 
  6. ... 
  7. connection=mysql://glance:GLANCE_DBPASS@controller.nice.com/glance 
  8. ## 修改[keystone_authtoken]和[paste_deploy]小节,配置认证服务访问: 
  9. [keystone_authtoken] 
  10. ... 
  11. auth_uri=http://controller.nice.com:5000/v2.0 
  12. identity_uri=http://controller.nice.com:35357 
  13. admin_tenant_name=service 
  14. admin_user=glance 
  15. admin_password=GLANCE_PASS 
  16. [paste_deploy] 
  17. ... 
  18. flavor=keystone 
  19. ## 可选配置日志详情输出 
  20. [DEFAULT] 
  21. ... 
  22. verbose=True 
  23. #编辑/etc/glance/glance-registry.conf文件,并完成下列配置: 
  24. ##在[database]小节中配置数据库连接 
  25. [database] 
  26. ... 
  27. connection=mysql://glance:GLANCE_DBPASS@controller.nice.com/glance 
  28. ## 修改[keystone_authtoken]和[paste_deploy]小节,配置认证服务访问 
  29. [keystone_authtoken] 
  30. ... 
  31. auth_uri=http://controller.nice.com:5000/v2.0 
  32. identity_uri=http://controller.nice.com:35357 
  33. admin_tenant_name=service 
  34. admin_user=glance 
  35. admin_password=GLANCE_PASS 
  36. [paste_deploy] 
  37. ... 
  38. flavor=keystone #认证方案 
  39. ## 在[glance_store]配置本地文件系统存储和镜像文件的存放路径 
  40. [glance_store] 
  41. ... 
  42. default_store=file 
  43. filesystem_store_datadir=/var/lib/glance/images/ 
  44. ## 配置文件输出 
  45. [DEFAULT] 
  46. ... 
  47. verbose=True 
  48. #初始化镜像服务的数据库 
  49. su -s /bin/sh -c "glance-manage db_sync" glance 
  50. #开机启动服务 
  51. systemctl enable openstack-glance-api.service openstack-glance-registry.service 
  52. #启动服务 
  53. systemctl start openstack-glance-api.service openstack-glance-registry.service 

验证安装

  1. #使用cirros镜像验证 
  2. mkdir /tmp/images 
  3. cd /tmp/images 
  4. wget http://cdn.download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img 
  5. #运行admin环境脚本 
  6. source admin-openrc.sh 
  7. #上传镜像文件到镜像服务器 
  8. glance image-create --name "cirros-0.3.3-x86_64" --file cirros-0.3.3-x86_64-disk.img --disk-format qcow2 --container-format bare --is-public True --progress 
  9. # 确认镜像文件上传并验证属性 
  10. glance image-list 
  11. #删除临时目录 
  12. rm -r /tmp/images 
3-1-2-3. Nova计算服务
3-1-2-3-1. 相关说明

openstack 是又Rackspace和NASA共同开发的云计算平台
Amazon EC2 和s3的云基础架构服务
Nova在openstack中提供云计算卷服务;超过140加企业18470个开发者参与研发。

nova-api service:接收并响应中断用户计算api的调用。服务支持openstack的计算api,amazon ec2和特殊管理特权api
nova-api-metadata service: 接受从实例元数据发来的请求。该服务通常与nova-network服务在安装多主机模式下运行。
nova-compute service :一个守护进程,通过虚拟化层api接口创建和终止虚拟机实例。如:XenAPI for xenserver/XCP,libvirt for kvm or qemu,vmwareapi for vmware
nova-scheduler service: 从队列中获取虚拟机实例请求,并确认由哪台计算服务运行该虚拟机
nova-conductor module: 协调nova-compute 服务和database 之间的交互数据,避免nova-compute 服务直接访问云数据库,不要讲该模块部署在nova-compute节点上
nova-network worker daemon: 类似于nova-compute服务,接受来自队列的网络任务和操控网络。比如这只网卡桥接或者改变iptables规则
nova-consoleauth daemon:在控制台代理提供用户授权令牌
nova-novncproxy daemon:提供了一个通过vnc连接来访问运行的虚拟机实例的代理。支持基于浏览器的novnc客户端。
nova-spicehtml5proxy daemon:提供通过spice连接访问虚拟机实例的代理。基于html5浏览器客户端
nova-xvpnvncproxy daemon::提供了一个通过vnc连接来访问运行的虚拟机实例的代理。支持openstack specific java客户端
nova-cert daemon: x509证书
nova-odjectstone dameon:amazon s3接口,用于将s3镜像注册到openstack
euca2ools client: 用于兼容与 e2接口的命令行工具
nova client: nova 命令行工具
The queue:进程间传递消息的中心,通常使用rabbitmq
SQL dababase:保存云基础设置建立和运行时的状态信息,mysql

流程
chrome_krTyqXWJEZ.png
nova内部沟通
chrome_6VC1c5JLh6.png
nova与其他组件间沟通
chrome_v4munsrmR5.png
虚拟机启动流程:触发更新监控信息(可以保证剩余资源的实时性也防止监控更新频率过高导致的资源浪费)
chrome_BmZ3xb8gk6.png

3-1-2-3-2. 服务构建实验
  1. #确定系统初始环境状态 
  2. systemctl status firewalld 
  3. systemctl status mariadb 
  4. systemctl status NetworkManager 
  5. systemctl status ntpd 
  6. ## selinx 
  7. getenforce 
  8. #主机名 
  9. hostname 
  10. #安装ntp客户端工具 
  11. yum -y install ntpdate 
  • 先决条件
  1. # 创建数据库并授权 
  2. create database nova; 
  3. grant ALL privileges On nova.* TO 'nova'@'localhost' identified by 'NOVA_DBPASS' 
  4. grant ALL privileges On nova.* TO 'nova'@'%' identified by 'NOVA_DBPASS' 
  5. #创建认证信息 
  6. ## 执行环境脚本 
  7. source admin-openrc.sh 
  8. ## 创建nova用户 
  9. keystone user-create --name nova --pass NOVA_PASS 
  10. ## 连接nova用户到service租户和admin角色 
  11. keystone user-role-add --user nova --tenant service --role admin 
  12. ## 创建nova服务 
  13. keystone service-create --name nova --type compute --description "Openstack compute" 
  14. #创建服务端点 
  15. keystone endpoint create --service-id $(keystone service -list|awk '/compute/{print $2}') --publicurl http://controller.nice.com:8774/v2/%\(tenant_id\)s --internalurl http://controller.nice.com:8774/v2/%\(tenant_id\)s --adminurl http://controller.nice.com:8774/v2/%\(tenant_id\)s --region regionOne 
  • 安装和配置计算控制节点(controller)
  1. #安装软件包 
  2. yum -y install openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler python-novaclient 
  3. #编辑/etc/nova/nova.conf配置文件 
  4. [database] 
  5. ... 
  6. connection=mysql://nova:NOVA_DBPASS@controller.nice.com/nova 
  7. [DEFAULT] 
  8. rpc_backend=rabbit 
  9. rabbit_host=controller.nice.com 
  10. rabbit_password=RABBIT_PASS 
  11. auth_stragy=keystone 
  12. verbose=True 
  13. ## my——ip选项为controller节点的管理接口ip 
  14. my_ip=192.168.x.5 
  15. ## vnc监听地址 
  16. vncserver_listen=192.168.222.5 
  17. ## vnc代理端地址 
  18. vncserver_proxyclient_address=192.168.222.5 
  19. [keystone_authtoken] 
  20. auth_uri=http://controller.nice.com:5000/v2.0 
  21. identity_uri=http://controller.nice.com:35357 
  22. admin_tenant_name=service 
  23. admin_user=nova 
  24. admin_password=NOVA_PASS 
  25. [glance] 
  26. host=controller.nice.com #镜像服务器地址 
  27. #还原初始化数据库 
  28. su -s /bin/sh -c "nova-manage db sync" nova 
  • 完成安装
  1. #开启服务并开机启动 
  2. systemctl enable openstack-nova-api.service openstack-nova-cert.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service 
  3. systemctl start openstack-nova-api.service openstack-nova-cert.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service 
3-1-2-3-3. 安装配置一个compute节点
  • 安装并配置计算虚拟化组件
  1. #安装软件包 
  2. yum -y isntall openstack-nova-compute sysfsutils 
  3. #编辑/etc/nova/nova.conf配置文件 
  4. [DEFAULT] 
  5. rpc_backend=rabbit 
  6. rabbit_host=controller.nice.com 
  7. rabbit_password=RABBIT_PASS 
  8. verbose=True 
  9. [keystone_authtoken] 
  10. auth_uri=http://controller.nice.com:5000/v2.0 
  11. identity_uri=http://controller.nice.com:35357 
  12. admin_tenant_name=service 
  13. admin_user=nova 
  14. admin_password=NOVA_PASS 
  15. my_ip=192.168.x.5 # 管理网络网卡地址 
  16. vnc_enable=True 
  17. vncserver_listen=0.0.0.0 
  18. vncserver_proxyclient_address=MANAGEMENT_INTERFACE_IP_ADDRESS # 管理网络网卡地址 
  19. novncproxy_base_url=http://controller.nice.com:6080/vnc_auto.html 
  20. [glance] 
  21. host=controller.nice.com 
  • 完成安装
  1. #确认节点是否支持硬件虚拟化 返回值》1支持; 
  2. egrep -c '(vmx|svm)' /proc/cpuinfo 
  3. ## 返回值=0需要配置/etc/nova/nova.conf 
  4. [libvirt] 
  5. virt_type=qemu 
  6. #启动计算服务及其依赖服务并设置开机启动 
  7. systemctl enable libvirtd.service openstack-nova-compute.service 
  8. systemctl start libvirtd.service 
  9. systemctl start openstack-nova-compute.service 
  • 在controller上验证安装
  1. source admin-openrc.sh 
  2. nova service-list 
  3. nova image-list 
3-1-2-4. Neutron
3-1-2-4-1. 网络相关知识

七层网络环境
chrome_c3p2dh2TJn.png

网络拓扑公网-猫-路由器-交换机-设备
chrome_rkq0m8HIDk.png

混杂模式开启标识
chrome_oF558X2ZGM.png

网络命名空间
chrome_veEvoMyEUv.png

叠加网络
chrome_i8BUAByq9J.png

GRE/SDN网络优缺点
chrome_1qgVTgtJd3.png

解决问题
chrome_we73iSL4vj.png

open vswitch
chrome_IofcT1WKo6.png

3-1-2-4-2. Neutron

三种网络实现

  • FLAT
    Code_5XV94mZurp.png
  • flatdhcp
    网络控制器运行dnsmasp作为dhcp服务其监听这个网桥
  • Vlan:限制4096个
    chrome_R5fiLybJGm.png

存在的问题:

  • 传统桥接模式
  • 用户不能自定义网段
  • 网络隔离
  • 大规模部署

针对问题的需求:
chrome_YudisS6GjP.png

neutron能力
chrome_Yfp7Jjkvyd.png

neutron概念:
Network:
- 一个L2网络单元
- 租户可通过API创建自己的网络
Subnet:
- 一段ipv4/ipv6地址段
- 为实例提供私网或公网地址
Router:
- 三层路由器
- 为租户的实例提供路由功能
Port:
- 虚拟交换机上的端口
- 管理实例的网卡

概念er图数量对应关系
chrome_o20BTVkU46.png

neutron和nova架构
chrome_pXPNUf29Nn.png

neutron组件流程
chrome_JtolbQoG2P.png

ml2插件介绍
chrome_wZpPyEZBhc.png

ml2构建模式
chrome_VZvgZ61TDy.png

因为ml2不同协议所以对应以下部署方案:最常用最后一个

  • Single flat NetWork
    chrome_XuyxkHBaRv.png
  • Multi flat network
    chrome_GBXvMqRpTD.png
  • Mixed FLAT and private network
    chrome_5PMOniVXju.png
  • provider router with private network
    chrome_rycvM6gWrt.png
  • per-tenant Routers with Private Network
    chrome_GJM49QfIRH.png
3-1-2-4-3. 代码构建

先决条件

  1. --controller节点配置先决条件!!!基本上所有地方都是这样 
  2. -- 创建数据库并授权 
  3. create database neutron; 
  4. grant all privileges on neutron.* to 'neutron'@'localhost' identified by 'NEUTRON_DBPASS'; 
  5. grant all privileges on neutron.* to 'neutron'@'%' identified by 'NEUTRON_DBPASS'; 
  1. #环境变量 
  2. source admin-openrc.sh 
  3. # 创建网络服务的认证信息 
  4. keystone user-create --name neutron --pass NEUTRON_PASS 
  5. keystone user-role-add --user neutron --tenant service --role admin 
  6. keystone service-create --name neutron --thype network --description "OpenStack Networking" 
  7. keystone endpoint-create --service-id $(keystone service-list|awk '/network/{print $2}') --publicurl http://controller.nice.com:9696 --adminurl http://controller.nice.com:9696 --internalurl http://controller.nice.com:9696 --region regionOne 
  8.  

安装服务组件

  1. yum -y install openstack-neutron openstack-neutron-ml2 python-neutronclient which 

配置网络服务组件

  1. ##/etc/neutron/neutron.conf 
  2. [database] 
  3. connection=mysql://neutron:NEUTRON_DBPASS@controller.nice.com/neutron 
  4. [DEFAULT] 
  5. rpc_backend=rabbit 
  6. rabbit_host=controller.nice.com 
  7. rabbit_password=RABBIT_PASS 
  8. auth_strategy=keystone 
  9. verbose=true 
  10. ## 启用Modular Layer2插件 
  11. core_plugin=ml2 
  12. service_plugins=router 
  13. ## 配置当网络图谱结构发生变化时通知计算服务 
  14. notify_nova_on_port_status_changes=True 
  15. notify_nova_on_port_data_changes=True 
  16. nova_url=http://controller.nice.com:8774/v2 
  17. nova_admin_auth_url=http://controller.nice.com:35357/v2.0 
  18. nova_region_name=regionOne 
  19. nova_admin_username=nova 
  20. nova_admin_tenant_id=SERVICE_TENANT_ID 
  21. nova_admin_password=NOVA_PASS 
  22. [keystone_authtoken] 
  23. auth_uri=http://controller.nice.com:5000/v2.0 
  24. identity_uri=http://controller.nice.com:35357 
  25. admin_tenant_name=service 
  26. admin_user=neutron 
  27. admin_password=NEUTRON_PASS 
  28. # 配置Modular layer 2 plugin 
  29. ##/etc/neutron/plugins/ml2/ml2_conf.ini 
  30. ### 启用flat和generic routing encapsulation(gre)网络类型驱动,配置gre租户网络和ovs驱动机制 
  31. [ml2] 
  32. type_drivers=flat,gre 
  33. tenant_network_types=gre 
  34. mechanism_drivers=openvswitch 
  35. #### 配置隧道标识范围 
  36. [ml2_thype_gre] 
  37. tunnel_id_ranges=1:1000 
  38. #### 启用安全组,启用ipset并配置ovs防火墙驱动 
  39. [securitygroup] 
  40. enable_security_group=True 
  41. enable_ipset=True 
  42. firewall_driver=neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver 
  43. #配置计算服务使用Neutron 
  44. ## /etc/nova/nova.conf 
  45. ### 配置接口和驱动程序 
  46. [DEFAULT] 
  47. network_api_class=nova.network.neutronv2.api.API 
  48. security_group_api=neutron 
  49. linuxnet_interface_driver=nova.network.linux_net.linuxOVSInterfaceDriver 
  50. firewall_dirver=nova.virt.firewall.NoopFirewallDriver 
  51. ### 配置访问参数 
  52. [neutron] 
  53. url=http://controller.nice.com:9696 
  54. auth_strategy=keystone 
  55. admin_auth_url=http://controller.nice.com:35357/v2.0 
  56. admin_tenant_name=service 
  57. admin_username=neutron 
  58. admin_password=NEUTRON_PASS 
  59.  

完成配置

  1. #为ml2插件配置文件创建连接文件 
  2. ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini 
  3. #初始化数据库 
  4. su -s /bin/bash -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade juno" neutron 
  5. #重新启动计算服务 
  6. systemctl restart openstack-nova-api.service openstack-nova-scheduler.service openstac-nova-conductor.service 
  7. #启动网络服务并配置开机自启动 
  8. systemctl enable neutron-server.service 
  9. systemctl start neutron-server.service 
  10.  

验证

  1. source admin-openrc.sh 
  2. neutron ext-list #列出确认加载的扩展模块 
  3.  
3-1-2-4-4. 安装network节点(neutron章节)
  • 配置先决条件
  1. #/etc/sysctl.conf 
  2. net.ipv4.ip_forward=1 
  3. net.ipv4.conf.all.rp_filter=0 
  4. net.ipv4.conf.default.rp_filter=0 
  5. ## 使更改生效 
  6. sysctl -p 
  • 安装网络组件
  1. yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch 
  • 配置网络通用组件
  1. #/etc/neutron/neutron.conf 
  2. ##[database]小节注释任何connection选项,因为network节点不能直接连接数据库 
  3. [DEFAULT] 
  4. rpc_backend=rabbit 
  5. rabbit-host=controller.nice.com 
  6. rabbit_password=RABBIT_PASS 
  7. auth_strategy=keystone 
  8. ## 启用ml2 
  9. core_plugin=ml2 
  10. service_plugins=router 
  11. all_overlapping_ips=True 
  12. verbose=True 
  13. [keystone_authtoken] 
  14. auth_uri=http://controller.nice.com:5000/v2.0 
  15. identity_uri=http://controller.nice.com:35357 
  16. admin_tenant_name=service 
  17. admin_user=neutron 
  18. admin_password=NEUTRON_PASS 
  19.  
  • 配置Modular layer2 plugin
  1. #/etc/neutron/plugins/ml2/ml2_conf.ini 
  2. [ml2] 
  3. type_dirvers=flat,gre 
  4. tenant_network_types=gre 
  5. mechanism_drivers=openvswitch 
  6. [ml2_type_falt] 
  7. flat_networks=external #配置外部网络 
  8. [ml2_type_gre] 
  9. tunnel_id_ranges=1:1000 
  10. [securitygroup] 
  11. enable_security_group=True 
  12. enable_ipset=True 
  13. firewall_driver=neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver 
  14. [ovs] #ovs代理配置 
  15. local_ip=INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS 
  16. tunnel_type=gre 
  17. enable_tunneling=True 
  18. bridge_mappings=external:br-ex 
  • 配置layer-3 agent
  1. #/etc/neutron/l3.agent.ini 
  2. [DEFAULT] #配置驱动,启用网络命名空间 
  3. debug=True 
  4. interface_driver=neutron.agent.linux.interface.OVSHybridIptablesFirewallDriver 
  5. use_namespaces=True 
  6. external_network_bridge=br-ex #配置(浮动)外部网络桥接 
  • 配置dhcp agent
  1. #/etc/neutron/dhcp_agent.ini 
  2. ## 驱动及启用命名空间 
  3. [DEFAULT] 
  4. debug=True 
  5. interface_driver=neutron.agent.linux.interface.OVSHybridIptablesFirewallDriver 
  6. dhcp_driver=neutron.agent.linux.dhcp.Dnsmasq 
  7. use_namespaces=True 
  8. ## 可选如果是vmware虚拟机中可能于鏊配置dhcp讲mut改为1454bytes改善网络性能 
  9. ###/etc/neutron/dhcp_agent.ini 
  10. [DEFAULT] 
  11. dnsmasq_config_file=/etc/neutron/dnsmasq-neutron.conf 
  12. ####创建dnsmasq-neutron.conf文件启用dhcp mut配置选项26,1454是bytes 
  13. dhcp-option-force=26,1454 
  14. user=neutron 
  15. group=neutron 
  16. ####终止已经存在的dnsmasq进程 
  17. pkill dnsmasq 
  • 配置meatadata agent
  1. #/etc/neutron/metadata_agent.ini 
  2. [DEFAULT] 
  3. auth_url=http://controller.nice.com:5000/v2.0 
  4. auth_region=regionOne 
  5. admin_tenant_name=service 
  6. admin_user=neutron 
  7. admin_password=NEUTRON_PASS 
  8. nova_metadata_ip=controller.nice.com #元数据主机 
  9. metadata_proxy_shared_secret=METADATA_SECRET #元数据代理共享机密暗号(随便起) 
  10. verbose=True 
  11.  
  12. #在controller节点 
  13. ##/etc/nova/nova.conf 
  14. [neutron] 
  15. service_metadata_proxy=True 
  16. metadata_proxy_shared_secret=METADATA_SECRET 
  17. ##在controller节点重启compute api服务 
  18. systemctl restart openstack-nova-api.service 
  • 配置open vswitch(ovs)服务
  1. #启用vos服务 
  2. systemctl enable openvswitch.service 
  3. systemctl start openvswitch.service 
  4. #添加外部网桥 
  5. ovs-vsctl add-br br-ex 
  6. #添加一个端口到外部网桥,用于连接外部物理网络 
  7. ovs-vsctl add-port br-ex INTERFACE_NAME #把INTERFACE_NAME换成实际连接外部网卡接口名如eth2或eno50332208 
  • 完成安装
  1. #创建网络服务初始化脚本连接 
  2. ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini 
  3. cp /usr/lib/systemd/system/neutron-openvswitch-agent.service /usr/lib/systemd/system/neutron-openvswitch-agent.service.orig 
  4.  
  5. sed -i 's,plugins/openvswitch/ovs_neutron_plugin.ini,plugin.ini,g' /usr/lib/systemd/system/neutron-openvswitch-agent.service 
  6. #启动服务及开机启动 
  7. systemctl enable neutron-openvswitch-agent.service neutron-l3-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service neutron-ovs-cleanup.service 
  8. systemctl start neutron-openvswitch-agent.service neutron-l3-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service neutron-ovs-cleanup.service 
  • 验证
  1. # 在controller节点执行 
  2. source admin-openrc.sh 
  3. neutron agent-list #列出neutron代理 
3-1-2-4-5. 安装compute1节点(neutron章节)
  • 先决条件
  1. #/etc/sysctl.conf 
  2. net.ipv4.conf.all.rp_filter=0 
  3. net.ipv4.conf.default.rp_filter=0 
  4. #使生效 
  5. sysctl -p 
  • 安装网络组件
  1. yum -y install openstack-neutron-ml2 openstack-neutron-openvswitch 
  • 配置网络通用组件
  1. #/etc/neutron/neutron.conf 
  2. ## 注释掉[database]的connection所有配置项,因为计算节点不能直接连接数据库 
  3. [DEFAULT] 
  4. rpc_backend=rabbit 
  5. rabbit-host=controller.nice.com 
  6. rabbit_password=RABBIT_PASS 
  7. auth_strategy=keystone 
  8. ## 启用ml2 
  9. core_plugin=ml2 
  10. service_plugins=router 
  11. allow_overlapping_ips=True 
  12. verbose=True 
  13. [keystone_authtoken] 
  14. auth_uri=http://controller.nice.com:5000/v2.0 
  15. identity_uri=http://controller.nice.com:35357 
  16. admin_tenant_name=service 
  17. admin_user=neutron 
  18. admin_password=NEUTRON_PASS 
  • 配置Modular layer2 plugin
  1. #/etc/neutron/plugins/ml2/ml2_conf.ini 
  2. [ml2] 
  3. type_dirvers=flat,gre 
  4. tenant_network_types=gre 
  5. mechanism_drivers=openvswitch 
  6. [ml2_type_falt] 
  7. flat_networks=external #配置外部网络 
  8. [ml2_type_gre] 
  9. tunnel_id_ranges=1:1000 
  10. [securitygroup] 
  11. enable_security_group=True 
  12. enable_ipset=True 
  13. firewall_driver=neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver 
  14. [ovs] #ovs代理配置 
  15. local_ip=INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS 
  16. tunnel_type=gre 
  17. enable_tunneling=True 
  18.  
  • 配置open vswitch service
  1. systemctl enable openvswitch.service 
  2. systemctl start openvswitch.service 
  • 配置计算服务使用网络
  1. #/etc/nova/nova.conf 
  2. [DEFAULT] 
  3. network_api_class=nova.network.neutronv2.api.API 
  4. secrity_group_api=neutron 
  5. linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDriver 
  6. firewall_driver=nova.virt.firewall.NoopFirewallDriver 
  7. [neutron] 
  8. url=http://controller.nice.com:9696 
  9. auth_strategy=keystone 
  10. admin_auth_url=http://controller.nice.com:35357 
  11. admin_tenant_name=service 
  12. admin_user=neutron 
  13. admin_password=NEUTRON_PASS 
  • 完成安装
  1. # 创建网络服务初始化脚本的符号连接 
  2. ln -s /etc/neutron/plugins/ml2/ml2_config.ini /etc/neutron/plugin.ini 
  3. cp /usr/lib/systemd/system/neutron-openvswitch-agent.service /usr/lib/systemd/system/neutron-openvswitch-agent.service.orig 
  4. sed -i 's,plugins/openvswitch/ovs_neutron_plugin.ini,plugin.ini,g' /usr/lilb/systemd/system/neutron-openvswitch-agent.service 
  5. #重启计算服务 
  6. systemctl restart openstack-nova-compute.service 
  7. #启动ovs代理服务并设置开机启动 
  8. systemctl enable neutron-openvswitch-agent.service 
  9. systemctl start neutron-openvswitch-agent.service 
  • 验证
  1. source admin-openrc.sh 
  2. neutron agent-list 
  • 创建第一个网络

chrome_xxOy62nHwh.png
chrome_xxOy62nHwh.png

配置外部网络(在controller节点执行后面的命令)

创建一个外部网络

  1. source admin-openrc.sh 
  2. neutron net-create ext-net --shared --router:external True --provider:physical_network external --provider:network_type flat 

创建一个外部网络的子网

  1. neutron subnet-create ext-net --name ext-subnet --allocation-pool start=FLOATING_IP_START,end=FLOATING_IP_END --disable-dhcp --gateway EXTERNAL_NETWORK_GATEWAY EXTERNAL_NETWORK_CIDR #其实ip,结束ip,外部网络网关,外部网络网段 

chrome_ulpObYQKg7.png
chrome_ulpObYQKg7.png

  • 创建一个租户网络
  1. source demo-openrc.sh 
  2. neutron net-create demo-net 
  • 创建一个租户网络的子网
  1. neutron subnet-create demo-net --name demo-subnet --gateway TENANT_NETWORK_GATEWAY TENANT_NETWORK_CIDR #租户网的网关,租户网的网段 

chrome_6m28Zs2yKT.png
chrome_6m28Zs2yKT.png

  • 在租户网络创建一个路由器,用来连接外部网和租户网
  1. #创建路由器 
  2. neutron router-create demo-router 
  3. #附件路由器到demo租户的子网 
  4. neutron router-interface-add demo-router demo-subnet 
  5. #设置网关,使路由器附加到外部网 
  6. neutron router-gateway-set demo-router ext-net 
  • 确认连接
  1. neutron router-list 
3-1-2-5. Horizon 仪表盘工具
3-1-2-5-1. 先决条件

安装compute(nova)和identity(keystone) service服务
安装python2.6,2.7并且支持Django
浏览器必须支持H5并启用cookies和javascript功能

3-1-2-5-2. 构建
  1. #查看服务是否正常 
  2. nova service-list 
  3. neutron agent-list 
  4. #安装仪表盘套件 
  5. yum -y install openstack-dashboard httpd mod_wsgi memcached python-memcached 
  6. #配置仪表盘 
  7. ##/etc/openstack-dashboard/local_settings 
  8. ### 配置dashboard使用controller节点的openstack服务 
  9. OPENSTACK_HOST="controller.nice.com" 
  10. ### 设置允许来自所有网络的主机访问dashboard 
  11. ALLOWED_HOST=['*'] 
  12. ### 配置memcached 会话存储服务(将原有的caches区域注释) 
  13. CACHES={ 
  14. 'default':{ 
  15. 'BACKEND':'dgango.core.cache.backends.memcached.MemcachedCache', 
  16. 'LOCATION':'127.0.0.1:11211' 
  17. } 
  18. } 
  19. ### 可选配置时区 
  20. TIME_ZONE='Asia/Shanghai' 
  21. # 完成安装 
  22. ## 配置selinux允许web服务器访问openstack服务 
  23. setsebool -P httpd_can_network_connect on 
  24. ##修改相关文件归属,是dashbaord css可以被加载 
  25. chown -R apache:apache /usr/share/openstack-dashboard/static 
  26. ## 启动web服务和会话保存服务并开机启动 
  27. systemctl enable httpd.service memcached.service 
  28. systemctl start httpd.service memcached.service 
  29. #验证 
  30. http://controller.nice.com/dashboard 使用admin或者demo用户登录 
3-1-2-6. 块存储服务Cinder
3-1-2-6-1. 组件说明

chrome_kj8QSXuMqQ.png
chrome_kj8QSXuMqQ.png

cinder-api:允许api请求并路由到cinder-volume
cinder-volume:直接用户块存储服务交互,处理向cinder-scheduler这样的服务,通过消息队列相互通信,支持多种存储类型
cinder-scheduler daemon 选择最优的存储节点创建卷,类似于nova scheduler
Messagin queue:在块存储进程中传递消息

3-1-2-6-2. 代码构建
  • controller节点先决条件
  1. create database cinder; 
  2. grant all privileges on cinder.* TO 'cinder'@'localhost' identified by 'CINDER_DBPASS' 
  3. grant all privileges on cinder.* TO 'cinder'@'%' identified by 'CINDER_DBPASS' 
  4. source admin-openrc.sh 
  5. keystone user-create --name cinder --pass CINDER_PASS 
  6. keystone user-role-add --user cinder --tenant service --role admin 
  7. # 创建cinder服务两个版本都要创建 
  8. keystone service-create --name cinder --type volumn --description "Openstack block storage" 
  9. keystone service-create --name cinderv2 --thype volumev2 --description "Openstack Block storage" 
  10. # 创建块存储服务端点 
  11. keystone endpoint-create --service-id $(keystone service-list|awk '/volume/{print $2}') --publicurl http://controller.nice.com:8776/v1/%\(tenant_id\)s --internalurl http://controller.nice.com:8776/v1/%\(tenant_id\)s --adminurl http://controller.nice.com:8776/v1/%\(tenant_id\)s --region regionOne 
  12.  
  13. keystone endpoint-create --service-id $(keystone service-list|awk '/volumev2/{print $2}') --publicurl http://controller.nice.com:8776/v2/%\(tenant_id\)s --internalurl http://controller.nice.com:8776/v2/%\(tenant_id\)s --adminurl http://controller.nice.com:8776/v2/%\(tenant_id\)s --region regionOne 
  14.  
  15. #安装并配置块存储控制组件 
  16. yum -y install openstack-cinder python-cinderclient python-oslo-db 
  17. ##/etc/cinder/cinder.conf 
  18. [database] 
  19. connection=mysql://cinder:CINDER_DBPASS@controller.nice.com/cinder 
  20. [DEFAULT] 
  21. rpc_backend=rabbit 
  22. rabbit-host=controller.nice.com 
  23. rabbit_password=RABBIT_PASS 
  24. auth_strategy=keystone 
  25. verbose=True 
  26. my_ip=192.168.1.5 
  27. [keystone_authtoken] 
  28. auth_uri=http://controller.nice.com:5000/v2.0 
  29. identity_uri=http://controller.nice.com:35357 
  30. admin_tenant_name=service 
  31. admin_user=cinder 
  32. admin_password=CINDER_PASS 
  33.  
  34. #初始化存储服务数据库 
  35. su -s /bin/sh -c "cinder-manage db sync" cinder 
  36. # 完成安装,启动块存储服务并开机启动 
  37. systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service 
  38. systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service 
  • 安装并配置block1节点
  1. # 配置先决条件 
  2. ## 新添加一块硬盘如sdb,并将全部空间分成一个主分区 
  3. ## 配置网卡信息 
  4. ip address:192.168.100.21 
  5. Network mask:255.255.255.0(or/24) 
  6. Default gateway:192.168.100.1 
  7. ## 配置主机名为block1.nice.com,并田间dns记录设置ntp服务 
  8. ## 安装lvm软件包(根据自身情况) 
  9. yum -y install lvm2 
  10. ## 启动lvm服务并这只开机自启动(根据自身情况) 
  11. systemctl enable lvm2-lvmetad.service 
  12. systemctl start lvm2-lvmetad.service 
  13. ## 创建物理卷/dev/sdb1 
  14. pvcreate /dev/sdb1 
  15. ## 创建卷组cinder-volumes(名字不要改) 
  16. vgcreate cinder-volumes /dev/sdb1 
  17. ## /etc/lvm/lvm.conf配置使系统只扫描启动lvm的磁盘,防止识别其他非lvm磁盘对块存储服务造成影响 
  18. devices{ 
  19. filter=["a/sda/","a/sdb/","r/.*/"] 
  20. } 
  21. ### 如果你的系统磁盘使用了lvm,则必须添加系统盘到过滤器中 
  22. ### 同样,如果compute节点的系统盘也使用了lvm,则也需要修改/etc/lvm/lvm.conf文件并添加过滤器 
  23. filter=["a/sdb/","r/.*/"] 
  24. # 安装并配置快存储卷组件 
  25. yum -y install openstack-cinder targetcli python-oslo-db MySQL-python 
  26. ## /etc/cinder/cinder.conf 
  27. [database] 
  28. connection=mysql://cinder:CINDER_DBPASS@controller.nice.com/cinder 
  29. [DEFAULT] 
  30. rpc_backend=rabbit 
  31. rabbit-host=controller.nice.com 
  32. rabbit_password=RABBIT_PASS 
  33. auth_strategy=keystone 
  34. verbose=True 
  35. my_ip=Management_INTERFACE_IP_ADDRESS 
  36. glance_host=controller.nice.com 
  37. ### 配置块存储服务使用lioadm iSCSI服务 
  38. iscsi_helper=lioadm 
  39. [keystone_authtoken] 
  40. auth_uri=http://controller.nice.com:5000/v2.0 
  41. identity_uri=http://controller.nice.com:35357 
  42. admin_tenant_name=service 
  43. admin_user=cinder 
  44. admin_password=CINDER_PASS 
  45.  
  46. # 完成安装,启动块存储服务并开机启动 
  47. systemctl enable openstack-cinder-volume.service target.service 
  48. systemctl start openstack-cinder-volume.service target.service 
  49. # 验证(在controller节点) 
  50. source admin-openrc.sh 
  51. cinder service-list 
  52. source demo-openrc.sh 
  53. ## 创建1GB的卷 
  54. cinder create --display-name demo-volume1 1 
  55. ##确认卷已创建并可用 
  56. cinder list 
  57.  
3-1-2-7. 实例构建
  • 创建秘钥对
  1. source demo-openrc.sh 
  2. ssh-keygen 
  3. ## 添加公钥到openstack环境 
  4. nova keypair-add --pub-key ~/.ssh/id_rsa.pub demo-key 
  5. ## 验证公钥是否添加成功 
  6. nova keypair-list 
  • 启动一个实例
  1. #要启动一个实例最少指定flavor(云主机类型),image name(镜像名),network(网络),security group(安全组),key(秘钥) 和instance name(实例名)。 
  2. ## flavor用来指定一个虚拟的独立分配的资源包括cpu,内存和存储,查看可用的flavor 
  3. nova flavor-list 
  4. ## 列出可用的镜像 
  5. nova image-list 
  6. ## 列出可用的网络 
  7. neutron net-list 
  8. ## 列出可用的安全组 
  9. nova secgroup-list 
  10. # 启动实例 
  11. nova boot --flavor m1.tiny --image cirros-0.3.3-x86_64 --nic net-id=DEMO_NET_ID --security-group default --key-name demo-key demo-instance1 
  12. ##查看实例状态 
  13. nova list 
  • 通过虚拟控制台访问你的实例
  1. #获取访问地址 
  2. nova get-vnc-console demo-instance1 novnc 

QQPCRealTimeSpeedup_8GT6Y6R6MI.png
QQPCRealTimeSpeedup_8GT6Y6R6MI.png

地址访问效果
chrome_lVCGQEtx0o.png

  • 远程访问你的实例
  1. #添加规则到名为default的安全组 
  2. ## 允许icmp协议(ping) 
  3. nova secgroup-add-rule default icmp-1-1 0.0.0.0/0 
  4. ## 允许ssh协议 
  5. nova secgroup-add-rule default tcp 22 22 0.0.0.0/0 
  6. # 在ext-net外部网络创建一个浮动ip地址 
  7. neutron floatingip-create ext-net 
  8. # 分配浮动ip地址到你的实例 
  9. nova floating-ip-associate demo-instance1 10.0.0.110 #就是公网浮动ip地址 
  10. #检查你的浮动ip地址状态 
  11. nova list 
  12. #从任何一个可以和ext-net网络通讯的追加测试联通性 
  13. ping -c 4 10.0.0.110 
  14. #从任何一个可以和ext-net通讯主机通过ssh访问实例 
  15. ssh cirros@10.0.0.110 
  16. ##或将私钥文件赋值到外部客户端,公国秘钥对验证登录 
  17. ssh -i id_rsa cirros@10.0.0.110 
  • 为你的实例添加额外的云硬盘

命令行方式

  1. source demo-openrc.sh 
  2. #列出卷 
  3. nova volume-list 
  4. #附加demo-volume1卷到demo-instance1实例 
  5. nova volume-attach demo-instance1 158bea89-07db-4ac2-8115-660c0d6a4bb48 #volume1的id 

以下两张截图是实例的命令执行效果
chrome_KiQhRHaDrp.png
chrome_lvRNKdRQgM.png

  1. sudo fdisk -l #查看可用磁盘 
  2. sudo mkfs -t ext4 /dev/vdb1 #格式化 
  3. sudo mkdir /data #创建挂载目录 
  4. sudo mount -t ext4 /dev/vdb1 /data/ #挂载 
  5. sudo mount # 查看挂载 
3-1-2-7-1. 界面创建云硬盘-创建实例-挂载云硬盘-绑定浮动ip

创建云硬盘,实例
eFSrI8wvYA.gif
挂载云硬盘及绑浮动ip
wVPnfZicsY.gif

以上步骤一般也是百度,阿里云的购买使用步骤

posted @ 2021-03-11 16:33  编程未来  阅读(132)  评论(0编辑  收藏  举报