openstack安装指南

OpenStack安装指南

配置时间同步服务(NTP

Controller node

  1. 安装并配置chrony

[root@controller ~]# yum install chrony -y

[root@controller ~]# sed -i '26a allow 10.0.0.0/24' /etc/chrony.conf

  1. 设置开机自启并启动服务

[root@controller ~]# systemctl enable chronyd.service

[root@controller ~]# systemctl start chronyd.service

Other nodes

  1. 安装并配置chrony

[root@compute ~]# sed -i 's/^server/#server/' /etc/chrony.conf

[root@compute ~]# sed -i '6a server controller' /etc/chrony.conf

  1. 设置开机自启并启动服务

[root@compute ~]# systemctl enable chronyd.service

[root@compute ~]# systemctl start chronyd.service

  1. 安装并配置chrony

[root@storage ~]# sed -i 's/^server/#server/' /etc/chrony.conf

[root@storage ~]# sed -i '6a server controller' /etc/chrony.conf

  1. 设置开机自启并启动服务

[root@storage ~]# systemctl enable chronyd.service

[root@storage ~]# systemctl start chronyd.service

  1. 验证操作:

[root@compute ~]# date  -s  '2001-09-11 11:30:00'

[root@compute ~]# systemctl  restart  chronyd

[root@compute ~]# timedatectl    #重启后需要等待几分钟方可同步成功

 

 

 

安装openstack及数据库(所有节点)

 

Controller node

 

安装openstack存储库、OpenStack客户端、selinux扩展包

 

[root@controller ~]# yum install python-openstackclient openstack-selinux \

 

>  mariadb mariadb-server python2-PyMySQL -y

 

[root@controller ~]# tee /etc/my.cnf.d/openstack.cnf <<-'EOF'

 

> [mysqld]

 

> bind-address = 10.0.0.10 

 

> default-storage-engine = innodb

 

> innodb_file_per_table = on

 

> max_connections = 4096

 

> collation-server = utf8_general_ci

 

> character-set-server = utf8

 

> EOF

 

[root@controller ~]# systemctl start mariadb.service

 

[root@controller ~]# systemctl enable mariadb.service

 

数据库初始化:

 

[root@controller ~]# mysql_secure_installation

 

Enter current password for root (enter for none):   #回车

 

Set root password? [Y/n] y     #密码

 

Remove anonymous users? [Y/n] y    #移除匿名用户

 

Disallow root login remotely? [Y/n] n    #不关闭root远程登录

 

Remove test database and access to it? [Y/n] y  #删除测试数据库

 

Reload privilege tables now? [Y/n] y

 

Thanks for using MariaDB!

 

  1. 安装memcache缓存服务器,并修改配置文件

 

[root@controller ~]# yum -y install memcached python-memcached

 

[root@controller ~]# sed -i 's/::1/::1,10.0.0.10/' /etc/sysconfig/memcached

 

[root@controller ~]# systemctl start memcached.service

 

[root@controller ~]# systemctl enable memcached.service

 

Other nodes

 

[root@compute ~]# yum install centos-release-openstack-ocata -y

 

[root@compute ~]# yum upgrade

 

[root@storage ~]# yum install centos-release-openstack-ocata -y

 

[root@storage ~]# yum upgrade

 

 

 

安装rabbitmq消息队列

 

  1. yum -y install erlang rabbitmq-server.noarch(在controllercomputestorage上都安装)

 

安装服务并设置开机自启动:三台都要做原理相同

 

[root@controller ~]# yum -y install erlang rabbitmq-server.noarch

 

[root@controller ~]# systemctl start rabbitmq-server.service

 

[root@controller ~]# systemctl enable rabbitmq-server.service

 

  1. 查看服务端口是否开启

 

[root@controller ~]# ss -ntulp |grep 5672

 

tcp   LISTEN 0  128  *:25672   *:*    users:(("beam.smp",pid=1046,fd=8))

 

tcp   LISTEN 0  128  [::]:5672  [::]:*   users:(("beam.smp",pid=1046,fd=16))

 

  1. 查看集群状态

 

[root@controller ~]# rabbitmqctl cluster_status

 

  1. 编辑rabbitmq变量文件

 

[root@controller ~]# tee /etc/rabbitmq/rabbitmq-env.conf <<-'EOF'

 

> RABBITMQ_NODE_PORT=5672

 

> ulimit -S -n 4096

 

> RABBITMQ_SERVER_ERL_ARGS="+K true +A30 +P 1048576 -kernel inet_default_connect_options [{nodelay,true},{raw,6,18,<<5000:64/native>>}] -kernel inet_default_listen_options [{raw,6,18,<<5000:64/native>>}]"

 

> RABBITMQ_NODE_IP_ADDRESS=10.0.0.10

 

> EOF

 

  1. 将配置文件发送到computestorage节点,并将IP地址改为对应主机的IP  

 

[root@controller ~]# scp /etc/rabbitmq/rabbitmq-env.conf root@compute:/etc/rabbitmq/rabbitmq-env.conf

 

rabbitmq-env.conf          100%  285   117.2KB/s   00:00    

 

[root@controller ~]# scp /etc/rabbitmq/rabbitmq-env.conf root@storage:/etc/rabbitmq/rabbitmq-env.conf

 

rabbitmq-env.conf          100%  285    82.4KB/s   00:00

 

[root@compute ~]# sed -i 's/0.10/0.20/' /etc/rabbitmq/rabbitmq-env.conf

 

[root@storage ~]# sed -i 's/0.10/0.30/' /etc/rabbitmq/rabbitmq-env.conf

 

  1. 三个节点都开启rabbitmqweb管理页面

 

[root@controller ~]# rabbitmq-plugins enable rabbitmq_management

 

查看是否开启:

 

[root@controller ~]# /usr/lib/rabbitmq/bin/rabbitmq-plugins list

 

[E] rabbitmq_management               3.3.5 #中括号内有E表示开启

 

systemctl restart rabbitmq-server.service

 

systemctl status rabbitmq-server.service

 

  1. 修改guest密码为admin(默认用户为:guest 密码为:guest)

 

[root@controller ~]# rabbitmqctl change_password guest admin

 

Changing password for user "guest" ...

 

...done.

 

  1. 添加一个openstack的用户,设密码为openstack。并设置权限和成为管理员

 

[root@controller ~]# rabbitmqctl add_user openstack openstack

 

Creating user "openstack" ...

 

...done.

 

[root@controller ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"

 

Setting permissions for user "openstack" in vhost "/" ...

 

...done.

 

[root@controller ~]# rabbitmqctl set_user_tags openstack administrator

 

Setting tags for user "openstack" to [administrator] ...

 

...done

 

  1. controller发送erlang.cookie到其他节点配置集群

 

[root@controller ~]# scp /var/lib/rabbitmq/.erlang.cookie compute:/var/lib/rabbitmq/.erlang.cookie

 

.erlang.cookie           100%   20     7.7KB/s   00:00    

 

[root@controller ~]# scp /var/lib/rabbitmq/.erlang.cookie storage:/var/lib/rabbitmq/.erlang.cookie

 

.erlang.cookie           100%   20     5.1KB/s   00:00

 

  1.  computestorage停止应用,并以ram的方式加入controller节点,之后重启应用

 

[root@compute ~]# systemctl restart rabbitmq-server.service

 

[root@compute ~]# rabbitmqctl stop_app

 

Stopping node rabbit@controller ...

 

...done.

 

[root@compute ~]# rabbitmqctl join_cluster --ram rabbit@controller

 

Clustering node rabbit@controller with rabbit@controller ...

 

...done.

 

[root@compute ~]# rabbitmqctl start_app

 

Starting node rabbit@controller ...

 

...done.

 

  1.  controller上检查集群状态

 

[root@controller ~]# rabbitmqctl cluster_status

 

Cluster status of node rabbit@controller ...

 

[{nodes,[{disc,[rabbit@controller]},{ram,[rabbit@storage,rabbit@compute]}]},

 

 {running_nodes,[rabbit@compute,rabbit@storage,rabbit@controller]},

 

 {cluster_name,<<"rabbit@controller">>},

 

 {partitions,[]}]

 

至此rabbitmq集群搭建结束,如果有问题检查上面的步骤是否有遗漏

 

Web访问http://10.0.0.10:15672/

 

 

 

---------------------------------------------------------------------------------------------------------------------------------

至此消息队列部署完毕!

 

安装keystone身份认证服务

  1. 创建keystone数据库

[root@controller ~]# mysql -uroot -p123123 -e "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';"

  1. 安装和配置的部件:

[root@controller ~]# yum -y install openstack-keystone httpd mod_wsgi

[root@controller ~]# sed -i '2790a provider = fernet' /etc/keystone/keystone.conf

[root@controller ~]# sed -i '686a connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone' /etc/keystone/keystone.conf

  1. 同步数据库

[root@controller ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone

[root@controller ~]# mysql -uroot -p123123 -e "use keystone; show tables;"

  1. 初始化Fernet密钥存储库:

[root@controller ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

[root@controller ~]# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

  1. 修改引导用户密码为admin

[root@controller ~]# keystone-manage bootstrap --bootstrap-password admin \

>   --bootstrap-admin-url http://controller:35357/v3/ \    #管理网端点服务地址

>   --bootstrap-internal-url http://controller:5000/v3/ \    #内部网端点服务地址

>   --bootstrap-public-url http://controller:5000/v3/ \     #公共网端点服务地址

>   --bootstrap-region-id RegionOne                #工作域

  1. 修改http服务配置文件,创建keystone的链接文件

[root@controller ~]# sed -i '95a ServerName controller' /etc/httpd/conf/httpd.conf

[root@controller ~]# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

[root@controller ~]# systemctl start httpd.service

[root@controller ~]# systemctl enable httpd.service

  1. 声明环境变量

[root@controller ~]# tee /root/openrc <<-'EOF'

> export OS_USERNAME=admin

> export OS_PASSWORD=admin

> export OS_PROJECT_NAME=admin

> export OS_USER_DOMAIN_NAME=Default

> export OS_PROJECT_DOMAIN_NAME=Default

> export OS_AUTH_URL=http://controller:35357/v3

> export OS_IDENTITY_API_VERSION=3

> export OS_PROJECT_NAME=demo

> export OS_USERNAME=demo

> export OS_PASSWORD=demo

> export OS_AUTH_URL=http://controller:5000/v3

> export OS_IMAGE_API_VERSION=2

EOF

[root@controller ~]# source /root/openrc

[root@controller ~]# openstack user list       #列出用户说明上面操作没问题

 

 

 

 

 

 

 

 

 

  1. 创建项目

[root@controller ~]# openstack project create --domain default \

>   --description "Service Project" service

 

 

 

[root@controller ~]# openstack project create --domain default \

> --description "Demo Project" demo

 

 

 [root@controller ~]# openstack project list

  1. 创建用户:

[root@controller ~]# openstack user create --domain default \

>   --password-prompt demo

User Password:

Repeat User Password:

 

 

  1. 创建角色,并设置demo项目中的用户demo为角色user

[root@controller ~]# openstack role create user

 

 

 

[root@controller ~]# openstack role add --project demo --user demo user

---------------------------------------------------------------------------------------------------------------------------------

至此,keystone部署完毕!

安装glance镜像服务

 

  1. 建立glance数据库,设置密码并进行登录授权

[root@controller ~]# mysql -uroot -p123123 -e "create database glance;

> grant all privileges on glance.* to 'glance'@'localhost' identified by 'GLANCE_DBPASS';"

[root@controller ~]# mysql -uroot -p123123 -e "grant all privileges on glance.* to 'glance'@'%' \

> identified by 'GLANCE_DBPASS';"

  1. 创建glance用户(执行命令提示没有密码,则需要sourec openrc

[root@controller ~]# openstack user create --domain default --password=glance glance

 

  1. 设置glance角色为管理员

[root@controller ~]# openstack role add --project service --user glance admin

  1. 创建glance镜像服务

[root@controller ~]# openstack service create --name glance \

>   --description "OpenStack Image" image

 

 

 [root@controller ~]# openstack service list

  1. 设置服务端点(管理、内部、公共)

[root@controller ~]# openstack endpoint create --region RegionOne \

>   image public http://controller:9292

[root@controller ~]# openstack endpoint create --region RegionOne \

>   image internal http://controller:9292

[root@controller ~]# openstack endpoint create --region RegionOne \

>   image admin http://controller:9292

 

 

 [root@controller ~]# openstack endpoint list |grep glance

 

 

 

  1. 安装openstack-glance

[root@controller ~]# yum -y install openstack-glance

  1. 修改glanc-api.conf配置文件

[root@controller ~]# cp /etc/glance/glance-api.conf{,.bak}

[root@controller ~]# echo "[DEFAULT]

> [cors]

> [cors.subdomain]

> [database]

> connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance

> [glance_store]

> stores = file,http

> default_store = file

> filesystem_store_datadir = /var/lib/glance/images/

> [image_format]

> [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 = glance

> [matchmaker_redis]

> [oslo_concurrency]

> [oslo_messaging_amqp]

> [oslo_messaging_kafka]

> [oslo_messaging_notifications]

> [oslo_messaging_rabbit]

> [oslo_messaging_zmq]

> [oslo_middleware]

> [oslo_policy]

> [paste_deploy]

> flavor = keystone

> [profiler]

> [store_type_location_strategy]

> [task]

> [taskflow_executor]" > /etc/glance/glance-api.conf

  1. 修改glance-registry.conf配置文件

[root@controller ~]# cp /etc/glance/glance-registry.conf{,.bak}

[root@controller ~]# echo "[DEFAULT]

> [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 = glance

> [matchmaker_redis]

> [oslo_messaging_amqp]

> [oslo_messaging_kafka]

> [oslo_messaging_notifications]

> [oslo_messaging_rabbit]

> [oslo_messaging_zmq]

> [oslo_policy]

> [paste_deploy]

> flavor = keystone

 

> [profiler]" > /etc/glance/glance-registry.conf

  1. 同步数据库

[root@controller ~]# su -s /bin/sh -c "glance-manage db_sync" glance

[root@controller ~]# mysql -uroot -p123123 -e "use glance;show tables;"

  1. 启动服务,并设置开机自启

[root@controller ~]# systemctl enable openstack-glance-api.service \

>   openstack-glance-registry.service

[root@controller ~]# systemctl start openstack-glance-api.service \

>   openstack-glance-registry.service

  1. 下载测试镜像,此镜像文件自行下载,然后上传测试镜像

[root@controller images]# openstack image create "cirros" \

>   --file /var/lib/glance/images/cirros-0.3.4-x86_64-disk.img \

>   --disk-format qcow2 --container-format bare \

>   --public

 

 

 

---------------------------------------------------------------------------------------------------------------------------------

至此,glance镜像服务部署完毕!

部署nova计算服务

  1. 创建nova的数据库nova_apinovanova_cell0,并对用户授权

[root@controller ~]# mysql -uroot -p123123 -e "CREATE DATABASE nova_api;

> CREATE DATABASE nova;CREATE DATABASE nova_cell0;"

[root@controller ~]# mysql -uroot -p123123 -e "

> 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';

> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \

>   IDENTIFIED BY 'NOVA_DBPASS';

> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \

>   IDENTIFIED BY 'NOVA_DBPASS';"

  1. 声明环境变量,并且创建nova用户

[root@controller ~]# source /root/openrc

[root@controller ~]# openstack user create --domain default --password=nova nova

  1. nova用户添加为service项目中的admin角色

[root@controller ~]# openstack role add --project service --user nova admin

  1. 创建一个nova的服务

[root@controller ~]# openstack service create --name nova \

>   --description "OpenStack Compute" compute

  1. nova服务创建网络服务端点

[root@controller ~]# openstack endpoint create --region RegionOne \

>   compute public http://controller:8774/v2.1

[root@controller ~]# openstack endpoint create --region RegionOne \

>   compute internal http://controller:8774/v2.1

[root@controller ~]# openstack endpoint create --region RegionOne \

>   compute admin http://controller:8774/v2.1

查看已经部署的网络节点:

[root@controller ~]# openstack catalog list

  1. 创建用户placement用于服务统计和追踪

[root@controller ~]# openstack user create --domain default --password=placement placement

  1. 将用户placement添加为service项目中的admin角色

[root@controller ~]# openstack role add --project service --user placement admin

  1. 创建placement服务

[root@controller ~]# openstack service create --name placement --description "Placement API" placement

  1. placement创建网络服务端点,(公共、内部、私有)

[root@controller ~]# openstack endpoint create --region RegionOne placement public http://controller:8778

 

 

 [root@controller ~]# openstack endpoint create --region RegionOne placement internal http://controller:8778

 

 

 [root@controller ~]# openstack endpoint create --region RegionOne placement admin http://controller:8778

 

 

 [root@controller ~]# openstack catalog list     #查看部署好的服务和服务端点

 

 

 

  1. 安装nova需要的软件包( 接口、数据库、控制台、web界面控制台登录、调度服务、 )

[root@controller ~]# yum -y install openstack-nova-api openstack-nova-conductor   openstack-nova-console openstack-nova-novncproxy   openstack-nova-scheduler openstack-nova-placement-api

  1. 修改配置文件/etc/nova/nova.conf

[root@controller ~]# cp /etc/nova/nova.conf{,.bak}

[root@controller ~]# tee /etc/nova/nova.conf <<-'EOF' 

> [DEFAULT]

> my_ip = 10.0.0.10

> use_neutron = True

> firewall_driver = nova.virt.firewall.NoopFirewallDriver

> enabled_apis = osapi_compute,metadata

> transport_url = rabbit://openstack:openstack@controller

> [api]

> auth_strategy = keystone

> [api_database]

> connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api

> [barbican]

> [cache]

> [cells]

> [cinder]

> [cloudpipe]

> [conductor]

> [console]

> [consoleauth]

> [cors]

> [cors.subdomain]

> [crypto]

> [database]

> connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova

> [ephemeral_storage_encryption]

> [filter_scheduler]

> [glance]

> api_servers = http://controller:9292

> [guestfs]

> [healthcheck]

> [hyperv]

> [image_file_url]

> [ironic]

> [key_manager]

> [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 = nova

> [libvirt]

> [matchmaker_redis]

> [metrics]

> [mks]

> [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 = neutron

>#service_metadata_proxy = true

>#metadata_proxy_shared_secret = METADATA_SECRET

> [notifications]

> [osapi_v21]

> [oslo_concurrency]

> lock_path = /var/lib/nova/tmp

> [oslo_messaging_amqp]

> [oslo_messaging_kafka]

> [oslo_messaging_notifications]

> [oslo_messaging_rabbit]

> [oslo_messaging_zmq]

> [oslo_middleware]

> [oslo_policy]

> [pci]

> [placement]

> os_region_name = RegionOne

> project_domain_name = Default

> project_name = service

> auth_type = password

> user_domain_name = Default

> auth_url = http://controller:35357/v3

> username = placement

> password = placement

> [quota]

> [rdp]

> [remote_debug]

> [scheduler]

> [serial_console]

> [service_user]

> [spice]

> [ssl]

> [trusted_computing]

> [upgrade_levels]

> [vendordata_dynamic_auth]

> [vmware]

> [vnc]

> enabled = true

> vncserver_listen = $my_ip

> vncserver_proxyclient_address = $my_ip

> [workarounds]

> [wsgi]

> [xenserver]

> [xvp]

> EOF

  1. 修改配置文件/etc/httpd/conf.d/00-nova-placement-api.conf

[root@controller ~]# cp /etc/httpd/conf.d/00-nova-placement-api.conf{,.bak}

[root@controller ~]# echo "

><Directory /usr/bin>

>    <IfVersion >= 2.4>

>       Require all granted

>    </IfVersion>

>    <IfVersion < 2.4>

>       Order allow,deny

>       Allow from all

>    </IfVersion>

> </Directory>" >> /etc/httpd/conf.d/00-nova-placement-api.conf

  1. 重启httpd服务,同步nova-api数据库

[root@controller ~]# systemctl restart httpd

[root@controller ~]# su -s /bin/sh -c"nova-manage api_db sync" nova

  1. 注册cell0数据库,创建cell1认证密钥,同步nova数据库,查看cell版本

[root@controller ~]# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova

[root@controller ~]# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova

f0e6774a-eb28-4ee0-a012-82407dac5429

[root@controller ~]# su -s /bin/sh -c "nova-manage db sync" nova

 

[root@controller ~]# nova-manage cell_v2 list_cells

 

 

 

  1. 启动nova的相关服务,并设置为开机自启

[root@controller ~]# systemctl start openstack-nova-api.service \

>   openstack-nova-consoleauth.service openstack-nova-scheduler.service \

>   openstack-nova-conductor.service openstack-nova-novncproxy.service

[root@controller ~]# systemctl enable openstack-nova-api.service \

>   openstack-nova-consoleauth.service openstack-nova-scheduler.service \

>   openstack-nova-conductor.service openstack-nova-novncproxy.service

compute上操作

  1. compute节点上安装openstack-nova-compute(需要的依赖可以从https://cbs.centos.org/koji/buildinfo?buildID=25065下载)

[root@compute opt]# mkdir -p /openstack/nova   #创建文件夹

下载依赖包:

[root@compute ~]# wget -O /openstack/nova/qemu-img-ev-2.12.0-18.el7_6.3.1.x86_64.rpm \

> https://cbs.centos.org/kojifiles/packages/qemu-kvm-ev/2.12.0/18.el7_6.3.1/x86_64/qemu-img-ev-2.12.0-18.el7_6.3.1.x86_64.rpm

[root@compute ~]# wget -O /openstack/nova/qemu-kvm-ev-2.12.0-18.el7_6.3.1.x86_64.rpm \

> https://cbs.centos.org/kojifiles/packages/qemu-kvm-ev/2.12.0/18.el7_6.3.1/x86_64/qemu-kvm-ev-2.12.0-18.el7_6.3.1.x86_64.rpm

[root@compute ~]# wget -O /openstack/nova/qemu-kvm-common-ev-2.12.0-18.el7_6.3.1.x86_64.rpm \

> > https://cbs.centos.org/kojifiles/packages/qemu-kvm-ev/2.12.0/18.el7_6.3.1/x86_64/qemu-kvm-common-ev-2.12.0-18.el7_6.3.1.x86_64.rpm

安装下载的软件包和需要的依赖包

[root@compute ~]# yum -y localinstall /openstack/nova/*

  1. 安装软件包

[root@compute ~]# yum -y install openstack-nova-compute

  1. 备份并配置主文件

[root@compute ~]# cp /etc/nova/nova.conf{,.bak}

[root@compute ~]# tee /etc/nova/nova.conf <<-'EOF'

> [DEFAULT]

> enabled_apis = osapi_compute,metadata

> transport_url = rabbit://openstack:openstack@controller

> my_ip = 192.168.0.20

> use_neutron = True

> firewall_driver = nova.virt.firewall.NoopFirewallDriver

> [api]

> auth_strategy = keystone

> [api_database]

> [barbican]

> [cache]

> [cells]

> [cinder]

> [cloudpipe]

> [conductor]

> [console]

> [consoleauth]

> [cors]

> [cors.subdomain]

> [crypto]

> [database]

> [ephemeral_storage_encryption]

> [filter_scheduler]

> [glance]

> api_servers = http://controller:9292

> [guestfs]

> [healthcheck]

> [hyperv]

> [image_file_url]

> [ironic]

> [key_manager]

> [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 = nova

> [libvirt]

> virt_type = qemu

> [matchmaker_redis]

> [metrics]

> [mks]

> [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 = neutron

> [notifications]

> [osapi_v21]

> [oslo_concurrency]

> lock_path = /var/lib/nova/tmp

> [oslo_messaging_amqp]

> [oslo_messaging_kafka]

> [oslo_messaging_notifications]

> [oslo_messaging_rabbit]

> [oslo_messaging_zmq]

> [oslo_middleware]

> [oslo_policy]

> [pci]

> [placement]

> os_region_name = RegionOne

> project_domain_name = Default

> project_name = service

> auth_type = password

> user_domain_name = Default

> auth_url = http://controller:35357/v3

> username = placement

> password = placement

> [quota]

> [rdp]

> [remote_debug]

> [scheduler]

> [serial_console]

> [service_user]

> [spice]

> [ssl]

> [trusted_computing]

> [upgrade_levels]

> [vendordata_dynamic_auth]

> [vmware]

> [vnc]

> enabled = True

> vncserver_listen = 0.0.0.0

> vncserver_proxyclient_address = $my_ip

> novncproxy_base_url = http://controller:6080/vnc_auto.html

> [workarounds]

> [wsgi]

> [xenserver]

> [xvp]

> EOF

  1. 查看是否支持虚拟机硬件加速

[root@compute ~]# egrep -c '(vmx|svm)' /proc/cpuinfo

2   #返回结果2表示支持

  1. 设置开机自启动并启动服务

[root@compute ~]# systemctl enable libvirtd.service openstack-nova-compute.service

[root@compute ~]# systemctl start libvirtd.service openstack-nova-compute.service

controller上操作

  1. 修改/etc/nova/nova.conf配置文件

[root@controller nova]# cp /etc/nova/nova.conf{,.compute.bak}  #先做备份

[root@controller nova]# sed -i '/vncserver_proxyclient_address/a \

novncproxy_base_url = http://10.0.0.10:6080/vnc_auto.html' /etc/nova/nova.conf

[root@controller nova]# sed -i '/libvirt/a virt_type = qemu' /etc/nova/nova.conf

  1. 确认是否开启了虚拟化功能

[root@controller nova]# egrep -c '(vmx|svm)' /proc/cpuinfo

  1. 启动 libvirtdnova-compute服务,并设置开机自启

[root@controller nova]# systemctl start libvirtd.service openstack-nova-compute.service

[root@controller nova]# systemctl enable libvirtd.service openstack-nova-compute.service

  1. 查看openstack虚拟机管理程序列表

[root@controller nova]# openstack hypervisor list

 

 

 

  1. 数据库同步发现计算节点,并设置自动发现

[root@controller nova]# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

scheduler下面添加

[root@controller ~]# sed -i '/\[scheduler\]/a discover_hosts_in_cells_interval = 30' /etc/nova/nova.conf

  1. 查看计算服务列表

[root@controller nova]# openstack compute service list

  1. 查看openstack目录列表

[root@controller nova]# openstack catalog list

  1. 查看openstack映像列表

[root@controller nova]# openstack image list

  1. 检查单元格和展示位置API是否正常运行

[root@controller nova]# nova-status upgrade check

---------------------------------------------------------------------------------------------------------------------------------

至此,nova服务部署完毕!

 

部署neutron网络服务

 

  1. 创建neutron数据库,创建密码并授权

 

[root@controller ~]# mysql -uroot -p123123 -e "

 

> 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'; "

 

  1. 初始化环境变量

 

[root@controller ~]# source openrc

 

  1. 创建neutron用户和密码

 

[root@controller ~]# openstack user create --domain default --password=neutron neutron

 

 

 

  1. 把用户neutron添加为service项目中的admin角色

[root@controller ~]# openstack role add --project service --user neutron admin

  1. 创建neutron的服务实体

[root@controller ~]# openstack service create --name neutron \

>   --description "OpenStack Networking" network

 

 

 

  1. 创建网络服务端点(公共、内部、管理,所有截图中的node1node2对应controllercompute

[root@controller ~]# openstack endpoint create --region RegionOne \

>   network public http://controller:9696

 

 

 

[root@controller ~]# openstack endpoint create --region RegionOne \

>   network internal http://controller:9696

 

 

 

[root@controller ~]# openstack endpoint create --region RegionOne \

>   network admin http://controller:9696

 

 

 

  1. 查看用户、服务、服务端点是否部署成功

[root@controller ~]# openstack user list

 

 

[root@controller ~]# openstack service list

 

 

[root@controller ~]# openstack catalog list

 

 [root@controller ~]# openstack catalog list

 

 

  1. 安装自助网络服务

 

 

[root@controller ~]# yum install openstack-neutron openstack-neutron-ml2 \

> openstack-neutron-linuxbridge ebtables -y

  1. 复制配置文件,修改配置文件/etc/neutron/neutron.conf

[root@controller ~]# cp /etc/neutron/neutron.conf{,.bak}

[root@controller ~]# tee /etc/neutron/neutron.conf <<-'EOF'

> [DEFAULT]

> core_plugin = ml2

> service_plugins = router

> allow_overlapping_ips = true

> transport_url = rabbit://openstack:openstack@controller

> auth_strategy = keystone

> notify_nova_on_port_status_changes = true

> notify_nova_on_port_data_changes = true

> #dhcp_agent_notification = true

> [agent]

> [cors]

> [cors.subdomain]

> [database]

> connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron

> [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 = neutron

> [matchmaker_redis]

> [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 = nova

> [oslo_concurrency]

> lock_path = /var/lib/neutron/tmp

> [oslo_messaging_amqp]

> [oslo_messaging_kafka]

> [oslo_messaging_notifications]

> [oslo_messaging_rabbit]

> [oslo_messaging_zmq]

> [oslo_middleware]

> [oslo_policy]

> [qos]

> [quotas]

> [ssl]

> EOF

  1. 备份配置文件并修改配置文件/etc/neutron/plugins/ml2/ml2_conf.ini

[root@controller ~]# cp /etc/neutron/plugins/ml2/ml2_conf.ini{,.bak}

[root@controller ~]# tee /etc/neutron/plugins/ml2/ml2_conf.ini <<-'EOF'

> [DEFAULT]

> [ml2]

> type_drivers = flat,vlan,vxlan

> tenant_network_types = vxlan

> mechanism_drivers = linuxbridge,l2population

> extension_drivers = port_security

> [ml2_type_flat]

> flat_networks = provider

> [ml2_type_geneve]

> [ml2_type_gre]

> [ml2_type_vlan]

> [ml2_type_vxlan]

> vni_ranges = 1:1000

> [securitygroup]

> enable_ipset = true

> EOF

  1. 备份并修改配置文件etc/neutron/plugins/ml2/linuxbridge_agent.ini

[root@controller ~]# cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini{,.bak}

[root@controller ~]# tee /etc/neutron/plugins/ml2/linuxbridge_agent.ini <<-'EOF'

> [DEFAULT]

> [agent]

> [linux_bridge]

> physical_interface_mappings = provider:ens33

> [securitygroup]

> enable_security_group = true

> firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

> [vxlan]

> enable_vxlan = true

> local_ip = 10.0.0.10

> l2_population = true

> EOF

  1. 备份并修改三层路由代理文件/etc/neutron/l3_agent.ini

[root@controller ~]# cp /etc/neutron/l3_agent.ini{,.bak}

[root@controller ~]# tee /etc/neutron/l3_agent.ini <<-'EOF'

> [DEFAULT]

> interface_driver = linuxbridge

> #external_network_bridge = br-ex

> [agent]

> [ovs]

> EOF

  1. 备份并修改/etc/neutron/dhcp_agent.ini

[root@controller ~]# cp /etc/neutron/dhcp_agent.ini{,.bak}

[root@controller ~]# tee /etc/neutron/dhcp_agent.ini <<-'EOF'

> [DEFAULT]

> interface_driver = linuxbridge

> dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq

> enable_isolated_metadata = true

> [agent]

> [ovs]

> EOF

  1. 配置元数据代理,备份并编辑/etc/neutron/metadata_agent.ini

[root@controller ~]# tee /etc/neutron/metadata_agent.ini <<-'EOF'

> [DEFAULT]

> nova_metadata_ip = controller

> metadata_proxy_shared_secret = METADATA_SECRET

> [agent]

> [cache]

> EOF

  1. 配置Compute服务以使用网络服务,备份并编辑/etc/nova/nova.conf

[root@controller ~]# cp /etc/nova/nova.conf{,.neutron.bak}

[root@controller ~]# sed -i 's/^#//' /etc/nova/nova.conf  (去掉neutron下面的备注符号)

  1. 制作软连接,同步数据库,重启计算服务

[root@controller ~]# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

[root@controller ~]# 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

[root@controller ~]# systemctl restart openstack-nova-api.service

  1. 启动网络服务,并设置开机自启

[root@controller ~]# systemctl restart neutron-linuxbridge-agent.service \

> neutron-server.service neutron-dhcp-agent.service neutron-metadata-agent.service

[root@controller ~]# systemctl enable neutron-linuxbridge-agent.service \

> neutron-server.service neutron-dhcp-agent.service neutron-metadata-agent.service

  1. 查看网卡信息,修改第三块网卡名称为ens38(18~20无需操作)

[root@controller ~]# nmcli connection show

NAME        UUID                                  TYPE      DEVICE

有线连接 1  a05e21cf-0ce1-3fdb-97af-2aef41f56836  ethernet  ens38  

ens33       3a90c11e-a36f-401e-ba9d-e7961cea63ca  ethernet  ens33  

ens37        526c9943-ba19-48db-80dc-bf3fe4d99505  ethernet  ens37  

[root@controller ~]# nmcli connection modify '有线连接 1' con-name ens38

[root@controller ~]# nmcli connection show

NAME   UUID                                  TYPE      DEVICE

ens38  a05e21cf-0ce1-3fdb-97af-2aef41f56836  ethernet  ens38  

ens33  3a90c11e-a36f-401e-ba9d-e7961cea63ca  ethernet  ens33  

ens37   526c9943-ba19-48db-80dc-bf3fe4d99505  ethernet  ens37

[root@controller ~]# sed -i '3,4d;6,12d;16d' /etc/sysconfig/network-scripts/ifcfg-ens38

[root@controller ~]# sed -i 's/dhcp/none/' /etc/sysconfig/network-scripts/ifcfg-ens38

[root@controller ~]# service network restart      #如果不生效reboot重启

  1. 准备ovs外网用的网桥 

[root@controller ~]# source openrc

[root@controller ~]# ovs-vsctl add-br br-ex

[root@controller ~]# ovs-vsctl add-port br-ex ens38

  1. 启动neutron-l3-agent.service,并设置开机自启(18~20无需操作

[root@controller ~]# systemctl start neutron-l3-agent.service

[root@controller ~]# systemctl enable neutron-l3-agent.service

  1. 查看服务状态

[root@controller ~]# neutron agent-list  [root@controller ~]# openstack network agent list

 

 

在计算节点compute上部署neutron服务

  1. 安装网络服务

[root@compute ~]# yum install openstack-neutron-linuxbridge ebtables ipset -y

  1. 备份并配置neutron主服务

[root@compute ~]# cp /etc/neutron/neutron.conf{,.bak}

[root@compute ~]# tee /etc/neutron/neutron.conf <<-'EOF'

> [DEFAULT]

> #core_plugin = ml2

> #service_plugins = router

> #allow_overlapping_ips = true

> transport_url = rabbit://openstack:openstack@controller

> auth_strategy = keystone

> #notify_nova_on_port_status_changes = true

> #notify_nova_on_port_data_changes = true

> #dhcp_agent_notification = true

> [agent]

> [cors]

> [cors.subdomain]

> [database]

> #connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron

> [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 = neutron

> [matchmaker_redis]

> [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 = nova

> [oslo_concurrency]

> lock_path = /var/lib/neutron/tmp

> [oslo_messaging_amqp]

> [oslo_messaging_kafka]

> [oslo_messaging_notifications]

> [oslo_messaging_rabbit]

> [oslo_messaging_zmq]

> [oslo_middleware]

> [oslo_policy]

> [qos]

> [quotas]

> [ssl]

> EOF

  1. 备份并配置/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件

[root@compute ~]# cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini{,.bak}

[root@compute ~]# tee /etc/neutron/plugins/ml2/linuxbridge_agent.ini <<-'EOF'

> [DEFAULT]

> [agent]

> [linux_bridge]

> physical_interface_mappings = provider:ens33

> [securitygroup]

> enable_security_group = true

> firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

> [vxlan]

> enable_vxlan = true

> local_ip = 10.0.0.20 

> l2_population = true

> EOF

  1. 备份并修改计算节点的配置文件/etc/nova/nova.conf配置文件

[root@compute ~]# cp /etc/nova/nova.conf{,.nova}

[root@compute ~]# sed -i 's/^#//' /etc/nova/nova.conf

  1. 重启nova-compute服务

[root@compute ~]# systemctl restart openstack-nova-compute.service

  1. 开启 neutron-linuxbridge-agent,并设置开机自启

[root@compute ~]# systemctl start  neutron-linuxbridge-agent

[root@compute ~]# systemctl enable  neutron-linuxbridge-agent

  1. controller上验证效果

[root@controller ~]# openstack network agent list  或是用命令 neutron agent-list

 

 

至此,neutron服务部署完毕!

部署dashboardhorizon-web管理)服务

  1. 安装openstack-dashboard

[root@controller ~]# yum install openstack-dashboard -y

  1. 备份并配置 /etc/openstack-dashboard/local_settings文件

[root@controller ~]# cp /etc/openstack-dashboard/local_settings{,.bak}

[root@controller ~]# sed -i '/^OPENSTACK_HOST/c OPENSTACK_HOST = "controller"'  \

/etc/openstack-dashboard/local_settings

[root@controller ~]# sed -i "s/localhost'/localhost','*'/" /etc/openstack-dashboard/local_settings

[root@controller ~]# sed -i "136,140s/^/#/" /etc/openstack-dashboard/local_settings

[root@controller ~]# sed -i "129,134s/^#//" /etc/openstack-dashboard/local_settings

[root@controller ~]# sed -i "128a SESSION_ENGINE = 'django.contrib.sessions.backends.cache'" \

/etc/openstack-dashboard/local_settings

[root@controller ~]# sed -i "s/127.0.0.1:11211/controller:11211/"  \

/etc/openstack-dashboard/local_settings

[root@controller ~]# sed -i "s/v2.0/v3/" /etc/openstack-dashboard/local_settings

[root@controller ~]# sed -i 's/_ROLE = "_member_"/_ROLE =  "user"/'  \

/etc/openstack-dashboard/local_settings

[root@controller ~]# sed -i '/^#OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT/c \

OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True'  \

/etc/openstack-dashboard/local_settings

[root@controller ~]# sed -i '54s/#//;56,60s/#//' /etc/openstack-dashboard/local_settings

[root@controller ~]# sed -i '/^#OPENSTACK_KEYSTONE_DEFAULT_DOMAIN/c \

OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default" ' \

/etc/openstack-dashboard/local_settings

  1. 重启httpd.service memcached.service服务

[root@controller ~]# systemctl restart httpd.service memcached.service

  1. web浏览器上访问openstack页面验证结果

访问网址是控制节点的IP,用户名密码都是admin

 

 

至此,dashboard服务部署完毕!

部署cinder存储服务controllerstorage

  1. 创建cinder数据库

[root@controller ~]# mysql -uroot -p123123 -e "CREATE DATABASE cinder;"

  1. 对数据库授权,本地和远程都可以登录

[root@controller ~]# mysql -uroot -p123123 -e "

> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \

>   IDENTIFIED BY 'CINDER_DBPASS'; \

> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \

>   IDENTIFIED BY 'CINDER_DBPASS';"

  1. 初始化变量,创建cinder用户并设置密码为cinder

[root@controller ~]# openstack user create --domain default --password=cinder cinder

 

 

  1. 将用户cinder用的的角色设置为admin管理员

[root@controller ~]# openstack role add --project service --user cinder admin

  1. 创建cinderv2cinderv3服务实体

[root@controller ~]# openstack service create --name cinderv2 \

>   --description "OpenStack Block Storage" volumev2

 

 

[root@controller ~]# openstack service create --name cinderv3 \

>   --description "OpenStack Block Storage" volumev3

 

 

  1. 创建块存储服务API端点,v2版本(公共、内部、管理)

[root@controller ~]# openstack endpoint create --region RegionOne \

>   volumev2 public http://controller:8776/v2/%\(project_id\)s

 

 

[root@controller ~]# openstack endpoint create --region RegionOne \

>   volumev2 internal http://controller:8776/v2/%\(project_id\)s

 

 

[root@controller ~]# openstack endpoint create --region RegionOne \

>   volumev2 admin http://controller:8776/v2/%\(project_id\)s

 

 

  1. 创建块存储服务API端点,v3版本(公共、内部、管理)

[root@controller ~]# openstack endpoint create --region RegionOne \

>   volumev3 public http://controller:8776/v3/%\(project_id\)s

 

 

[root@controller ~]# openstack endpoint create --region RegionOne \

>   volumev3 internal http://controller:8776/v3/%\(project_id\)s

 

 

[root@controller ~]# openstack endpoint create --region RegionOne \

>   volumev3 admin http://controller:8776/v3/%\(project_id\)s

 

 

  1. 安装openstack-cinder

[root@controller ~]# yum -y install openstack-cinder

  1. 备份并修改配置文件

[root@controller ~]# cp /etc/cinder/cinder.conf{,.bak}

[root@controller ~]# tee /etc/cinder/cinder.conf <<-'EOF'

> [DEFAULT]

> my_ip = 10.0.0.10

> #glance_api_servers = http://controller:9292

> auth_strategy = keystone

> #enabled_backends = lvm

> transport_url = rabbit://openstack:openstack@controller

> [backend]

> [barbican]

> [brcd_fabric_example]

> [cisco_fabric_example]

> [coordination]

> [cors]

> [cors.subdomain]

> [database]

> connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder

> [fc-zone-manager]

> [healthcheck]

> [key_manager]

> [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 = cinder

> [matchmaker_redis]

> [oslo_concurrency]

> lock_path = /var/lib/cinder/tmp

> [oslo_messaging_amqp]

> [oslo_messaging_kafka]

> [oslo_messaging_notifications]

> [oslo_messaging_rabbit]

> [oslo_messaging_zmq]

> [oslo_middleware]

> [oslo_policy]

> [oslo_reports]

> [oslo_versionedobjects]

> [profiler]

> [ssl]

> [lvm]

> #volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver

> #volume_group = cinder-vg

> #volumes_dir = $state_path/volumes

> #Iscsi_protocol = iscsi

> #iscsi_helper = lioadm

> #iscsi_ip_address = 10.0.0.10

> EOF

  1. 同步数据库

[root@controller ~]# su -s /bin/sh -c "cinder-manage db sync" cinder

Option "logdir" from group "DEFAULT" is deprecated. Use option "log-dir" from group "DEFAULT".

  1. 查询同步结果

[root@controller ~]# mysql -uroot -p123123 -e "use cinder;show tables;"

 

 

  1. 修改/etc/nova/nova.conf文件,controllercompute上都要操作

[root@controller ~]# sed -i '/\[cinder\]/a os_region_name = RegionOne' /etc/nova/nova.conf

[root@compute ~]# sed -i '/\[cinder\]/a os_region_name = RegionOne' /etc/nova/nova.conf

  1. 重启novaAPI服务

[root@controller ~]# systemctl restart openstack-nova-api.service

  1. 启动cinder相关的服务,并设置开机自启

[root@controller ~]# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service

[root@controller ~]# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service

  1. 验证结果

[root@controller ~]# cinder service-list

 

 

至此,控制节点controller上的cinder部署完毕!

在存储节点storage上部署cinder服务

  1. 安装lvm2

[root@storage ~]# yum install lvm2 -y

  1. 开启lvm2服务,并设置开机自启

[root@storage ~]# systemctl start lvm2-lvmetad.service

[root@storage ~]# systemctl enable lvm2-lvmetad.service

  1. 给虚拟机添加一块硬盘(如果在之前就添加过硬盘此步骤省略)

打开VMware-->找到storage右击设置-->点击添加-->添加磁盘类型为ISCSI类型,大小为40G

 

 

  1. 查看添加的磁盘

[root@storage ~]# lsblk

 

 

  1. 创建LVM物理卷/dev/sdb

[root@storage ~]# pvcreate /dev/sdb

  Physical volume "/dev/sdb" successfully created.

  1. 创建LVM卷组cinder-volumes

[root@storage ~]# vgcreate cinder-volumes /dev/sdb

  Volume group "cinder-volumes" successfully created

  1. 备份并编辑 /etc/lvm/lvm.conf文件

[root@storage ~]# cp /etc/lvm/lvm.conf{,.bak}

[root@storage ~]# sed -i '/devices {/a filter = [ "a/sdb/", "r/.*/"]' /etc/lvm/lvm.conf

  1. 安装cinder相关软件包(先执行步骤9,不成功再执行步骤8)

首先要配置好yum源,配置方法详见:https://www.cnblogs.com/guarding/p/12321702.html

[root@storage ~]# yum install openstack-cinder targetcli python-keystone -y

在配置好yum源后安装如果报错,执行下面四条命令再尝试!

[root@storage ~]# yum -y install libtommath

[root@storage ~]# mkdir /cinder

[root@storage ~]# wget -O /cinder/libtomcrypt-1.17-33.20170623gitcd6e602.el7.x86_64.rpm https://cbs.centos.org/kojifiles/packages/libtomcrypt/1.17/33.20170623gitcd6e602.el7/x86_64/libtomcrypt-1.17-33.20170623gitcd6e602.el7.x86_64.rpm

[root@storage ~]# rpm -ivh /cinder/libtomcrypt-1.17-33.20170623gitcd6e602.el7.x86_64.rpm

  1. 安装cinder

[root@storage ~]# yum install openstack-cinder targetcli python-keystone -y

  1. 备份并修改配置文件/etc/cinder/cinder.conf

[root@storage ~]# cp /etc/cinder/cinder.conf{,.bak}

[root@storage ~]# tee /etc/cinder/cinder.conf <<-'EOF'

> [DEFAULT]

> my_ip = 192.168.0.30

> glance_api_servers = http://controller:9292

> auth_strategy = keystone

> enabled_backends = lvm

> transport_url = rabbit://openstack:openstack@controller

> [backend]

> [barbican]

> [brcd_fabric_example]

> [cisco_fabric_example]

> [coordination]

> [cors]

> [cors.subdomain]

> [database]

> connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder

> [fc-zone-manager]

> [healthcheck]

> [key_manager]

> [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 = cinder

> [matchmaker_redis]

> [oslo_concurrency]

> lock_path = /var/lib/cinder/tmp

> [oslo_messaging_amqp]

> [oslo_messaging_kafka]

> [oslo_messaging_notifications]

> [oslo_messaging_rabbit]

> [oslo_messaging_zmq]

> [oslo_middleware]

> [oslo_policy]

> [oslo_reports]

> [oslo_versionedobjects]

> [profiler]

> [ssl]

> [lvm]

> volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver

> volume_group = cinder-volumes

> #volumes_dir = $state_path/volumes

> Iscsi_protocol = iscsi

> iscsi_helper = lioadm

> #iscsi_ip_address = 192.168.0.30

> EOF

  1. 设置服务开机自启动,并启动服务

[root@storage ~]# systemctl enable openstack-cinder-volume.service target.service

[root@storage ~]# systemctl start openstack-cinder-volume.service target.service

  1. controller控制节点验证结果

[root@controller ~]# cinder service-list

 

 至此,cinder服务部署完毕!

至此,OpenStack的基本组件已经部署完毕!

 

 

 

 

 

 

 

 

posted @ 2020-03-21 16:07  谈_指之间  阅读(640)  评论(0编辑  收藏  举报