CENTOS7 安裝openstack mitaka版本(最新整理完整版附詳細截圖和操作步驟,添加了cinder和vxlan)

CENTOS7 安裝openstack mitaka版本(最新整理完整版附詳細截圖和操作步驟,添加了cinder和vxlan,附上個節點的配置文件)

實驗環境準備:

爲了更好的實現分佈式mitaka版本的效果。我纔有的是VMware的workstations來安裝三臺虛擬機,分別來模擬openstack的controller節點 compute節點和cinder節點。(我的宿主機配置爲 500g 硬盤 16g內存,i5cpu。強烈建議由條件的朋友將內存配置大一點,因爲我之前分配的2g太卡。)

注意:要實驗kvm虛擬機,在vmware裏面啓動虛擬機之前開啓cpu虛擬化可以在開機之後輸入:

egrep -c '(vmx|svm)' /proc/cpuinfo

查看。Vmwar如何開啓:

wKiom1gS49ihGzgTAAE8V1IFE5A624.png-wh_50


具體配置開始:

Controller節點: 2cpu +4gram+50gdisk+2nic(192.168.1.182(橋接)+192.168.8.183(nat))

compute節點: 2cpu +4gram+50gdisk+2nic(192.168.1.183(橋接)+192.168.8.183(nat))

cinder節點: 1cpu +1gram+10gdisk+20gdisk(次硬盤爲安裝完成之後添加,不要歲系統添加到lvm,如果手動分區就可以隨虛擬機一起安裝,安裝cinder的磁盤,一點要乾淨的磁盤,要不然會報錯(樓主在這個問題上面哭了半天才發現))+2nic(192.168.1.184(橋接)+192.168.8.184(nat))

 

現在正是開始:

一.  所有節點都要安裝和配置的基礎環境

  1.  系統安裝完成之後,所有節點關掉防火牆,關掉selinux,設置好root密碼

systemctl stop firewalld.service

vi /etc/sysconfig/selinux 將enforce改成disabled

wKioL1gS5AazBZ3dAACurzhKJpY599.png-wh_50    

設置好root密碼:我的root密碼統一設置爲adm*123,爲了方便和不出差錯,我將以後的數據庫的密碼和keystone ,glance,rabbitmq,nova,cinder的密碼都設置爲adm*123

  1. 所有節點添加主機名解析:/etc/hosts

  2. 設置主機名:

Controller節點:hostnamectl set-hostname controller

Compute 節點:hostnamectl set-hostname compute

Cinder    節點:hostnamectlset-hostname cinder

3. 登錄到每個節點將主機名添加解析:

vi /etc/hosts加入:


wKioL1gS5CKDnCllAACbiVcTJlU149.png-wh_50

添加時間同步:

在controller節點:yum install chrony –y

4. 配置時間同步:

vi  /etc/chrony.conf加入:

server time.windows.com iburst

 設置開機啓動以及啓動chronyd

systemctl enable chronyd.service
systemctl start chronyd.service

在compute和cinder節點:

yum install chrony -y

vi  /etc/chrony.conf加入:

server controller iburst

設置開機啓動以及啓動chronyd:

systemctl enable chronyd.service
systemctl start chronyd.service

 

5.配置openstack mitaka的yum源和安裝基礎軟件包(所有節點都需要)

安裝yum源:

 yum install centos-release-openstack-mitaka -y

在主機上更新軟件包和內核:

yum upgrade

安裝OpenStackclient:

yum install python-openstackclient -y

如果你開起了selinux可以安裝openstack-selinux,如果關掉了就不要安裝。我們這裏選擇不安裝。如果需要在安裝直接運行:

yum install openstack-selinux

 

二.我的計劃是在controller節點上面安裝mysql,rabbitmq,keystone,glance,nova-api等

   1. 下面安裝mysql(記住在controller節點上面):

   安裝mysql:

yum install mariadb mariadb-server python2-PyMySQL -y

 

配置:

vi/etc/my.cnf 加入:

bind-address= 192.168.1.182

default-storage-engine= innodb

innodb_file_per_table

max_connections= 4096

collation-server= utf8_general_ci

character-set-server= utf8

配置開機啓動和啓動mysql:
 systemctl enable mariadb.service

   systemctl start mariadb.service

 設置密碼:

mysql_secure_installation

按照操作一步一步完成即可,都是傻瓜式的操作,我的設置爲amd*123


2 .安裝rabbitmq(個個服務之間的節點的通訊服務)

安裝軟件:

yum install rabbitmq-server

啓動服務:

systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service

創建rabbitmq用戶openstack並設置密碼爲adm*123

rabbitmqctl add_user openstack adm*123

給剛剛創建的openstack用戶授權:

rabbitmqctl set_permissions openstack ".*"".*"".*"

 

安裝memcache

安裝:

yum install memcached python-memcached

啓動服務:

systemctl enable memcached.service
systemctl start memcached.service

4 安裝keystone(認證服務)

創建keystone的數據庫:

 登錄數據庫:mysql –uroot –padm*123然後執行:

CREATE DATABASE keystone;

授權keystone用戶:

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
  IDENTIFIED BY 'adm*123';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
  IDENTIFIED BY 'adm*123';

 

生成admin的token的隨機碼:

openssl rand -hex 10

copy下來這個值,到時候會配置keystone的配置文件裏面。

安裝keystone的相關軟件:

yum install openstack-keystone httpd mod_wsgi -y

修改配置文件:

[DEFAULT]
...
admin_token = 剛剛生成的隨機數

數據庫連接:

[database]
...
connection = mysql+pymysql://keystone:adm*123@controller/keystone

打開token:

[token]
...
provider = fernet

保存退出之後,同步數據庫

su -s /bin/sh -c "keystone-manage db_sync" keystone

 

初始化fernet key:

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

配置httpd服務:

vi/etc/httpd/conf/httpd.conf

修改ServerName

ServerName controller

在/etc/httpd/conf.d/下增加 wsgi的conf文件:

vi/etc/httpd/conf.d/wsgi-keystone.conf 加入下面內容:

Listen5000
Listen35357
 
<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}
    WSGIPassAuthorizationOn
    ErrorLogFormat"%{cu}t %M"
    ErrorLog/var/log/httpd/keystone-error.log
    CustomLog/var/log/httpd/keystone-access.log combined
 
    <Directory/usr/bin>
        Requireall 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}
    WSGIPassAuthorizationOn
    ErrorLogFormat"%{cu}t %M"
    ErrorLog/var/log/httpd/keystone-error.log
    CustomLog/var/log/httpd/keystone-access.log combined
 
    <Directory/usr/bin>
        Requireall granted
    </Directory>
</VirtualHost>

保存退出。

啓動httpd服務:

systemctl enable httpd.service
systemctl start httpd.service

 

1   創建service和endpoint:

配置授權的token

exportOS_TOKEN=生成的隨機數

配置endpoint的url:

exportOS_URL=http://controller:35357/v3

配置api的版本:

exportOS_IDENTITY_API_VERSION=3

創建認證服務:

openstack service create \
  --name keystone --description "OpenStack Identity" identity

創建認證服務器的api 的endpoint:

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 

創建域,項目,用戶,角色:

創建default域:

openstack domain create --description "Default Domain" default

創建admin項目:

openstack project create --domain default \
  --description "Admin Project" admin

創建admin用戶:

openstack user create --domain default \
  --password-prompt admin

提示輸入密碼,我們都輸入adm*123

創建admin的角色:

openstack role create admin

將admin用戶添加到admin這個角色和項目裏面:

openstack role add --project admin --user admin admin

 

確認操作:

如果出現以下結果,代表上面的操作沒有問題,如果有問題,請返回檢查:

取消環境變量;

unset OS_TOKEN OS_URL

執行:admin user,如果有返回這個成功:

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

如果adm*123 ,看返回結果

我的返回結果:

wKioL1gS5GWy8LL9AAF9jczT1Wc487.png-wh_50

 

創建admin 管理用戶和demo普通用戶的環境腳本:

我的admin腳本內容:

wKiom1gS5HqhnXFiAAFb3F788Tg126.png-wh_50



我的demo腳本內容:

 

wKioL1gS5IuhshiBAAFfUYeEqi0215.png-wh_50

直接執行

. admin-openrc

然後運行:

openstack token issue

就可以反正相同結果。

 

三. 安裝glance(鏡像服務)

登錄數據庫創建glance數據庫:

mysql -u root –padm*123

創建glance數據庫:

CREATE DATABASE glance;

授權:

GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
  IDENTIFIED BY 'adm*123';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
  IDENTIFIED BY 'adm*123';

退出mysql端。

創建glance的用戶,加入到admin組,創建image服務,創建endpoint。

. admin-openrc

創建用戶和添加角色:

openstack user create --domain default --password-prompt glance

密碼:adm*123

 

添加角色:

openstack role add --project service --user glance admin

創建服務:

openstack service create --name glance \
  --description "OpenStack Image" image

 

創建endpoint:

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

 

安裝軟件:

yum install openstack-glance -y

配置:

vi /etc/glance/glance-api.conf

直接到database配置:

[database]
...
connection = mysql+pymysql://glance:adm*123@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 = adm*123

找到paste_deploy:

[paste_deploy]
...
flavor = keystone

配置glance_store:

[glance_store]
...
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/

 

配置glance-registry

vi /etc/glance/glance-registry.conf

[database]
...
connection = mysql+pymysql://glance:adm*123@controller/glance

配置:[keystone_authtoken]  [paste_deploy]:

[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 = adm*123
 
[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

 

確認glance操作:

下載測試鏡像:

wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

執行環境變量:

. admin-openrc

上傳鏡像到glance:

openstack image create "cirros"\
  --file cirros-0.3.4-x86_64-disk.img \
  --disk-format qcow2 --container-format bare \
  --public

 

上傳完成之後查看:

openstack image list

你可以看到你剛剛長傳完成的鏡像,我上傳了幾個鏡像。我的輸出:

wKioL1gS5KSig5uAAAE9ufLWVWc285.png-wh_50

 

五 在controller節點安裝計算服務

登錄數據庫,創建nova,nova_api數據庫。

mysql -u root –padm*123

創建數據庫:

CREATE DATABASE nova_api;
CREATE DATABASE nova;

授權:

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
  IDENTIFIED BY 'adm*123';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
  IDENTIFIED BY ' adm*123';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
  IDENTIFIED BY ' adm*123';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
  IDENTIFIED BY ' adm*123';

 

創建nova用戶,角色,服務,endpoint(跟上面類似)

執行環境變量:

. admin-openrc

創建用戶,密碼adm*123

openstack user create --domain default \
  --password-prompt nova

加入角色:

openstack role add --project service --user nova admin

創建compute服務:

openstack service create --name nova \
  --description "OpenStack Compute" compute

創建endpoint:

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.conf

vi /etc/nova/nova.conf

[DEFAULT]
...
enabled_apis = osapi_compute,metadata

 

[api_database]
...
connection = mysql+pymysql://nova:adm*123@controller/nova_api
 

 

[database]
...
connection = mysql+pymysql://nova:adm*123@controller/nova

 

[DEFAULT]
...
rpc_backend = rabbit
auth_strategy = keystone
my_ip = 192.168.1.182
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 = adm*123

 

[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

  

啓動服務:

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點安裝compute服務

 

安裝軟件:

yum install openstack-nova-compute -y

 

配置nova.conf

vi /etc/nova/nova.conf

[DEFAULT]
...
rpc_backend = rabbit
auth_strategy = keystone
my_ip = 192.168.1.183
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 = adm*123

 

 

[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

 

保存退出。

啓動服務:

systemctl enable libvirtd.service openstack-nova-compute.service

 

systemctl start libvirtd.service openstack-nova-compute.service

 

計算節點安裝完畢之後,回到controller節點確認操作是否正確:

執行環境變量:

. admin-openrc

 

查看計算服務:

openstack compute service list

我的輸出:

wKiom1gS5MPitI69AAFGVnuxn7I569.png-wh_50

 

 

七 安裝neutron服務(網絡服務)

 在controller節點安裝neutron:

創建neutron數據庫(方法同上):

mysql -u root –padm*123

 

創建數據庫並授權:

CREATE DATABASE neutron;

 

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \
  IDENTIFIED BY 'adm*123';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \
  IDENTIFIED BY 'adm*123';

 

創建用戶(密碼adm*123),角色,服務和endpoint:

執行環境變量:

. admin-openrc

創建用戶(密碼adm*123)

openstack user create --domain default --password-prompt neutron

角色:

openstack role add --project service --user neutron admin

 

服務:

openstack service create --name neutron \
  --description "OpenStack Networking" network

 

Endpoint:

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

 

我們這裏的網絡我打算建立vxlan,執行如下操作:

安裝軟件:

yum install openstack-neutron openstack-neutron-ml2 \
  openstack-neutron-linuxbridge ebtables -y

配置/etc/neutron/neutron.conf:

[database]
...
connection = mysql+pymysql://neutron:adm*123@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 = adm*123

 

[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 = adm*123

 

 

[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 = adm*123

 

 

[oslo_concurrency]
...
lock_path = /var/lib/neutron/tmp

 

 

配置ml2:

vi /etc/neutron/plugins/ml2/ml2_conf.ini

[ml2]
...
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
mechanism_drivers = linuxbridge,l2population
extension_drivers = port_security
flat_networks = provider
vni_ranges = 1:1000
enable_ipset = True

我的配置:

wKioL1gS5WzhGoDgAAEW9RFqgBQ602.png-wh_50

 

配置linux briadge agent:

vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge]
physical_interface_mappings=provider:eno33554960
 

  

[vxlan]
enable_vxlan=True
local_ip=OVERLAY_INTERFACE_IP_ADDRESS
l2_population=True

 

[securitygroup]
...
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

我的配置:

wKioL1gS5X6C0lk7AAEc9ex0CrY554.png-wh_50

 

配置l3_agent:

vi /etc/neutron/l3_agent.ini

 

[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
external_network_bridge =

 

配置dhcp agent:

vi  /etc/neutron/dhcp_agent.ini

[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = True

配置metadata agent:

vi  /etc/neutron/metadata_agent.ini 

[DEFAULT]
...
nova_metadata_ip = controller
metadata_proxy_shared_secret = adm*123

 

配置nova使用neutron:

vi   /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 = adm*123
 
service_metadata_proxy = True
metadata_proxy_shared_secret = adm*123

保存退出。

創建軟連接:

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.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

 

systemctl enable neutron-l3-agent.service

 

systemctl start neutron-l3-agent.service

 

在compute節點安裝neutron:

yum install openstack-neutron-linuxbridge ebtables ipset -y

配置/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 = adm*123

 

[oslo_concurrency]
...
lock_path = /var/lib/neutron/tmp

  

配置:/etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge]
physical_interface_mappings=provider:eno33554960

 

[vxlan]
enable_vxlan=True
local_ip=192.168.1.183
l2_population=True

 

[securitygroup]
...
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

 

我的配置:

wKiom1gS5ZfRhRapAAD9X4ywoXA929.png-wh_50

配置nova使用neutron:

配置/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 = adm*123

 

保存退出。

啓動服務:

systemctl restart openstack-nova-compute.service
systemctl enable neutron-linuxbridge-agent.service

 

systemctl start neutron-linuxbridge-agent.service

 

回到controller節點確認操作:
執行環境變量:

. admin-openrc

執行:

neutron ext-list

我的輸出:

wKioL1gS5aWCzgoXAAPl9YYg5QY182.png-wh_50 

 

八 安裝dashboard

我的dashboard安裝在controller節點上。

安裝軟件:

yum install openstack-dashboard -y

配置/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

 

PENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT=True

  

OPENSTACK_API_VERSIONS = {
    "identity": 3,
    "image": 2,
    "volume": 2,
}

  

OPENSTACK_KEYSTONE_DEFAULT_DOMAIN="default"

 

OPENSTACK_KEYSTONE_DEFAULT_ROLE="user"

 

OPENSTACK_NEUTRON_NETWORK = {
    ...
    'enable_router': False,
    'enable_quotas': False,
    'enable_distributed_router': False,
    'enable_ha_router': False,
    'enable_lb': False,
    'enable_firewall': False,
    'enable_***': False,
    'enable_fip_topology_check': False,
}
TIME_ZONE="UTC"

 

保存退出。

啓動服務:

systemctl restart httpd.service memcached.service

 

 

這個時候可以通過網絡訪問openstack了。

wKioL1gS5bOQSA0-AACK7c0Bhak130.png-wh_50

注意:現在只是可以通過openstack訪問虛擬機了,但是不能安裝虛擬機,沒有安裝cinder,所以我們接下來安裝cinder。

 

九 安裝cinder(存儲)

在controller節點上執行如下操作:

創建cinder數據庫,並授權:

mysql -u root –padm*123

 

創建數據庫:

CREATE DATABASE cinder;

 

授權:

GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
  IDENTIFIED BY 'adm*123';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
  IDENTIFIED BY 'adm*123';

 

創建用戶,角色,服務,endpoint:

. admin-openrc

用戶密碼爲adm*123:

openstack user create --domain default --password-prompt cinder

 

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

 

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

 

配置/etc/cinder/cinder.conf

[database]
...
connection = mysql+pymysql://cinder:adm*123@controller/cinder

 

[DEFAULT]
...
rpc_backend = rabbit
auth_strategy = keystone
my_ip = 192.168.1.182

  

[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = adm*123

  

[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 = adm*123

 

[oslo_concurrency]
...
lock_path = /var/lib/cinder/tmp

 

保存退出。

同步數據庫:

su -s /bin/sh -c "cinder-manage db sync" cinder

 

配置nova使用cinder:

配置/etc/nova/nova.conf 

[cinder]
os_region_name=RegionOne

保存退出。

啓動服務:

systemctl restart openstack-nova-api.service

 

 

systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service

 

systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service

 

十. 在cinder節點配置cinder

安裝lvm(一般都系統自帶了)

yum install lvm2

 

systemctl enable lvm2-lvmetad.service
systemctl start lvm2-lvmetad.service

 

創建pv和vg組,這個時候就要用到我們添加的那個乾淨的磁盤了,可以使用fdisk –l 查看,我這兒使用的sdc(一定要乾淨的磁盤,我在這裏爬坑的時候你們一定在笑)

pvcreate /dev/sdc

 

創建組:

vgcreate cinder-volumes /dev/sdc

 

配置lvm的權限:

配置/etc/lvm/lvm.conf,添加

找到devices組添加:
說明:我的是sda,sdb,全部都是lvm卷,所以要全部添加

filter= [ "a/sda/", "a/sdb/","a/sdc/","r/.*/"]

 

安裝軟件:

yum install openstack-cinder targetcli python-keystone -y

 

 

配置/etc/cinder/cinder.conf

[database]
...
connection = mysql+pymysql://cinder:adm*123@controller/cinder


 

[DEFAULT]
...
rpc_backend = rabbit
auth_strategy = keystone
my_ip = 192.168.1.184
enabled_backends = lvm

 

在文檔末尾加入:

[lvm]
...
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
iscsi_protocol = iscsi
iscsi_helper = lioadm

 

 

[oslo_concurrency]
...
lock_path = /var/lib/cinder/tmp

 

 

啓動服務:

systemctl enable openstack-cinder-volume.service target.service

 

systemctl start openstack-cinder-volume.service target.service

 

確認操作:

在controller節點:

. admin-openrc

 

cinder service-list

看輸出結果

我的結果爲:

wKiom1gS5eqQq3nYAAE9ufLWVWc381.png-wh_50

 

到現在爲止,我們可以創建虛擬機。

再次之前我們需要創建vxlan。

步驟如下:

 

創建provider網絡:

neutron--debug net-create --shared provider --router:external True--provider:network_type flat --provider:physical_network provider

創建子網,floatip使用:

neutronsubnet-create provider 192.168.1.0/24 --name public-sub --allocation-poolstart=192.168.1.210,end=192.168.1.220 --dns-nameserver 61.139.2.69 --gateway192.168.1.1

創建vxlan私網:

neutronnet-create private --provider:network_type vxlan --router:external False--shared

創建子網:

 neutron subnet-create private --nameinternal-subnet --gateway 192.168.13.1 192.168.13.0/24

 

由於我做這個時候沒有截圖,所以截圖使用來自網上,請諒解:


wKioL1gS5hKxVllRAAJjVafOb14994.png-wh_50

wKiom1gS5hPS1jD_AAG9E7FQUcY857.png-wh_50

 

創建了網絡之後創建路由,虛擬機纔可以通網。

在dashboard裏面點擊項目—網絡—路由—新建路由即可。

wKioL1gS5jOxrf-iAADHnWPipDY070.png-wh_50

wKioL1gS5jTgljI6AAF_P6dYwoI622.png-wh_50

wKiom1gS5jTy6cvnAADXHUyC5HM218.png-wh_50

wKiom1gS5jSw6L2nAAEuJ6OYtts832.png-wh_50

wKioL1gS5jXTFBB3AAKSjkc04jM801.png-wh_50

wKiom1gS5jaRsjgCAAG2CpMlK2I123.png-wh_50

 

 

到此你可以上傳你製作好的鏡像,創建你的虛擬機了(鏡像可以在晚上去下載,也可以自己製作,網上的大神多得很 哈哈)。

 

最後總結一下自己遇到的問題:

  1. 在cinder的時候遇到這種錯誤(所以服務正常):

2016-10-2712:53:33.077 76504 ERROR cinder.scheduler.flows.create_volume[req-1d9179f3-913c-4e72-a357-437ed4ed3c2d 3da30194de374868990d83f474149ae663ed5b1babb74b3080f90a365efbcb84 - - -] Failed to run taskcinder.scheduler.flows.create_volume.ScheduleCreateVolumeTask;volume:create: Novalid host was found. No weighed hosts available

 

最後是新加一個乾淨的磁盤,重新配置解決。

 

  1. 在nova和neutron的時候,出現401的授權錯誤

  2. 查看日誌

  3. 查看配置文件

  4. 刪除用戶,重新建立

我的屬於第三種,沒有任何問題,就是刪除之後,重新建立解決。

3  在安裝虛擬的時候不要使用iso文件去安裝,一定要自己製作的鏡像(不知道的可以網上找,多得你數不清),我使用centos7dvd版本的iso安裝文件去安裝,始終沒有辦法進入系統,安裝完成之後重啓還是進入安裝界面。

附上我的dashboard的幾個截圖:

wKiom1gS5lvy6bQfAABC2DQVBWw597.png-wh_50

wKioL1gS5luiUApDAAA2oFmA2HE791.png-wh_50

wKiom1gS5lvgSwADAABhChV7Y70055.png-wh_50

wKioL1gS5luQpPngAABzxk5X_FM630.png-wh_50

wKioL1gS5lyi5BuQAAA7ns23zqQ043.png-wh_50

wKiom1gS5lzQklmKAAAkOvCRx_A109.png-wh_50

wKiom1gS5lzwNiizAAA8wAhpVgQ809.png-wh_50

最後附上所有節點的配置文件。如有錯誤請指正交了 [email protected].





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章