双节点手动搭建openstack
## 一、环境规划
控制节点:controller 8G、2cpu、100G、双网卡
网卡1:NAT 192.168.100.144/24
网卡2:仅主机 暂不配置
计算节点:controller 4G、2cpu、200G、双网卡
网卡1:NAT 192.168.100.145/24
网卡2:仅主机 暂不配置
密码规划
## 二、基础系统环境配置
安装常用包
yum -y install vim net-tools #安装vim和ifconfig的安装包
### 1、网络配置
两个节点的配置如下
虚拟机的配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
将配置文件改为以下就行
TYPE=Ethemet
PROXY_METHOD=none
BROWSER_ONLY=noBOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE FATAL=no
IPV6INIT=yes
IPV_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILUREFATAL=nO
IPV6_ADD_GEN_MODE=stable-privacy
NAME=ens33
UUID=c5ee193b-4ef7-46b5-b251-a2218e302bf2
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.100.144 #自己本机的IP
PREFIX=24
GATEWAY=192.168.100.2 #自己本机的网关
DNS1=114.114.114.114 #DNS服务器
DNS2=223.5.5.5
PEERDNS=no
### 2、关闭NetworkManager(系统网络配置服务)
两个节点的配置如下
systemctl disable NetworkManager
systemctl stop NetworkManager
systemctl status NetworkManager #查看网络状态
### 3、关闭防火墙
两个节点的配置如下
systemctl disable firewalld
systemctl stop firewalld
systemctl status firewalld #查看防火墙状态
### 4、关闭sellnux
两个节点的配置如下
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config && setenforce 0
sed -i "s/需要替换的内容/替换成什么内容/g" /执行替换操作的文件名
这里要将主机重启才能生效命令,但打了setenforce 0这条命令则不用重启
getenforce #检查
结果是disabled(永久关闭)或permissive(临时关闭)
### 5、修改主机名
两个节点的配置如下
控制节点:hostnamectl set-hostname controller
计算节点:hostnamectl set-hostname compute
完后成执行:bash #刷新
### 6、修改hosts文件
两个节点的配置如下
cat <<EOF>> /etc/hosts
192.168.100.144 controller
192.168.100.145 compute
EOF
这里的EOF是检测结束的
> 表示覆盖
>> 追加
验证:
ping -c 2 controller
ping -c 2 compute
### 7、配置NTP时间同步
两个节点的配置如下
yum install chrony #安装时间同步的软件包
vim /etc/chrony.conf #修改配置文件
server ntp.aliyun.com iburst #删除原有服务器,添加这个(控制节点才配置这个)
server controller iburst #计算节点配置
allow 192.168.0.0/16 #打开允许同步的网段 计算节点不用改,控制节点要改
local stratum 10 #打开允许连接数 计算节点不用改,控制节点要改
systemctl start chronyd
systemctl enable chronyd
systemctl status chronyd #检查
chronyc sources #带*号则同步成功,反之没有
date #查看时间
### 8、安装软件包
两个节点的配置如下
这里描述的OpenStack软件包的设置需要哦在所有节点:控制器、计算和块存储节点。
#### 8.1配置国内Yum源
两个节点的配置如下
备份系统Yum源配置文件
cd /etc/yum.repos.d/ && mkdir backup && mv *.repo backup/
下载阿里云的Yum源配置文件
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
安装T版OpenStack的Yum源配置文件
yum -y install centos-release-openstack-train
检查
yum clean all && yum repolist
安装T版的OpenStack客户端
yum -y install python-openstackclient
yum -y install openstack-selinux
## 三、安装OpenStack基础组件
### 1、安装并配置数据库
在控制节点上安装
安装软件包
yum -y install mariadb mariadb-server python2-PyMySQL
创建并修改配置文件
vim /etc/my.cnf.d/openstack.cnf
将以下内容添加到文件里
[mysqld]
bind-address = 192.168.100.144 改为自己的本机Ip
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
启动并自启服务
systemctl enable mariadb.service
systemctl start mariadb.service
初始化数据库配置
mysql_secure_installation
验证
登陆到mysql数据库,并成功查看到数据库内容
mysql -u root -p000000
show databases 用这条命令看数据库是否成功显示
### 2、安装并配置消息队列服务
这里只在控制节点安装
安装软件包
yum -y install rabbitmq-server
启动消息队列服务并将其配置为在 系统引导:
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
添加用户:openstack
rabbitmqctl add_user openstack RABBIT_PASS
Creating user "openstack" ... RABBIT_PASS
替换为合适的密码。RABBIT_PASS
允许用户的配置、写入和读取访问权限:openstack
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/" ...
验证
lsof -i:5672
### 3、安装配置Mencache服务
这里只在控制节点安装
安装软件包
yum -y install memcached python-memcached #适用于 CentOS 7 和 RHEL 7
yum -y install memcached python3-memcached #适用于 CentOS 8 和 RHEL 8
修改配置文件
vim /etc/sysconfig/memcached
将里面的配置文件最后一行改为
OPTIONS="-l 127.0.0.1,::1,controller"
启动自启服务
systemctl enable memcached.service
systemctl start memcached.service
查看状态
systemctl status memcached
### 4、安装配置Etcd
这里只在控制节点安装
安装软件包
yum -y install etcd
修改配置文件
vim /etc/etcd/etcd.conf
删除原有内存,添加如下
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://10.0.0.11:2380"
ETCD_LISTEN_CLIENT_URLS="http://10.0.0.11:2379"
ETCD_NAME="controller"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.0.0.11:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379"
ETCD_INITIAL_CLUSTER="controller=http://10.0.0.11:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"
替换IP位自己的虚拟机的IP地址
sed -i "s#10.0.0.11#192.168.100.144#g" /etc/etcd/etcd.conf
启动自启服务
systemctl enable etcd
systemctl start etcd
## 四、OpenStack业务组件安装
### 1、安装配置keystone认证服务
这里只在控制节点安装
mysql -u root -p000000
创建keystone数据库
MariaDB [(none)]> CREATE DATABASE keystone;
授予对数据库的适当访问权限:clkeystone
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';
替换为合适的密码。KEYSTONE_DBPASS;
退出数据库访问客户端。
安装软件包
yum -y install openstack-keystone httpd mod_wsgi
编辑配置文件
cd /etc/keystone/
cp keystone.conf keystone.conf.source
grep -Ev "^#|^$" keystone.conf.source > keystone.conf
vim /etc/keystone/keystone.conf
[database]
# ...##指定数据库连接信息
connection=mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
[token]
# ...
provider = fernet
替换为您为数据库选择的密码。KEYSTONE_DBPASS
填充数据库
su -s /bin/sh -c "keystone-manage db_sync" keystone
检查填充结果(使用mysql命令进行查看即可)
mysql
初始化fernet密钥存储库
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
执行身份引导
keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
--bootstrap-admin-url http://controller:5000/v3/ \
--bootstrap-internal-url http://controller:5000/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne
配置Apache HTTP服务
编辑配置文件
vim /etc/httpd/conf/httpd.conf
在#SeirverName www.example.com:80下插入行:
ServerName controller
如果该条目尚不存在,则需要添加
创建指向该文件的链接到
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
启动自启httpd服务
systemctl enable httpd.service
systemctl start httpd.service
查看状态
systemctl status httpd
设置环境变量并导入系统:
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
env | grep OS #查看环境变量是否导入成功
创建域、项目、用户和角色
创建example域
openstack domain create --description "An Example Domain" example
创建service项目
openstack project create --domain default --description "Service Project" service
创建myproject项目
openstack project create --domain default --description "Demo Project" myproject
创建myuser用户
openstack user create --domain default --password-prompt myuser
创建myrole角色
openstack role create myrole
将myuser、myrole和myproject关联
openstack role add --project myproject --user myuser myrole
验证操作
取消设置临时和环境变量:OS_AUTH_URLOS_PASSWORD
$ unset OS_AUTH_URL OS_PASSWORD
以用户身份请求身份验证令牌:admin
$ openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name admin --os-username admin token issue
Password: #输入admin密码
以myuser用户请求身份验证令牌:myuser
$ openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name myproject --os-username myuser token issue
Password: #输入admin密码
以myuser用户请求身份验证令牌:myuser
创建用户配置脚本
admin用户
vi /root/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=ADMIN_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
myuser用户
vi /root/demo-openrc
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=myproject
export OS_USERNAME=myuser
export OS_PASSWORD=myuser
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
验证:openstack token issue
### 2、安装配置Glance镜像服务
创建数据库
使用root用户连接到数据库
mysql -u root -p000000
创建数据库:glance
MariaDB[(none)> CREATE DATABASE glance;
授予对数据库的适当访问权限:glance
MariaDB [(none)> GRANT ALL PRIVILEGES ON glance.* TO glance@'locahost' IDENTIFIED BY "GLANCE_DBPASS";
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO glance@'%' IDENTIFIED BY "GLANCE_DBPASS";
退出数据库
访问客户端
获取凭据以获取访问权限 仅限管理员的 CLI 命令: admin
cd
source admin-openrc
要创建服务凭据,请完成以下步骤
创建用户: glance
openstack user create --domain default --password GLANCE_PASS glance
GLANCE_PASS
User Password:
Repeat User Password:
--password-prompt 该参数要求命令执行后输入两次密码确认
password [password]使用该参数直接在命令中输入设置的密码
将角色添加到用户和项目:
openstack role add --project service --user glance admin
创建服务实体:glance
openstack service create(创建服务) --name(指定服务的名称) glance --description(指定服务的描述信息) "OpenStack lmage" image(指定服务的类型)
openstack service create --name glance --description "OpenStack lmage" image
创建影像服务API端点
openstack endpoint(创建服务端点) create --region(指定端点区域) RegionOne image(指定端点的服务) public(指定端点接口类型) http://controller:9292(指定端点的URL)
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
查看服务目录
openstack catalog list
安装软件包
yum -y install openstack-glance
编辑配置文件
vim /etc/glance/glance-api.conf
搜索要修改的地方
/\[database]
connection=mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
cd /etc/glance/
cp glance-api.conf glance-api.conf.source
cat glance-api.conf.source | grep -Ev "#|^$" > /etc/glance/glance-api.conf
vim glance-api.conf
注意替换密码: GLANCE_DBPASS
配置身份服务访问:[keystone_authtoken][paste_deploy]
[keystone_authtokenj
#-
www_authenticate uri = http://controller:5000 #指定身份认证的URL
auth_url = http://controller:5000 #指定身份认证的URL
memcached_servers = controller:11211 #指定memcached服务器地址
auth_type = password #指定身份认证类型
project_domain_name = Default #指定项目域名称
user_domain_name = Default #指定用户域名称
project_name = service #指定服务使用的项目名称
username = glance #指定身份认证的用户名
password = GLANCE_PASS #指定身份认证的密码
[paste_deploy]
flavor = keystone #指定提供认证的服务器为keystone
注意
注释掉或删除该部分中的任何其他选项。[keystone_authtoken]
在部分中,配置本地文件 系统存储和映像文件的位置:
[glance_store]
stores = file,http #指定存储类型:file:文件;http:基于apr调用的方式,把镜像放到其他存储上
default_store = file #指定默认存储方式
filesystem_store_datadir = /var/lib/glance/images/ #指定镜像存放的本地目录
填充数据库
su -s /bin/sh -c "glance-manage db_sync" glance
验证是否同步成功
mysql -uroot -p000000 -e "show tables from glance"
启动服务并将其配置位跟随兄台你引导启动:
systemctl enable openstack-glance-api.service
systemctl start openstack-glance-api 或 registry
验证
查看是否启动成功
ss -tnl
1、查看glance服务状态
systemctl status openstack-glance-api.service
2、获取cirros镜像文件并创建镜像
yum install -y wget
验证操作
wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img
创建镜像
openstack image create --file cirros-0.4.0-x86_64-disk.img --disk-format qcow2 cirros
查看结果
openstack image list
openstack image show cirros
## 五、部署放置服务Plancement
### 1、placement 简介:
Placement服务是从 S 版本,从nova服务中拆分出来的组件,作用是收集各个node节点的可用资源(比如计算节点,存储资源池,网络资源池等),把node节点的资源统计写入到mysql
Placement服务会被nova scheduler服务进行调用
Placement服务的监听端口是8778
Placement提供了placement-apiWSGI脚本,通过nginx或apache实现python入口代理,用于部署OpenStack的打包解决方案
### 2、创建数据库并授权
连接数据库
mysql -uroot -p000000
创建Placment数据库
MariaDB [(none)]> create database placement;
创建用户并对placement拥有适当权限
MariaDB [(none)]> grant all privileges on placement.* to 'placement'@'%' identified by "PLACEMENT_DBPASS";
验证用户权限
MariaDB [(none)]> show grants for placement@'%';
验证用户连接数据库
mysql -uplacenment -pPLACEMENT_DBPASS
### 3、使用admin用户登录OpenStack
使用admin用户登录OpenStack
source admin-openrc
验证是否导入成功
env | grep OS
### 4、创建服务凭据
先进入这里
. admin-openrc
创建placement用户
openstack user create --domain default --password PLACEMENT_PASS placement
将角色添加到用户和项目
openstack role add --project service --user placement admin
创建placement服务实体
openstack service create --name placement --description "Placement API" placement
创建placement服务API端点
openstack endpoint create --region RegionOne placement admin http://controller:8778
openstack endpoint create --region RegionOne placement public http://controller:8778
openstack endpoint create --region RegionOne placement internal http://controller:8778
### 5、编辑配置文件并同步数据库
安装openstack-placement相关软件包
yum -y insatll openstack-placement-api
编辑placement配置文件
cp /etc/placement/placement.conf /etc/placement/placement.conf.bak
grep -Ev "#|^$" /etc/placement/placement.conf.bak > /etc/placement/placement.conf
vim /etc/placement/placement.conf
[api]
auth_strategy = keystone #启用keystone进行认证
[keystone_authtoken]
auth_url=http://controller:5000
memcached_servers=controller:11211
auth_type=password
project_domain_name=Default
user_domain_name=Default
project_name=service
username=placement
password=PLACEMENT_PASS
[placement_database]
connection=mysql+pymysql://placement:PLACEMENT_DBPASS@controller/placement
同步数据库
su -s /bin/sh -c "placement-manage db sync" placement
验证是否同步
mysql -uroot -p000000 placement -e "show tables"
### 6、修复plancement服务BUG
echo >> /etc/httpd/conf.d/00-placement-api.conf << EOF
><Directory /usr/bin> #此处是bug,必须添加以下的配置来启用对placement api的访问否则在访问apache的api时会报403
> <lfVersion >= 2.4>
> Require all granted
> </lfVersion>
> <lfVersion <2.4>
> Order allow,deny #允许apache访问/usr/bin目录; 否则/usr/bin/placement-api将不允许被访问
> Allow from all
> </lfVersion>
></Directony>
>EOF
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
### 7、重新启动服务
systemctl restart httpd
验证服务是否开启
systemctl status httpd
### 8、验证安装
curl测试访问
curl controller:8778
检查palcement的状态
placement-status upgrade check
### 9、查看端口
[root@controller ~]# ss -tnl #可以将端口显示出来
[root@controller ~]# ss -tl #可以将一些端口服务给显示出来
## 六、部署 计算服务Nova
### 1、Nova简介
Nova是OpenStack最核心的服务之一,负责管理和维护云环境的计算资源,负责虚拟机生命周期的管理
Nova没有虚拟化的能力,靠的是自己的虚拟化驱动,通过驱动和底层虚拟化技术,进行交互和调用操作
Nova需要keystone、glance、neutron等服务支持,可与这些服务集成
Nova架构
nova-api:用来接收客户端请求,并将请求信息放到对应的消息队列中,同时将用户的请求写入到nova数据库中
nova-scheduler:决策一个虚拟机应该调度到某物理节点
1.过滤(filter):过滤出可以创建虚拟机的主机
2.计算权重(weight):根据权重大小进行分配,默认根据资源可用空间进行权重排序
nova-compute:
(1)定时向OpenStack报告计算节点的状态
(2)实现实例生命周期的管理
nova-conductor:数据库操作、复杂流程控制
1. 更高的系统安全性
2. 更好的系统伸缩性
nova-novncproxy:VNC代理,用于显示虚拟机操作终端
Nova的工作原理
Nova api接受用户的Cli命令或horizon创建实例请求,以消息队列的形式将请求发送给Nova scheduler,Nova scheduler通过Nova conductor与数据库进行交互,计算当前节点的负载及使用情况,将虚拟机实例分配到当前节点负载最小且满足启动虚拟机实例的节点上,而最终的实例还是要通过Nova compute来创建,而Nova compute将会与Nova volume、Nova network等等一些组件通过消息队列的方式实现相互的协作,最终完成虚拟机实例的创建.
cell的功能
(1)Messages的路由,即父cell通过nova-cell将Messages路由到子cell的AMQP(消息队列)模块。
(2)分级调度功能,即调度某个instances的时候先要进行cell的选择,目前只支持随机调度,后续会增加基于filter和weighing策略的调度。
(3)资源统计,子cell定时的将自己的资源信息上报给父cell,用来给分级调度策略提供决策数据和基于cell的资源监控。
(4)cell之间的通信(通过rpc远程调用完成)
cell的功能
从架构图看,位于最上层的cell0,也就是api-cell, 而下层的cell1与cell2则是平行对等的关系,他们之间无交互,相互独立,还可以继续增加cell3,cell4 。 而上层的api cell主要包括了
Nova API, Nova Scheduler, Nova Conductor 这3个 Nova 服务 ,同时在 API Cell 中还需要 MQ 提供组件内的通信服务。API Cell 中的 DB 包含两个数据库,分别是 api数据库 和 cell数据库,api 数据库保存了全局数据,比如 flavor 信息。此外 api 数据库中还有一部分表是用于 placement 服务的;而 cell数据库则是用于保存创建失败且还没有确定位于哪个 cell 的虚机数据,比如当虚拟机调度失败时,该虚拟机数据就会被保存到cell数据库中。也就是cell0数据库中。在每个 Cell 中,都有自己独立使用的数据库、消息队列和 Nova Conductor 服务,当前 Cell 中的所有计算节点,全部将数据发送到当前 Cell 中的消息队列,由 Nova Conductor 服务获取后,保存至当前 Cell 的 Nova 数据库中。整个过程都不会涉及到 API Cell 中的消息队列。因此通过对计算节点进行 Cell 划分,可以有效降低 API Cell 中消息队列和数据库的压力。假如一个 MQ 能支持200个计算节点,则在划分 Cell 以后,每个 Cell 都可以支持200个计算节点,有 N 个 Cell 就可以支持 N X 200 个计算节点,因此可以极大提升单个 OpenStack 的集群管理规模。
### 2、Nova-controller服务部署(控制节点所作)
#### 2.1、创建数据库并授权
连接数据库服务器
mysql -uroot -p000000
创建Nova-api、Nova、Nova-cell0数据库
MariaDB [(none)]> create database nova_api;
MariaDB [(none)]> create database nova;
MariaDB [(none)]> create database nova_cell0;
创建用户并对Nova-api、Nova、Nova-cell0拥有适当权利
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> grant all privileges on nova_api.* to 'nova'@'%' identified by "NOVA_DBPASS";
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> grant all privileges on nova.* to 'nova'@'%' identified by "NOVA_DBPASS";
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> grant all privileges on nova_cell0.* to 'nova'@'%' identified by "NOVA_DBPASS";
查看Nova用户权限
MariaDB [(none)]> show grants for 'nova'@'%';
测试使用Nova用户连接数据库服务器
mysql -unova -pNOVA_DBPASS
#### 2.2、使用admin用户登录OpenStack
使用admin用户登录OpenStack
source admin-openrc
验证是否导入成功
env | grep OS
#### 2.3、创建计算服务凭据
创建Nova用户
openstack user create --domain default --password NOVA_PASS nova
将角色添加到用户和项目
openstack role add --project service --user nova admin
创建nova服务实体
openstack service create --name nova --description "OpenStack Compute" compute
创建nova服务API端点
openstack endpoint create --region RegionOne nova admin http://controller:8774/v2.1
openstack endpoint create --region RegionOne nova public http://controller:8774/v2.1
openstack endpoint create --region RegionOne nova internal http://controller:8774/v2.1
#### 2.4、编辑配置文件并同步数据库
安装openstack-nova相关软件包
yum -y install openstack-nova-api openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy
编辑nova配置文件
cp /etc/nova/nova.conf /etc/nova/nova.conf.bak
grep -Ev "#|^$" /etc/nova/nova.conf.bak > /etc/nova/nova.conf
vim /etc/nova/nova.conf
[DEFAULT]
enabled_apis=osapi_compute,metadata #启用计算和元数据API
transport_url=rabbit://openstack:RABBIT_PASS@controller:5672 #配置rabbit连接信息
use_neutron=true #通过neutron的方式获取IP地址
firewall_driver=nova.virt.firewall.NoopFirewallDriver #关闭nova防火墙
[api]
auth_strategy=keystone
[api_database]
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api #配置数据库连接信息
[database]
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova #配置数据库连接信息
[glance]
api_servers=http://controller:9292 #指定镜像服务API端点
[keystone_authtoken]
www_authenticate_uri=http://controller:5000 #指定身份认证的url
auth_url=http://controller:5000 #指定身份认证的url
memcached_server=controller:11211 #指定memcached服务器地址
auth_type=password #指定身份认证类型
project_domain_name=default #指定项目域名称
user_domain_name=default #指定用户域名称
project_name=service #指定服务使用的项目名称
username=nova #指定身份认证的用户名
password=NOVA_PASS #指定身份认证的密码
[oslo_concurrency]
lock_path=/var/lib/nova/tmp #指定锁路径(作用:创建虚拟机时必须一步一步来,无法并行操作,只有上一步操作执行完才能进行下一步)
[vnc]
enabled=true #启用vnc模块,用于连接虚拟机的控制台
server_listen=192.168.100.144 #指定vnc的监听地址
server_proxyclient_address=192.168.100.144 #指定server的客户端地址
[placement]
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = PLACEMENT_PASS
cat /etc/selinux/config
将SELINUX=disable改为SELINUX=disabled
#### 2.5、同步数据库
su -s /bin/sh -c "nova-manage api_db sync" nova #同步nova-api数据库
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova #创建cell0数据库
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova #创建cell1数据库
0 #同步nova数据库
验证nova cell0和cell1是否已正确注册
su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
#### 2.6、启动服务
systemctl enable openstack-nova-api openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy
systemctl start openstack-nova-api openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy
---------------------------------------------------------------------------
查看服务是否开启
curl http://controller:8774
### 3、Nova-compute服务部署(计算节点所作)
#### 3.1、安装openstack-nove相关软件包
yum -y install openstack-nova-compute
#### 3.2、修改nova配置文件
cp /etc/nova/nova.conf /etc/nova/nova.conf.bak
grep -Ev "#|^$" /etc/nova/nova.conf.bak > /etc/nova/nova.conf
vim /etc/nova/nova.conf
[DEFAULT]
enabled_apis=osapi_compute,metadata
transport_url=rabbit://openstack:RABBIT_PASS@controller
use_neutron=true
firewall_driver=nova.virt.firewall.NoopFirewallDriver
[api]
auth_strategy=keystone
[glance]
api_servers=http://controller:9292
[keystone_authtoken]
www_authenticate_uri=http://controller:5000/
auth_url=http://controller:5000/
memcached_servers=controller:11211
auth_type=password
project_domain_name=Default
user_domain_name=Default
project_name=service
username=nova
password=NOVA_PASS
[oslo_concurrency]
lock_path=/var/lib/nova/tmp
[placement]
region_name=RegionOne
project_domain_name=Default
project_name=service
auth_type=password
user_domain_name=Default
auth_url=http://controller:5000/v3
username=placement
password=PLACEMENT_PASS
[vnc]
enabled=true
server_listen=0.0.0.0
server_proxyclient_address=$my_ip
novncproxy_base_url=http://192.168.100.144:6080/vnc_auto.html #比较特殊的地方,需要手动添加IP地址,否则之后搭建成功后,无法通过UI控制台访问到内部虚拟机 #启用并配置远程控制台访问
#### 3.3、确定计算节点是否支持硬件加速
grep -Ec "(vmx|svm)" /proc/cpuinfo
-----------------------------------------------------------------------
0
#-c用于过滤统计
#如果返回值不是0,则计算节点支持硬件加速,则不需要额外操作
#如果返回值是0,则计算节点不支持硬件加速,则使用qemu虚拟化类型
#计算节点不支持KVM虚拟化(添加):
vim /etc/nova/nova.conf
[libvirt]
virt_type=emu
#### 3.4、启动服务
systemctl enable libvirtd openstack-nova-compute
systemctl start libvirtd openstack-nova-compute
### 4、验证安装
#### 4.1、验证计算服务
openstack compute service list
#### 4.2、检查Cells和placement API是否正常运行
nova-status upgrade check
#### 4.3、发现计算主机
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
## 七、部署网络服务Neutron
### 1、Neutron简介
Neutron在OpenStack中实现SDN的功能软件定义网络
OpenStack网络服务提供一个API让用户在云中建立和定义网络连接。该网络服务的项目名称是Neutron, OpenStack网络负责创建和管理虚拟网络基础架构包括网络、交换机、子网和路由器,这些设备由OpenStack计算服务Nova管理。同时,网络服务还提供防火墙和VPN这样的高级服务。可以将网络服务部署到特定主机上。OpenStack网络组件与身份服务、计算服务和仪表板等多个OpenStack组件进行整合
Neutron架构
Neutron-server:对外提供OpenStack网络API,接收请求,并调用Plugin处理请求
resetflu API:接收客户端的http请求
(1) Core API:对外提供管理网络、子网和端口核心资源的resetful API
(2) Extension APl: 对外提供网络管理、路由器、负载均衡、防火墙、安全组等扩展资源的resetful API2Commnon Service:负责对API的请求进行检验认证并授权
Neutron Core:核心处理程序,调用相应的API插件来处理上层API的请求
(1)Core Plugin APl: 定义了Core Plugin的抽象功能集合,Neutron Core通过该API调用相应的Core Plugin
(2) Extension Plugin APl: 定义了Service Plugin的抽象功能集合,Neutron Core通过该AP1调用相应的Service Plugin
Neutron plugin: 处理neutron server的请求,维护网络状态,并调用Agent处理请求
(1) Core Plugin: 维护neutron的netowrk, subnet和port相关资源的信息,与core plugin对应的agent包括linux bridge,open vswitch等
(2) Service Plugin: 提供dhcp、routing,firewall, load balance等服务,也有相应的agent
Neutron provider:提供网络服务的虚拟或物理网络设备,例如Linux Bridge,Open vSwitch等
Neutron agent:处理plugin的请求,调用底层虚拟或物理网络设备实现各种网络功能
ML2 plugin: 可以在不同节点上分别部署inux bridge agent, open vswitch agent, hyper-v agent以及其他第三方agent
(1)type driver:负责维护网络类型的状态,执行验证,创建网络等
1、local: 该网络中的虚拟机实例只能与位于同一节点上同一网络的虚拟机实例通信
2、flat: 该网络能与位于同一网络的虚拟机实例进行通信(扁平网络结构,即局域网结构且不会使用vlan)
3、vlan:该网络能与位于同一vlan中的实例进行通信,不同vlan只能通过router通信
4、xvlan:扩展vlan (A、使用stp防止环路,B、vxlan的隧道技术)
5、gre:(通用路由封装)是用一种网络层协议去封装另一种网络层协议的隧道技术(2) mechanism driver: 负责获取由type driver维护的网络状态
1、Agent-based: 包括linux bridge.open vswitch等
2、Controller-based: 包括OpenDaylight,VMWare NSX等
3、基于物理交换机:包括 Cisco Nexus,Arista,Mellanox 等3@
Service Plugin/agent: 提供更丰富的扩展功能,包括dhcp、路由,load balance,firewall等
1、dhcp: dhcp agent通过dnsmasg为实例提供dhcp服务
2、Routing: I3 agent可以为项目创建router,提供子网之间的路由功能(路由功能默认通过iptables实现)
3、Firewall:I3agent可以在router上配置防火墙策略,提供网络安全防护
4、Load Balance: lbaas agent通过调用HAProxy为项目中的多个实例提供load balance服务
Neutron基本概念
(1)network: 是一个隔离的二层广播域。neutron支持多种类型的network,包括local, flat, VLAN,VxLAN和GRE
(2)subnet: 是一个Pv4或者IPV6地址段。实例的IP地址从subnet中分配。每个subnet需要定义IP地址的范围和掩码
(3)pot:可以看做虚拟交换机上的一个端口。port上定义了MAC地址和IP地址,当实例的虚拟网卡连接到端口时port会把ip地址和mac地址分配给虚拟网卡。
### 2、Neutron-controller服务部署(控制节点)
#### 2.1、创建数据库并授权
连接数据库服务器
mysql -uroot -p000000
创建neutron数据库
MariaDB [(none)]> create database neutron;
创建用户并对neutron拥有适当权限
MariaDB [(none)]> grant all privileges on neutron.* to 'neutron'@'%' identified by "NEUTRON_DBPASS";
#### 2.2、使用admin用户登录OpenStack
使用admin用户登录OpenStack
source keystonerc_admin
验证是否导入成功
env | grep OS
#### 2.3、创建网络服务凭据
创建neutron用户
openstack user create--domain default --password NEUTRON_PASS neutron
将角色添加到用户和项目
openstack role add --project service --user neutron admin
创建neutron服务实体
openstack service create --name neutron --description "OpenStack NetWorking" network
创建neutron服务API端点
openstack endpoint create --region RegionOne neutron admin http://controller:9696
openstack endpoint create --region RegionOne neutron public http://controller:9696
openstack endpoint create --region RegionOne neutron internal http://controller:9696
#### 2.4、配置提供商网络
安装openstack-neutron相关软件包
yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge entables
编辑neutron配置文件
cp /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak
grep -Ev "#|^$" /etc/neutron/neutron.conf.bak > /etc/neutron/neutron.conf
vim /etc/neutron/neutron.conf
[DEFAULT]
core_plugin=ml2 #启动二层网络插件
service_plugins= #不启动其他网络插件
transport_url=rabbit://openstack:RABBIT_PASS@controller #配置消息队列连接
auth_strategy=keystone #当网络接口发生时,通知计算节点
notify_nova_on_port_status_changes=true #当端口数据发生变化时,通知计算节点
notify_nova_on_port_data_changes=true #当端口数据发生变化时,通知计算节点
[database]
connection=mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron #配置数据库连接
[keystone_authtoken] #配置keystone认证信息
www_auth_uri=http://controller:5000
auth_url=http://controller:5000
memcached_server=controller:11211
auth_type=password
project=domain_name=default
user_dommain_name=default
project_name=service
username=neutron
password=NEUTRON_PASS
[oslo_concurrency]
lock_path=/var/lib/neutron/tmp #指定锁路径
[nova] #指定neutron服务与nova服务进行交互的信息
auth_url=http://controller:5000
auth_type=password
region_name=RegionOne
project_domain_name=default
user_domain_name=default
project_name=service
username=nova
password=NOVA_PASS
编辑ML2配置文件
cp /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugins/ml2/ml2_conf.ini.bak
grep -Ev "#|^$" /etc/neutron/plugins/ml2/ml2_conf.ini.bak > /etc/neutron/plugins/ml2/ml2_conf.ini
vim /etc/neutron/plugins/ml2/ml2_conf.ini
[ml2]
type_drivers=flat,vlan #指定支持的驱动类型:桥接,vlan
tenant_network_types= #不启动租户的网络类型
mechanism_dirvers=linuxbridge #启用linux桥接机制
extension_drivers=port_security #启用端口安全扩展驱动程序
[ml2_type_flat] #指定公共虚拟网络为flat
flat_networks=provider #指定flat网络名为provider
[securitygroup]
enable_ipset=true #启用ipset增加安全组规则的效率
编辑linuxbridge配置文件
cp /etc/neutron/ml2/linuxbridge_agent.ini /etc/neutron/ml2/linuxbridge_agent.ini.bak
grep -Ev "#|^$" /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak > /etc/neutron/plugins/ml2/linuxbridge_agent.ini
vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge]
physical_interface_mappings=provider:eth0 #指定虚拟网络映射到物理网络接口
[vxlan]
enabled_vxlan=false #禁用VXLAN覆盖网络
[securitygroup]
enable_securlity_group=true #启用安全组
firewall_driver=neutron.agent.linux.iptables_firewall.lptableesFirewallDriver #指定安全组驱动文件
修改内核参数
echo 'net.bridge.bridge-nf-call-iptables=1' >> /etc/sysctl.conf #二层的网桥在转发包时会被iptables的forward规则过滤,使得虚拟机得数据能通过物理机出去
echo 'net.bridge.bridge-nf-call-ip6tables=1' >> /etc/sysctl.conf
modprobe br_netfilter #向内核加入参数
sysctl -p #重新加载内核配置
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
编辑dhcp配置文件
cp /etc/neutron/dhcp_agent.ini /etc/neutron/dhcp_agent.ini.bak
grep -Ev "#|^$" /etc/neutron/dhcp_agent.ini.bak > /etc/neutron/dhcp_agent.ini
vim /etc/neutron/dhcp_agent.ini
[DEFAULT]
interface_driver=linuxbridge #指定linux网桥接口驱动程序
dhcp_driver=neutron.agent.linux.dhcp.Dnsmasq #指定dhcp驱动文件
enable_isolated_metadata=true #启用隔离得元数据
#### 2.5、配置元数据代理
配置元数据代理
cp /etc/neutron/metadata_agent.ini /etc/neutron/metadata_agent.ini.bak
grep -Ev "#|^$" /etc/neutron/metadata_agent.ini.bak > /etc/neutron/metadata_agen.ini
vim /etc/neutron/metadata_agent.ini
[DEFAULT]
nova_metadata_host=controller #指定元数据代理服务器
metadata_proxy_shared_secret=METADATA_SECRET #指定元数据共享秘密
#### 2.6、将计算服务配置为使用网络服务
vim /etc/nova/nova.conf
[neutron] #指定nova服务与neutron服务进行交互得信息
auth_url=http://controller:5000
auth_type=password
region_name=RegionOne
project_domain_name=default
user_domain_name=default
project_name_service
username=neutron
password=NEUTRON_PASS
service_metadata_proxy=true
metadata_proxy_shared_secret=METADATA_SECRET
#### 2.7、完成安装:
创建ML2插件文件符号连接
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
重启计算服务
systemctl restart openstack-nova-api
启动neutron服务
systemctl enable neutron-server neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agent
systemctl start neutron-server neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agent
验证端口是否起来
ss -tnl
### 3、Neutron-compute服务部署
#### 3.1、安装openstack-neutron相关软件包
yum -y -install -y openstack-neutron-linuxbridge ebtables ipset
#### 3.2、编辑neutron配置文件
cp /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak
grep -Ev "#|^$" /etc/neutron/neutron.conf.bak > /etc/neutron/neutron.conf
vim /etc/neutron/neutron.conf
[DEFAULT]
transport_url=rabbit://openstack:RABBIT_PASS@controller
auth_strategy=keystone
[keystone_authtoken]
www_authenticate_uri=http://controller:5000
auth_url=http://controller:5000
memcached_servers=controller:11211
auth_type=password
project_domain_name=default
user_domain_name=default
project_name=service
username=neutron
password=NEUTRON_PASS
[oslo_concurrency]
lock_path= /var/lib/neutron/tmp
#### 3.3、配置提供商网络
编辑linuxbridge配置文件
cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak
grep -Ev "#|^$" /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak > /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge]
physical_interface_mappings=provider.eht0
[vxlan]
enable_vxlan=false
[securitygroup]
enable_security_group=true
firewall_driver=neutron.agent.linux.iptables_firewall.lptablesFirewallDriver
修改内核参数
echo "net.bridge.bridge-nf-call-iptables=1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-ip6tables=1" >> /etc/sysctl.conf
modprobe br_netfilter
sysctl -p
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
#### 3.4、将计算服务配置为使用网络服务
vim /etc/nova/nova.conf
[neutron]
auth_url=http://controller:5000
auth_type=password
project_domain_name=default
user_domain_name=default
region_name=RegionOne
project_name=service
username=neutron
password=NEUTRON_PASS
#### 3.5、完成安装
重启计算服务
systemctl restart openstack-nova-compute
启动neutron网桥代理服务
systemctl enable neutron-linuxbridge-agent
systemctl start neutron-linuxbridge-agent
#### 3.6、验证安装
查看API扩展列表
openstack extension list --network
验证组件是否安装好
openstack network agent list
## 八、部署存储服务Cinder
### 1、Cinder简历
操作系统得到存储空间一般有两种方式:
① 块存储:挂接裸硬盘,分区,格式化,创建文件系统;或者直接使用裸硬盘存储数据
② 文件系统存储:通过nfs等方式挂载远程的文件系统
在块存储中,裸硬盘通常被称为volume(卷)。
cinder是OpenStack平台中负责提供块存储服务的组件,它的任务就是管理volume从创建到删除的整个生命周期。
#### 1.1、Cinder架构
Cinder-api:接收API 请求,调用cinder-volume执行操作
(1)检查客户端传入的参数是否有效
(2)调用cinder其他子组件处理客户端请求
(3)将其他子组件处理的结果返回客户端
Cinder-scheduler:在多个存储节点根据调度算法和权重值上选出一个用于创建volume的最佳节点
Cinder-volume:负责具体的 volume 请求处理,由不同后端存储提供 volume 存储空间
(1)通过 Driver 架构支持多种 Volume Provider
(2)定期向 OpenStack 报告计算节点的状态。cinder-volume 会定期向 Cinder 报告存储节点的空闲容量来做筛选启动volume
(3)实现 volume 生命周期管理。Cinder 对 volume 的生命周期的管理最终都是通过 cinder-volume 完成的,包括 volume 的 create、extend、attach、snapshot、delete 等
Cinder-provider:数据存储设备,为volume提供物理存储空间。
Cinder-backup:用于将volume备份到其他存储系统上,目前支持的备份存储系统有swift、ceph、IBM Tivoli storage manager(TSM)、glusterFS等,默认是swift
### 2、cinder -controller服务部署
#### 2.1、创建数据库并授权
连接数据库服务器
mysql -uroot -p
创建cinder数据库
create database cinder;
创建用户并对cinder拥有适当权限
grant all privileges on cinder.* to 'cinder'@'%' identified by "CINDER_DBPASS";
查看cinder用户权限
show grants for cinder@'%'
验证cinder用户登陆
mysql -ucinder -pCINDER_DBPASS
#### 2.2、使用admin用户登录OpenStack
使用admin用户登录OpenStack
source keystonerc_admin
验证是否导入成功
env | grep OS
#### 2.3、创建块存储服务凭据
创建cinder用户
openstack user create --domain default --password CINDER_PASS cinder
将角色添加到用户和项目
openstack role add --project service --user cinder admin
创建cinder服务实体
openstack service create --name volumev2 --descriptlon "OpenStack Block Storage" volumev2
openstack service create --name volumev3 --description "OpenStack Block Storage" volumev3
创建cinder服务API端点
openstack endpoint create --region RegionOne volumev2 admin http://controller:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne volumev2 public http://controller:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne volumev2 intemal http://controller:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 admin http://controller:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 public http://controller:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 internal http://controller:8776/v3/%\(projevt_id\)s
#### 2.4、编辑配置文件并同步数据库
安装openstack-cinder相关软件包
yum -y install openstack-cinder
编辑cinder配置文件
cp /etc/cinder/cinder.conf /etc/cinder/cinder.conf.bak
grep -Ev "#|^$" /etc/cinder/cinder.conf.bak > /etc/cinder/cinder.conf
vim /etc/cinder/cinder.conf
[DEFAULT]
transport=rabbit://openstack:RABBIT_PASS@controller
auth_strategy=keystone
[database]
connection=mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
[keystone_authtoken]
WWW_authenticate_uri=http://controller:5000
auth_url=http://controller:5000
memcached_servers=controller:11211
auth_type=password
project_domain_name=default
user_domain_name=default
project_name=service
username=cinder
password=CINDER_PASS
[oslo_concurrency]
lock_path=/var/lib/cinder/tmp
同步数据库
su -s /binsh -c "cinder -manage db sync" cinder
验证是否同步
mysql cinder -e "show tables"
编辑nova配置文件
vim /etc/nova/nova.conf
[cinder]
os_regon_name=RegionOne #指定cinder服务所在区域名称
#### 2.5、完成安装
重新启动计算API服务
systemctl restart openstack-nova-api
启动cinder服务
systemctl enable openstack-cinder-api openstack-cinder-scheduler
systemctl start openstack-cinder-api openstack-cinder-scheduler
验证端口是否起来(8776)
ss -tnl
### 3、cinder-compute服务部署
#### 3.1、新建一块空白硬盘
查看硬盘是否添加成功
lsblk
#### 3.2、逻辑卷管理
安装LVM软件包
yum -y install lvm2 device-mapper-persistent-data
启动服务
systemctl start lvm2-lvmetad
systemctl enable lvm2-lvmetad
创建LVM物理卷
pvcreate /dev/sdb
创建LVM卷组
vgcreate cinder-volumes /dev/sdb
验证是否创建成功
vgdisplay cinder-volumes
编辑配置文件
vim /etc/lvm/lvm.conf
141 filter=["a/sdb/","r/.*/"] 允许lvm服务扫描sdb设备,拒绝其他设备(a:表示允许,r:表示拒绝)
#### 3.3、安装openstack-cinder相关软件包
安装openstack-cinder相关软件包
yum -y install openstack-cinder targetcli python-keystone
#### 3.4、编辑cinder配置文件
编辑cinder配置文件
cp /etc/cinder/cinder.conf /etc/cinder/cinder.conf.bak
grep -Ev "#|^$" /etc/cinder/cinder.conf.bak > /etc/cinder/cinder.conf
vim /etc/cinder/cinder.conf
[DEFAULT]
transport_url=rabbit://openstack:RABBIT_PASS@controller
auth_strategy=keystone
enabled_backends=lvm #开启后端:指定lvm,防止访问其他卷的数据
glance_api_servers=http:controller:9292 #指定镜像服务的API端点
[database]
connection=mysql+pymysql://cinder:CINDET_DBPASS@controller/cinder
[keystone_authtoken]
WWW_authenticate_uri=http://controller:5000
auth_url=http://controller:5000
memcached_servers=controller:11211
auth_type=password
project_domain_name=default
user_domain_name=default
project_name=service
username=cinder
password=CINDER_PASS
[oslo_concurrency]
lock_path=/var/lib/cinder/tmp
[lvm]
volume_driver=cinder.volume.drivers.lvm.LVMColumeDriver #指定lvm驱动程序
volume_group=cinder-volumes #指定用于存储cinder卷的卷组
target_protocol=iscsi #指定pv卷使用iscsi协议
target_helper=lioadm #指定lioadm帮助程序
#### 3.5、启动服务
systemctl enable openstack-cinder-volume target
systemctl start openstack-cinder-volume target
### 4、验证安装
openstack volume service list