本文介紹ubuntun 14.04 LTS 下openstack trove集成安裝的步驟及配置。
1. 安裝
1.1 配置apt源:
echo “debhttp://ubuntu-cloud.archive.canonical.com/ubuntu/ trusty-updates/mitaka main”>/etc/apt/mitaka.list
apt-get -y installubuntu-cloud-keyring
apt-get update
1.2 創建trove數據庫
登錄到安裝後端數據庫的管理節點上,一般的生產環境中可能會部署在controller節點上,並且mysql本身是以HA方式部署的,因此登錄到任意一臺包含DB的節點上,進行如下操作即可。
mysql–u root –p;
CREATEDATABASE trove;
GRANTALL PRIVILEGES ON trove.* TO 'trove'@'localhost' IDENTIFIED BY 'TROVE_DBPASS';GRANTALL PRIVILEGES ON trove.* TO 'trove'@'%' IDENTIFIED BY 'TROVE_DBPASS';
替換TROVE_DBPASS爲合適的密碼;
1.3 創建trove service
bash運行openstack租戶環境變量管理員用戶腳本(admin.rc),包含類似如下內容:
OS_AUTH_KEY=”openstack”
OS_AUTH_URL=”http://localhost:5000/v2.0/”
OS_PASSWORD=”admin_pass”
OS_TENANT_NAME=”admin”
OS_USERNAME=”admin”
然後運行如下命令:
openstackuser create --domainlocal –password TROVE_PASS trove (替換local和TROVE_PASS 爲環境相應的值)
openstackservice create --name trove --description "Database" database
openstack endpoint create --region nova database public https://controller:8779/v1.0/%\(tenant_id\)s
openstack endpoint create --region nova database adminhttp://controller:8779/v1.0/%\(tenant_id\)s
openstack endpoint create --region nova database internalhttp://controller:8779/v1.0/%\(tenant_id\)s
(替換nova和controller爲環境中正確的region值和IP,一般情況下,生產環境中都會在前端做負載,因此controller 的IP一般爲一個VIP,可通過openstack catalog list查看其它服務的service IP查看)
1.4 安裝trove
在controller節點上執行:
apt-get install python-pexpect sqlite3 (注意:在執行該命令時,ubuntu官方源並不能完全安裝,需要安裝其它的源,比如163源,安裝完畢後,需要去掉該源,以避免後續的trove安裝)
apt-getinstall python-trove trove-common trove-api trove-taskmanager trove-conductor
1.5 安裝dashboard
pipinstall trove-dashboard==7.0.0.0b2
cp /usr/local/lib/python2.7/dist-packages/trove_dashboard/enabled/_[0-9]*.py*
/usr/share/openstack-dashboard/openstack_dashboard/local/enabled/
service apache2 restart
2.配置
vim /etc/trove/trove.conf
[DEFAULT]
bind_host = controller_ip
log_dir = /var/log/trove
network_label_regex = .*
ip_regex = .*
rpc_backend=rabbit
control_exchange = trove
trove_auth_url = http://controller_ip:5000/v2.0
nova_compute_url = http://controller_ip:8774/v2
cinder_url = http://controller_ip:8776/v1
swift_url = http://controller_ip:8880/v1/AUTH_
neutron_url = http://controller_ip:9696/
notifier_queue_hostname = controller_ip
os_region_name = nova
endpoint_type = pulic
service_type = object-store
trove_volume_support = True
block_device_mapping = sdb
device_path = /dev/sdb
# Maximum volume size for an instance
max_accepted_volume_size = 10 #根據實際情況更改
max_instances_per_tenant = 5 #根據實際情況更改
# Maximum volume capacity (in GB) spanning across all trove volumes per tenant
max_volumes_per_tenant = 100 #根據實際情況更改
max_backups_per_tenant = 5 #根據實際情況更改
volume_time_out=30
network_driver = trove.network.neutron.NeutronDriver
api_paste_config = /etc/trove/api-paste.ini
[keystone_authtoken]
auth_uri = http://controller_ip:5000
auth_url = http://controller_ip:35357
auth_type = password
project_domain_name = local
user_domain_name = local
project_name = service
username = trove
password =TROVE_PASS
[database]
connection = mysql://trove:TROVE_DBPASS@dbnode_ip/trove
[oslo_messaging_rabbit]
rabbit_hosts=rabbitnode1_ip, rabbitnode2_ip, rabbitnode3_ip
rabbit_port=5672
rabbit_userid = admin
rabbit_password = admin
2.2 配置trove-taskmanagervim /etc/trove/trove-taskmanager.conf
[DEFAULT] log_dir = /var/log/trove rpc_backend=rabbit control_exchange = trove trove_auth_url = http://172.16.12.112:5000/v2.0 nova_compute_url = http://172.16.12.112:8774/v2 cinder_url = http://172.16.12.112:8776/v1 swift_url = http://172.16.12.112:8880/v1/AUTH_ neutron_url = http://172.16.12.112:9696/ notifier_queue_hostname = 172.16.12.112 trove_volume_support = True block_device_mapping = sdb device_path = /dev/sdb mount_point = /var/lib/mysql use_nova_server_config_drive = True nova_proxy_admin_user = admin nova_proxy_admin_pass = Cloud/123 nova_proxy_admin_tenant_id = a2cf26b3bad0481f9fd7027b27d2c379 nova_proxy_admin_tenant_name = admin network_driver = trove.network.neutron.NeutronDriver network_label_regex = .* guest_config = /etc/trove/trove-guestagent.conf guest_info = guest_info.conf injected_config_location = /etc/trove [database] connection = mysql://trove:[email protected]/trove [oslo_messaging_rabbit] rabbit_host=172.16.12.112 rabbit_port=5672 rabbit_userid=admin rabbit_password = admin [mysql] tcp_ports = 22, 3306 volume_support = True device_path = /dev/sdb
vim /etc/trove/trove-conductor.conf
[DEFAULT]
trove_auth_url = http://172.16.12.112:5000/v2.0
#connection = sqlite:////var/lib/trove/trove.sqlite
log_dir = /var/log/trove
nova_compute_url = http://172.16.12.112:8774/v2
cinder_url = http://172.16.12.112:8776/v1
swift_url = http://172.16.12.112:8880/v1/AUTH_
neutron_url = http://172.16.12.112:9696/
notifier_queue_hostname = 172.16.12.112
rpc_backend = rabbit
control_exchange = trove
[database]
connection = mysql://trove:[email protected]/trove
[oslo_messaging_rabbit]
rabbit_host=172.16.12.112
rabbit_port=5672
rabbit_userid=admin
rabbit_password = admin
vim /etc/trove/trove-guestagent.conf
[DEFAULT]
control_exchange = trove
nova_proxy_admin_user = admin
nova_proxy_admin_pass = Cloud/123
nova_proxy_admin_tenant_name = admin
nova_proxy_admin_tenant_id = a2cf26b3bad0481f9fd7027b27d2c379
trove_auth_url = http://172.16.12.112:35357/v2.0
datastore_manager = mysql
swift_url = http://172.16.12.112:8880/v1/AUTH_
os_region_name = nova
swift_service_type = object-store
log_dir = /var/log/trove/
log_file = trove-guestagent.log
[oslo_messaging_rabbit]
rabbit_host=172.16.12.112
rabbit_port=5672
rabbit_userid=admin
rabbit_password = admin
2.5 數據庫同步
trove-managedb_sync