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如何開啓:
具體配置開始:
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))
現在正是開始:
一. 所有節點都要安裝和配置的基礎環境
系統安裝完成之後,所有節點關掉防火牆,關掉selinux,設置好root密碼
systemctl stop firewalld.service
vi /etc/sysconfig/selinux 將enforce改成disabled
設置好root密碼:我的root密碼統一設置爲adm*123,爲了方便和不出差錯,我將以後的數據庫的密碼和keystone ,glance,rabbitmq,nova,cinder的密碼都設置爲adm*123
所有節點添加主機名解析:/etc/hosts
設置主機名:
Controller節點:hostnamectl set-hostname controller
Compute 節點:hostnamectl set-hostname compute
Cinder 節點:hostnamectlset-hostname cinder
3. 登錄到每個節點將主機名添加解析:
vi /etc/hosts加入:
添加時間同步:
在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 ,看返回結果
我的返回結果:
創建admin 管理用戶和demo普通用戶的環境腳本:
我的admin腳本內容:
我的demo腳本內容:
直接執行
. 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
你可以看到你剛剛長傳完成的鏡像,我上傳了幾個鏡像。我的輸出:
五 在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
我的輸出:
七 安裝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
我的配置:
配置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
我的配置:
配置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
我的配置:
配置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
我的輸出:
八 安裝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了。
注意:現在只是可以通過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
看輸出結果
我的結果爲:
到現在爲止,我們可以創建虛擬機。
再次之前我們需要創建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
由於我做這個時候沒有截圖,所以截圖使用來自網上,請諒解:
創建了網絡之後創建路由,虛擬機纔可以通網。
在dashboard裏面點擊項目—網絡—路由—新建路由即可。
到此你可以上傳你製作好的鏡像,創建你的虛擬機了(鏡像可以在晚上去下載,也可以自己製作,網上的大神多得很 哈哈)。
最後總結一下自己遇到的問題:
在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
最後是新加一個乾淨的磁盤,重新配置解決。
在nova和neutron的時候,出現401的授權錯誤
查看日誌
查看配置文件
刪除用戶,重新建立
我的屬於第三種,沒有任何問題,就是刪除之後,重新建立解決。
3 在安裝虛擬的時候不要使用iso文件去安裝,一定要自己製作的鏡像(不知道的可以網上找,多得你數不清),我使用centos7dvd版本的iso安裝文件去安裝,始終沒有辦法進入系統,安裝完成之後重啓還是進入安裝界面。
附上我的dashboard的幾個截圖:
最後附上所有節點的配置文件。如有錯誤請指正交了 [email protected].