OpenStack Mitaka集成Ceph Jewel安装部署文档

目录 系统部署环境... 4 系统配置... 4 网络配置... 4 基本配置... 4 Hosts文件同步以及节点间免ssh互联... 4 时间同步... 6 OpenStack安装包... 7 其他安装配置... 8 Memcached安装配置... 9 认证服务... 9 基本配置... 9 创建服务体和API端点... 12 创建域、工程、用户及角色... 13 验证操作... 15 创建OpenStack客户端环境脚本... 15 镜像服务... 16 基本配置... 16 安装配置... 18 验证操作... 19 计算服务... 20 管理节点(控制节点)上安装与配置... 20 基本配置... 20 安装配置... 22 计算节点(compute)上安装与配置... 24 验证操作... 25 网络服务... 26 管理节点(控制节点)上安装与配置... 26 基本配置... 26 配置网络选项... 27 配置元数据代理... 29 结束安装... 29 所有计算节点上安装与配置... 30 安装组件... 30 配置通用组件... 30 配置网络选项... 31 结束安装... 32 验证操作... 32 Dashboard服务... 33 控制节点安装配置... 33 结束安装... 34 验证操作... 34 块存储服务... 34 管理(控制节点)节点上安装与配置... 34 基本配置... 34 安装配置组件... 35 所有存储节点上安装与配置... 36 验证操作... 37 集成Ceph相关配置... 38 创建Pool 38 安装Ceph Client包... 38 openstack安装Ceph客户端认证... 38 Openstack配置... 40 网络... 41 创建网络... 41 创建子网... 42 创建m1.nano规格的主机... 43 生成一个键值对... 43 增加安全组规则... 44 添加规则到default安全组... 44 测试... 45 创建卷... 45 创建镜像... 46 创建云主机... 47    

系统部署环境

系统配置

OpenStack部署平台包含2个节点,ceph存储包括一个单节点,系统配置如下表所示。
序号 IP 主机名 角色 内存 磁盘 操作系统
1 192.168.0.4 101.101.101.81 controller 控制节点 管理节点 8GB 40G CentOS Linux release 7.2.1511 minimal
2 192.168.0.9 101.101.101.82 compute openstack存储节点 计算节点 8GB 40G CentOS Linux release 7.2.1511 minimal
3 192.168.0.208   ceph ceph节点 2GB 2个20G CentOS Linux release 7.2.1511
其中,我们选取controller节点作为OpenStack的管理节点和控制节点,选取compute作为计算节点。

网络配置

本部署采用self-service网络架构。  

基本配置

Hosts文件同步以及节点间免ssh互联

所有节点/etc/hosts文件配置所有节点ip与主机名的映射关系。 [root@controller ~]# cat /etc/hosts 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.0.4 controller 192.168.0.9 compute 所有节点均有所有节点的IP与主机名映射信息   下面以计算节点为例子进行ssh的配置,其他所有节点均是这样的操作 [root@compute ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 6c:e6:e3:e6:bc:c2:00:0a:bd:86:00:5b:4a:87:f9:b9 root@compute The key's randomart image is: +--[ RSA 2048]----+ |  o              | |.+..             | |o=o .            | |= oo   .         | |oo o.   S        | |o oE.  +         | | .   o  o        | |      oo..       | |       +=.       | +-----------------+ [root@compute ~]# ssh-copy-id -i compute    //与自己本身进行免密码互联 The authenticity of host 'compute (192.168.0.9)' can't be established. ECDSA key fingerprint is f2:56:78:dd:48:7f:f5:c4:bf:70:96:17:11:98:7a:30. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@compute's password:   Number of key(s) added: 1   Now try logging into the machine, with:   "ssh 'compute'" and check to make sure that only the key(s) you wanted were added.   [root@compute ~]# ssh-copy-id -i controller   //与控制节点进行免密码ssh互联 The authenticity of host 'controller (192.168.0.4)' can't be established. ECDSA key fingerprint is 92:6f:a0:74:6d:cd:b8:cc:7c:b9:6e:de:5d:d2:c4:14. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@controller's password:   Number of key(s) added: 1   Now try logging into the machine, with:   "ssh 'controller'" and check to make sure that only the key(s) you wanted were added.  

时间同步

安装NTP(Network Time Protocol)协议实现软件Chrony,保证管理节点与计算节点之间的时间同步。
  1. 管理节点controller上执行以下操作:
安装chrony组件 # yum install chrony -y 修改配置文件 # vim /etc/chrony.conf   修改时钟服务器 server 0.centos.pool.ntp.org iburst server 1.centos.pool.ntp.org iburst server 2.centos.pool.ntp.org iburst server 3.centos.pool.ntp.org iburst   追加子网段,允许其他节点可以连接到Controller的chrony daemon allow 192.168.0.0/24   开机自启动并启动NTP服务 # systemctl enable chronyd.service # systemctl restart chronyd.service  
  1. 其他节点执行以下操作
安装chrony组件 # yum install chrony -y   修改配置文件 # vim /etc/chrony.conf   修改时钟服务器为controller server controller iburst   开机自启动并启动NTP服务 # systemctl enable chronyd.service # systemctl start chronyd.service  
  1. 验证时间同步服务
在controller节点上验证NTP服务 # chronyc sources 在其他节点上验证NTP服务 # chronyc sources 注:如果其他节点上时间服务器未参考controller服务器,尝试重启(systemctl restart chronyd.service)后查看。 注意要设置时区一致: 查看时区 # date +%z 如果不一致,可修改时区为东八区 #cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime    

OpenStack安装包

openstack控制节点与计算节点需要执行以下操作,完成OpenStack安装包的下载与更新。 OpenStack RPM软件仓库 # yum install centos-release-openstack-mitaka -y   更新包 # yum upgrade   安装OpenStack python客户端 # yum install python-openstackclient -y   安装openstack-selinux包用于OpenStack服务的自动管理 # yum install openstack-selinux -y  

其他安装配置

以下将安装配置SQL数据库、NoSQL数据库、消息队列、缓存等组件,通常这些组件安装在controller管理节点上,为OpenStack认证、镜像、计算等服务的基本组件。
  1. SQL数据库安装配置
安装mariadb mysql # yum install mariadb mariadb-server python2-PyMySQL -y   创建openstack  mysql配置文件 # vim /etc/my.cnf.d/openstack.cnf 绑定 controller节点的IP地址 [mysqld] bind-address = 192.168.0.4 default-storage-engine = innodb innodb_file_per_table collation-server = utf8_general_ci character-set-server = utf8   启动mariadb服务 # systemctl enable mariadb.service # systemctl start mariadb.service   MariaDB的安全性配置 # mysql_secure_installation   Set root password? [Y/n]Y 设置数据库密码为123456 其他默认  
  1. NoSQL数据库安装配置
Telemetry服务需要用到NoSQL数据库保存信息,controller 节点上需要安装MongoDB # yum install mongodb-server mongodb -y   修改配置文件 # vim /etc/mongod.conf 指定controller 节点IP bind_ip = 192.168.0.4 日志小文件选项 smallfiles = true   MongoDB服务启动 # systemctl enable mongod.service # systemctl start mongod.service  
  1. MQ安装配置
安装RabbitMQ消息队列服务 # yum install rabbitmq-server -y   服务自启动 # systemctl enable rabbitmq-server.service # systemctl start rabbitmq-server.service   创建消息队列用户openstack # rabbitmqctl add_user openstack RABBIT_PASS    //密码设置为RABBIT_PASS   设置openstack用户的配置、读写权限 # rabbitmqctl set_permissions openstack ".*" ".*" ".*"  

Memcached安装配置

  Identity身份认证服务需要用到缓存 安装 # yum install memcached python-memcached -y 服务启动 # systemctl enable memcached.service # systemctl start memcached.service  

认证服务

Identity集中管理认证、授权、目录服务,其他服务与Identity服务协同,将利用其作为通用统一的API。 Identity包含Server、Drivers、Modules组件。Server是一个集中化服务器,通过RESTful借口提供认证和授权服务。Drivers又称后端服务,集成到Server中,用于获取OpenStack的身份信息。Modules运行于OpenStack组件的地址空间,这些模块拦截服务请求、提取用户证书、并发送给认证服务器来进行认证,利用Python Web Server Gateway接口将中间件模块和OpenStack集成。以下操作均在openstack管理节点操作,既控制节点上。

基本配置

  1. 数据库配置
创建数据库实例和数据库用户 $ mysql -u root –p 在数据库客户端中执行以下操作: 执行创建命令 CREATE DATABASE keystone; 执行数据库用户授权 GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \ IDENTIFIED BY 'KEYSTONE_DBPASS'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \ IDENTIFIED BY 'KEYSTONE_DBPASS';   openssl产生随机数作为初始化配置Token $ openssl rand -hex 10 db8a90c712a682517585  
  1. 安装和配置组件
认证服务需要开启Apache服务器的5000和35357的端口 安装软件包 # yum install openstack-keystone httpd mod_wsgi -y   编辑配置文件 # vim /etc/keystone/keystone.conf 编辑以下选项 [DEFAULT] ... admin_token =db8a90c712a682517585   注明:此处token为openssl生成的随机数   [database] ... connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@Controller/keystone   [token] ... provider = fernet   将认证服务填入数据库   # su -s /bin/sh -c "keystone-manage db_sync" keystone   初始化Fernet键 # keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone   配置Apache HTTP服务器 修改服务器主机名 # vim /etc/httpd/conf/httpd.conf ServerName controller   创建配置文件 # vim /etc/httpd/conf.d/wsgi-keystone.conf     Listen 5000 Listen 35357   <VirtualHost *:5000> WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP} WSGIProcessGroup keystone-public WSGIScriptAlias / /usr/bin/keystone-wsgi-public WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On ErrorLogFormat "%{cu}t %M" ErrorLog /var/log/httpd/keystone-error.log CustomLog /var/log/httpd/keystone-access.log combined   <Directory /usr/bin> Require all granted </Directory> </VirtualHost>   <VirtualHost *:35357> WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP} WSGIProcessGroup keystone-admin WSGIScriptAlias / /usr/bin/keystone-wsgi-admin WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On ErrorLogFormat "%{cu}t %M" ErrorLog /var/log/httpd/keystone-error.log CustomLog /var/log/httpd/keystone-access.log combined   <Directory /usr/bin> Require all granted </Directory> </VirtualHost>     启动服务 # systemctl enable httpd.service # systemctl start httpd.service   浏览器可访问localhost:5000 和 localhost:35357  

创建服务体和API端点

设置临时环境变量 $ export OS_TOKEN=db8a90c712a682517585 注明:其中OS_TOKEN为之前openssl生成的随机数。 $ export OS_URL=http://controller:35357/v3 $ export OS_IDENTITY_API_VERSION=3   创建服务实体和API端点 $ openstack service create \ --name keystone --description "OpenStack Identity" identity $ openstack endpoint create --region RegionOne \ identity public http://controller:5000/v3 $ openstack endpoint create --region RegionOne \ identity internal http://controller:5000/v3 $ openstack endpoint create --region RegionOne \ identity admin http://controller:35357/v3

创建域、工程、用户及角色

  创建默认域 $ openstack domain create --description "Default Domain" default   创建管理工程 $ openstack project create --domain default \ --description "Admin Project" admin   创建admin用户 $ openstack user create --domain default \ --password-prompt admin User Password:(123456) Repeat User Password:(123456)   创建角色 $ openstack role create admin   增加管理角色至admin工程和用户 $ openstack role add --project admin --user admin admin   与以上操作类似,创建一个包含一个唯一用户的服务工程 $ openstack project create --domain default \ --description "Service Project" service $ openstack project create --domain default \ --description "Demo Project" demo $ openstack user create --domain default \ --password-prompt demo (passwd:123456) $ openstack role create user $ openstack role add --project demo --user demo user

验证操作

在管理节点上执行以下操作
  1. 鉴于安全因素,移除临时的token认证授权机制
# vim /etc/keystone/keystone-paste.ini 将[pipeline:public_api], [pipeline:admin_api],和[pipeline:api_v3]中的admin_token_auth移除,注意不是删除或注释该行。
  1. 取消设置环境变量
$ unset OS_TOKEN OS_URL
  1. 请求认证环
利用admin用户请求 $ openstack --os-auth-url http://Controller:35357/v3 \ --os-project-domain-name default --os-user-domain-name default \ --os-project-name admin --os-username admin token issue 利用demo用户请求 $ openstack --os-auth-url http://Controller:5000/v3 \ --os-project-domain-name default --os-user-domain-name default \ --os-project-name demo --os-username demo token issue  

创建OpenStack客户端环境脚本

前面操作是利用环境变量及OpenStack客户端命令行方式与认证服务交互,OpenStack可以通过OpenRC脚本文件来提高认证效率。 $ vim admin-openrc export OS_PROJECT_DOMAIN_NAME=default export OS_USER_DOMAIN_NAME=default export OS_PROJECT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=123456 export OS_AUTH_URL=http://controller:35357/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2   $ vim demo-openrc export OS_PROJECT_DOMAIN_NAME=default export OS_USER_DOMAIN_NAME=default export OS_PROJECT_NAME=demo export OS_USERNAME=demo export OS_PASSWORD=123456 export OS_AUTH_URL=http://controller:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2   增加脚本执行权限 $ chmod +x admin-openrc $ chmod +x demo-openrc   可以通过执行以上脚本来快速切换工程及用户,例如: $ . admin-openrc 请求认证Token $ openstack token issue  

镜像服务

本文部署在管理节点既控制节点上。

基本配置

登录mysql客户端,创建表及用户,并授予相应的数据库权限 [root@controller ~]# mysql -u root -p CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \ IDENTIFIED BY 'GLANCE_DBPASS'; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \ IDENTIFIED BY 'GLANCE_DBPASS'; (注:密码采用了默认)   用户认证 利用客户端脚本获取认证 $ . admin-openrc   创建glance用户 $ openstack user create --domain default --password-prompt glance User Password:(123456) Repeat User Password:   $ openstack role add --project service --user glance admin $ openstack service create --name glance \ --description "OpenStack Image" image 创建镜像服务API端点 $ openstack endpoint create --region RegionOne \ image public http://controller:9292 $ openstack endpoint create --region RegionOne \ image internal http://controller:9292 $ openstack endpoint create --region RegionOne \ image admin http://controller:9292

安装配置

安装glance包 # yum install openstack-glance -y   配置/etc/glance/glance-api.conf   # vim /etc/glance/glance-api.conf 按照以下选项进行编辑(红色部分为glance数据库密码)   [database] connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance   [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = 123456   [paste_deploy] flavor = keystone   [glance_store] stores = file,http default_store = file filesystem_store_datadir = /var/lib/glance/images/   配置/etc/glance/glance-registry.conf # vim /etc/glance/glance-registry.conf 按照以下选项进行编辑(红色部分注意替换为你实际设置的数据库glance密码) [database] connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance   [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = 123456   [paste_deploy] flavor = keystone   服务填充至数据库 #  su -s /bin/sh -c "glance-manage db_sync" glance 结束安装 # systemctl enable openstack-glance-api.service \ openstack-glance-registry.service # systemctl start openstack-glance-api.service \ openstack-glance-registry.service  

验证操作

切换admin用户 $ . admin-openrc 下载源镜像 $ wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img 镜像上传并设置属性 $ openstack image create "cirros"   --file cirros-0.3.4-x86_64-disk.img   --disk-format qcow2 --container-format bare   --public 验证是否成功 $ openstack image list

计算服务

OpenStack计算服务主要包括以下组件:nova-api服务、nova-api-metadata服务、nova-compute服务、nova-scheduler服务、nova-conductor模块、nova-cert模块、nova-network worker模块、nova-consoleauth模块、nova-novncproxy守护进程、nova-spicehtml5proxy守护进程、nova-xvpvncproxy守护进程、nova-cert守护进程、nova客户端、队列、SQL数据库。  

管理节点(控制节点)上安装与配置

基本配置

创建数据库表及用户 [root@controller ~]# mysql -uroot -p123456 执行以下SQL命令 CREATE DATABASE nova_api; CREATE DATABASE nova; GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \ IDENTIFIED BY 'NOVA_DBPASS'; GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \ IDENTIFIED BY 'NOVA_DBPASS'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \ IDENTIFIED BY 'NOVA_DBPASS'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \ IDENTIFIED BY 'NOVA_DBPASS';   切换用户获取认证 $ . admin-openrc   创建nova用户 $ openstack user create --domain default \ --password-prompt nova User Password:(123456) Repeat User Password:     增加admin角色 $ openstack role add --project service --user nova admin     创建nova服务实体 $ openstack service create --name nova \ --description "OpenStack Compute" compute   创建计算服务的API endpoints $ openstack endpoint create --region RegionOne \ compute public http://controller:8774/v2.1/%\(tenant_id\)s $ openstack endpoint create --region RegionOne \ compute internal http://controller:8774/v2.1/%\(tenant_id\)s $ openstack endpoint create --region RegionOne \ compute admin http://controller:8774/v2.1/%\(tenant_id\)s

安装配置

安装软件包 # yum install openstack-nova-api openstack-nova-conductor   openstack-nova-console openstack-nova-novncproxy   openstack-nova-scheduler -y   nova配置 修改配置文件 # vim /etc/nova/nova.conf 注:将红色部分修改称个人配置   [DEFAULT] enabled_apis = osapi_compute,metadata rpc_backend = rabbit auth_strategy = keystone my_ip = 192.168.0.4 use_neutron = True firewall_driver = nova.virt.firewall.NoopFirewallDriveserver_proxyclient_address = $my_ip     [api_database] connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api     [database] connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova   [oslo_messaging_rabbit] rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS   [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = nova password = 123456   [vnc] vncserver_listen = $my_ip vncserver_proxyclient_address = $my_ip   [glance] api_servers = http://controller:9292   [oslo_concurrency] lock_path = /var/lib/nova/tmp   将配置写入到数据库中 # su -s /bin/sh -c "nova-manage api_db sync" nova # su -s /bin/sh -c "nova-manage db sync" nova   nova服务自启动与启动 # systemctl enable openstack-nova-api.service \ openstack-nova-consoleauth.service openstack-nova-scheduler.service \ openstack-nova-conductor.service openstack-nova-novncproxy.service # systemctl start openstack-nova-api.service \ openstack-nova-consoleauth.service openstack-nova-scheduler.service \ openstack-nova-conductor.service openstack-nova-novncproxy.service    

计算节点(compute)上安装与配置

在安装计算节点前需要设置OpenStack的源码包,参考 系统环境àOpenStack安装包的步骤。 安装nova compute包 # yum install openstack-nova-compute -y   在其中一台compute修改配置文件,然后拷贝到所有(若是有多台计算节点) # vim /etc/nova/nova.conf   [DEFAULT] rpc_backend = rabbit auth_strategy = keystone my_ip = 192.168.0.9 use_neutron = True firewall_driver = nova.virt.firewall.NoopFirewallDriver   [oslo_messaging_rabbit] rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS     [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = nova password = 123456   [vnc] enabled = True vncserver_listen = 0.0.0.0 vncserver_proxyclient_address = $my_ip novncproxy_base_url = http://controller:6080/vnc_auto.html   [glance] api_servers = http://controller:9292     [oslo_concurrency] lock_path = /var/lib/nova/tmp   判断是否支持虚拟机硬件加速 $ egrep -c '(vmx|svm)' /proc/cpuinfo 如果返回0,标识不支持硬件加速,修改配置文件中[libvirt]选项为qemu,如果返回1或者大于1的数字,修改[libvirt]选项为kvm [libvirt] virt_type = qemu 服务启动 # systemctl enable libvirtd.service openstack-nova-compute.service # systemctl start libvirtd.service openstack-nova-compute.service 所有节点确保nova.conf文件属组   问题1:利用scp命令将配置文件拷贝到其他计算节点,修改IP后启动时,发现无法启动服务,错误为:Failed to open some config files: /etc/nova/nova.conf,主要原因是配置权限错误,注意权限:chown root:nova nova.conf  

验证操作

控制节点操作 $  . admin-openrc 列出服务组件,用于验证每个过程是否成功 $ openstack compute service list

网络服务

不同的服务器硬件网络配置选项不同。实体机与虚拟机有差别。根据自身情况进行参考官网http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/neutron.html进行自行配置。本例属于虚拟机。

管理节点(控制节点)上安装与配置

基本配置

[root@controller ~]# mysql -uroot -p123456 CREATE DATABASE neutron; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \ IDENTIFIED BY 'NEUTRON_DBPASS'; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \ IDENTIFIED BY 'NEUTRON_DBPASS'; 执行脚本 $ . admin-openrc 创建neutron用户及增加admin角色 $ openstack user create --domain default --password-prompt neutron User Password:(123456) Repeat User Password:   添加角色 $ openstack role add --project service --user neutron admin 创建neutron实体 $ openstack service create --name neutron \ --description "OpenStack Networking" network $ openstack endpoint create --region RegionOne \ network public http://controller:9696 $ openstack endpoint create --region RegionOne \ network internal http://controller:9696 $ openstack endpoint create --region RegionOne \ network admin http://controller:9696

配置网络选项

配置网络:有Provider networks和Self-service networks两种类型可选,此处选择Self-service networks。   安装组件 # yum install openstack-neutron openstack-neutron-ml2 \ openstack-neutron-linuxbridge ebtables -y   服务器组件配置(注意替换红色部分)   # vim /etc/neutron/neutron.conf   [database] connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron   [DEFAULT] core_plugin = ml2 service_plugins = router allow_overlapping_ips = True rpc_backend = rabbit auth_strategy = keystone notify_nova_on_port_status_changes = True notify_nova_on_port_data_changes = True   [oslo_messaging_rabbit] rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS   [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = 123456   [nova] auth_url = http://controller:35357 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = nova password = 123456   [oslo_concurrency] lock_path = /var/lib/neutron/tmp   # vim /etc/neutron/plugins/ml2/ml2_conf.ini   [ml2] type_drivers = flat,vlan tenant_network_types = mechanism_drivers = linuxbridge extension_drivers = port_security   [ml2_type_flat] flat_networks = provider   [securitygroup] enable_ipset = True   # vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini [linux_bridge] physical_interface_mappings = provider: eno33554984 注:eno33554984为第二块网卡设备   [vxlan] enable_vxlan = False   [securitygroup] enable_security_group = True firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver   # vim /etc/neutron/l3_agent.ini   //我本地虚拟机环境没有配置这个文件。   [DEFAULT] interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver external_network_bridge =   # vim /etc/neutron/dhcp_agent.ini   [DEFAULT] interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = True  

配置元数据代理

# vim /etc/neutron/metadata_agent.ini   [DEFAULT] nova_metadata_ip = controller metadata_proxy_shared_secret = METADATA_SECRET   注:METADATA_SECRET为自定义的字符密码,与下文nova.conf中metadata_proxy_shared_secret配置一致。   # vim /etc/nova/nova.conf   [neutron] url = http://controller:9696 auth_url = http://controller:35357 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = 123456 service_metadata_proxy = True metadata_proxy_shared_secret = METADATA_SECRET

结束安装

创建配置文件符号连接 # ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini   配置存取到数据库 # su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \ --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron   重启计算API服务 # systemctl restart openstack-nova-api.service   服务启动 # systemctl enable neutron-server.service \ neutron-linuxbridge-agent.service neutron-dhcp-agent.service \ neutron-metadata-agent.service # systemctl start neutron-server.service \ neutron-linuxbridge-agent.service neutron-dhcp-agent.service \ neutron-metadata-agent.service    

所有计算节点上安装与配置

安装组件

# yum install openstack-neutron-linuxbridge ebtables ipset -y  

配置通用组件

# vim /etc/neutron/neutron.conf   [DEFAULT] rpc_backend = rabbit auth_strategy = keystone   [oslo_messaging_rabbit] rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS   [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = 123456   [oslo_concurrency] lock_path = /var/lib/neutron/tmp   同样方法配置其他节点,利用scp复制配置文件需要修改权限 将配置文件拷贝到其他计算节点,并在其他计算节点上修改文件拥有者权限 # scp /etc/neutron/neutron.conf root@computer02:/etc/neutron/ 切换到其他节点 # chown root:neutron /etc/neutron/neutron.conf

配置网络选项

# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini   [linux_bridge] physical_interface_mappings = provider: eno33554984 注:红色部分为PROVIDER_INTERFACE_NAME,应为本计算节点物理网卡名(除开管理网络网卡)   [vxlan] enable_vxlan = False   [securitygroup] enable_security_group = True firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver 拷贝到其他计算节点上,注意权限。   配置所有计算节点利用neutron # vim /etc/nova/nova.conf [neutron] url = http://controller:9696 auth_url = http://controller:35357 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = 123456  

结束安装

重启计算服务 # systemctl restart openstack-nova-compute.service   启动Linux桥接代理 # systemctl enable neutron-linuxbridge-agent.service # systemctl start neutron-linuxbridge-agent.service

验证操作

在管理节点上执行以下操作 $ . admin-openrc $ neutron ext-list   $ neutron agent-list  

Dashboard服务

控制节点安装配置

安装包 # yum install openstack-dashboard -y   修改配置 # vim /etc/openstack-dashboard/local_settings   OPENSTACK_HOST = "controller"   ALLOWED_HOSTS = ['*', ]   SESSION_ENGINE = 'django.contrib.sessions.backends.cache' CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': 'controller:11211', }, }   OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST   OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True   OPENSTACK_API_VERSIONS = { "identity": 3, "image": 2, "volume": 2, }   OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "default"   OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user" 如果选择网络模式1 provider,此处采用 OPENSTACK_NEUTRON_NETWORK = { ... 'enable_router': False, 'enable_quotas': False, 'enable_distributed_router': False, 'enable_ha_router': False, 'enable_lb': False, 'enable_firewall': False, 'enable_vpn': False, 'enable_fip_topology_check': False, }   TIME_ZONE = "UTC"  

结束安装

# systemctl restart httpd.service memcached.service  

验证操作

  http://192.168.0.4/dashboard. 域填写default,登录用户可为admin或demo 遇到问题:RuntimeError: Unable to create a new session key. It is likely that the cache is unavailable. 将'LOCATION': 'controller:11211', 改为'LOCATION': 127.0.0.1:11211',即可    

块存储服务

管理(控制节点)节点上安装与配置

基本配置

[root@controller ~]# mysql -uroot -p123456 CREATE DATABASE cinder; GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \ IDENTIFIED BY 'CINDER_DBPASS'; GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \ IDENTIFIED BY 'CINDER_DBPASS';   $ . admin-openrc $ openstack user create --domain default --password-prompt cinder User Password:(123456) Repeat User Password: $ openstack role add --project service --user cinder admin $ openstack service create --name cinder \ --description "OpenStack Block Storage" volume $ openstack service create --name cinderv2 \ --description "OpenStack Block Storage" volumev2 创建cinder服务的API endpoints $ openstack endpoint create --region RegionOne \ volume public http://controller:8776/v1/%\(tenant_id\)s $ openstack endpoint create --region RegionOne \ volume internal http://controller:8776/v1/%\(tenant_id\)s $ openstack endpoint create --region RegionOne \ volume admin http://controller:8776/v1/%\(tenant_id\)s   $ openstack endpoint create --region RegionOne \ volumev2 public http://controller:8776/v2/%\(tenant_id\)s $ openstack endpoint create --region RegionOne \ volumev2 internal http://controller:8776/v2/%\(tenant_id\)s $ openstack endpoint create --region RegionOne \ volumev2 admin http://controller:8776/v2/%\(tenant_id\)s  

安装配置组件

# yum install openstack-cinder -y # vim /etc/cinder/cinder.conf [database] connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder   [DEFAULT] rpc_backend = rabbit auth_strategy = keystone my_ip = 192.168.0.4   [oslo_messaging_rabbit] rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS   [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = cinder password = 123456   [oslo_concurrency] lock_path = /var/lib/cinder/tmp   写入数据库 # su -s /bin/sh -c "cinder-manage db sync" cinder 修改计算配置 # vim /etc/nova/nova.conf [cinder] os_region_name = RegionOne 重新启动nova # systemctl restart openstack-nova-api.service 启动cinder # systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service # systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service

所有存储节点上安装与配置

(本例存储节点即为计算节点) Cinder安装包 # yum install openstack-cinder -y   若是多台存储节点,执行脚本 ssh computer01 sudo yum install –y openstack-cinder ssh computer02 sudo yum install –y openstack-cinder ssh computer03 sudo yum install –y openstack-cinder computer01-03为osd节点的主机名 修改配置文件 # vim /etc/cinder/cinder.conf   [database] connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder   [DEFAULT] rpc_backend = rabbit auth_strategy = keystone enabled_backends = lvm glance_api_servers = http://controller:9292 my_ip = 192.168.0.9 注明:IP为当前存储节点的管理网IP     [oslo_messaging_rabbit] rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS   [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = cinder password = 123456   [oslo_concurrency] lock_path = /var/lib/cinder/tmp     服务启动 # systemctl enable openstack-cinder-volume.service # systemctl start openstack-cinder-volume.service   多存储节点执行脚本 ssh computer01 sudo systemctl enable openstack-cinder-volume.service ssh computer02 sudo systemctl enable openstack-cinder-volume.service ssh computer03 sudo systemctl enable openstack-cinder-volume.service ssh computer01 sudo systemctl start openstack-cinder-volume.service ssh computer02 sudo systemctl start openstack-cinder-volume.service ssh computer03 sudo systemctl start openstack-cinder-volume.service  

验证操作

# . admin-openrc $ cinder service-list    

集成Ceph相关配置

创建Pool

# ceph osd pool create volumes 64 # ceph osd pool create images 64 # ceph osd pool create vms 64  

安装Ceph Client包

配置centos7 ceph yum源 在glance-api(控制节点)节点上 yum install python-rbd -y   (计算节点)在nova-compute和cinder-volume节点上 yum install ceph-common -y  

openstack安装Ceph客户端认证

集群ceph存储端操作 [root@ceph ~]# ssh controller sudo tee /etc/ceph/ceph.conf < /etc/ceph/ceph.conf [root@ceph ~]# ssh computesudo tee /etc/ceph/ceph.conf < /etc/ceph/ceph.conf   如果开启了cephx authentication,需要为Nova/Cinder and Glance创建新的用户,如下 ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rx pool=images' ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'   为client.cinder, client.glance添加keyring,如下 ceph auth get-or-create client.glance | ssh controller sudo tee /etc/ceph/ceph.client.glance.keyring ssh controller sudo chown glance:glance /etc/ceph/ceph.client.glance.keyring   ceph auth get-or-create client.cinder | ssh compute sudo tee /etc/ceph/ceph.client.cinder.keyring ssh compute sudo chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring 为nova-compute节点上创建临时密钥 ceph auth get-key client.cinder | ssh {your-compute-node} tee client.cinder.key 此处为 ceph auth get-key client.cinder | ssh compute tee client.cinder.key   在所有计算节点上(本例就只有一台计算节点)执行如下操作:在计算节点上为libvert替换新的key uuidgen 536f43c1-d367-45e0-ae64-72d987417c91 cat > secret.xml <<EOF 粘贴以下内容,注意将红色key替换为新生成的key。 <secret ephemeral='no' private='no'> <uuid>536f43c1-d367-45e0-ae64-72d987417c91</uuid> <usage type='ceph'> <name>client.cinder secret</name> </usage> </secret> EOF virsh secret-define --file secret.xml 以下—base64 后的秘钥为计算节点上/root目录下的client.cinder.key。是之前为计算节点创建的临时秘钥文件 virsh secret-set-value --secret 536f43c1-d367-45e0-ae64-72d987417c91 --base64 AQCliYVYCAzsEhAAMSeU34p3XBLVcvc4r46SyA== [root@compute ~]#rm –f client.cinder.key secret.xml

Openstack配置

在控制节点操作 vim /etc/glance/glance-api.conf   [DEFAULT] ... default_store = rbd show_image_direct_url = True show_multiple_locations = True ... [glance_store] stores = rbd default_store = rbd rbd_store_pool = images rbd_store_user = glance rbd_store_ceph_conf = /etc/ceph/ceph.conf rbd_store_chunk_size = 8   取消Glance cache管理,去掉cachemanagement [paste_deploy] flavor = keystone   在计算节点操作 vim /etc/cinder/cinder.conf   [DEFAULT] 保留之前的 enabled_backends = ceph #glance_api_version = 2 ... [ceph] volume_driver = cinder.volume.drivers.rbd.RBDDriver rbd_pool = volumes rbd_ceph_conf = /etc/ceph/ceph.conf rbd_flatten_volume_from_snapshot = false rbd_max_clone_depth = 5 rbd_store_chunk_size = 4 rados_connect_timeout = -1 glance_api_version = 2 rbd_user = cinder rbd_secret_uuid =536f43c1-d367-45e0-ae64-72d987417c91   请注意,每个计算节点uuid不同。按照实际情况填写。本例只有一个计算节点   注意,如果配置多个cinder后端,glance_api_version = 2必须添加到[DEFAULT]中。本例注释了   每个计算节点上,设置/etc/nova/nova.conf vim /etc/nova/nova.conf   [libvirt] virt_type = qemu hw_disk_discard = unmap images_type = rbd images_rbd_pool = vms images_rbd_ceph_conf = /etc/ceph/ceph.conf rbd_user = cinder rbd_secret_uuid = 536f43c1-d367-45e0-ae64-72d987417c91 disk_cachemodes="network=writeback" libvirt_inject_password = false libvirt_inject_key = false libvirt_inject_partition = -2 live_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE, VIR_MIGRATE_PEER2PEER, VIR_MIGRATE_LIVE, VIR_MIGRATE_TUNNELLED   重启OpenStack 控制节点 systemctl restart openstack-glance-api.service 计算节点 systemctl restart openstack-nova-compute.service openstack-cinder-volume.service    

网络

创建网络

在控制节点上,加载 admin 凭证来获取管理员能执行的命令访问权限: [root@controller ~]# . admin-openrc [root@controller ~]# neutron net-create --shared --provider:physical_network provider \ >   --provider:network_type flat provider

创建子网

根据实际情况自行修改,起始IP,dns,网关等信息 [root@controller ~]# neutron subnet-create --name provider --allocation-pool start=192.168.0.10,end=192.168.0.30 --dns-nameserver 192.168.0.1 --gateway 192.168.0.1 provider 192.168.0.0/24

创建m1.nano规格的主机

默认的最小规格的主机需要512 MB内存。对于环境中计算节点内存不足4 GB的,我们推荐创建只需要64 MB的``m1.nano``规格的主机。若单纯为了测试的目的,请使用``m1.nano``规格的主机来加载CirrOS镜像 [root@controller ~]# openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano

生成一个键值对

大部分云镜像支持公共密钥认证而不是传统的密码认证。在启动实例前,你必须添加一个公共密钥到计算服务。 导入租户``demo``的凭证 [root@controller ~]# . demo-openrc 生成和添加秘钥对 使用本身存在的公钥 [root@controller ~]# openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey 验证公钥的添加 [root@controller ~]# openstack keypair list

增加安全组规则

默认情况下, ``default``安全组适用于所有实例并且包括拒绝远程访问实例的防火墙规则。对诸如CirrOS这样的Linux镜像,我们推荐至少允许ICMP (ping) 和安全shell(SSH)规则。

添加规则到default安全组

允许ICMP(ping): [root@controller ~]# openstack security group rule create --proto icmp default 允许安全shell(ssh)的访问: [root@controller ~]# openstack security group rule create --proto tcp --dst-port 22 default    

测试

创建卷

创建的卷就是使用的是ceph存储中的volumes池。下面在创建一个卷。

创建镜像

因为与ceph结合,只支持raw格式的镜像。将镜像格式转换 [root@controller ~]# qemu-img convert -f qcow2 -O raw cirros-0.3.4-x86_64-disk.img cirror.raw Openstack web端创建镜像 这个镜像就是上传到ceph存储中的。 验证ceph存储  

创建云主机

在openstack dashboard界面操作,创建云主机过程 根据情况一步一步自己选择,最后点击启动实例按钮。 验证ceph存储   遇到的问题:在web端进入到云主机的控制端无法获取DNS地址。 解决:在计算节点上修改nova.conf文件将controller改为其IP 192.168.0.4地址 重启nova服务 systemctl restart openstack-nova-compute.service    

posted on 2017-01-23 17:29  歪歪121  阅读(76)  评论(0)    收藏  举报