一、节点准备
node0 |
controller |
centos7.2 |
node1 |
trove |
|
node3 |
nova |
|
node5 |
cinder |
|
node7 |
neutron |
二、安装keystone,nova,neutron,cinder
使用kolla 在node0,node3,node5,node7上安装keystone,nova,neutron,cinder
三、在node1上安装trove
1、预安装软件
yum insall epel-release -y yum install python-virtualenv git screen -y # 安装过程中会用到gcc yum install gcc -y # trove的安装中,pycrypto没有安装,需要手动安装,否则会报no modules pip install pycrypto wrapt==1.10.8
2、编辑/etc/pip.conf
[global] index-url = http://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com
3、创建用户
useradd -m a
4、初始环境
su - a virtualenv ven/bin/activate pip install pip --upgrade
5、下载并安装trove
git clone https://github.com/openstack/trove.git cd trove git checkout stable/newton pip install -r requirements.txt # 如果使用python setup.py develop将不会安装trove时python的path,使用作一个指向 # python setup.py develop python setup.py install
6、创建数据库
mysql -hmariadb_host -uroot -p CREATE DATABASE trove; GRANT ALL PRIVILEGES ON trove.* TO 'trove'@'%' IDENTIFIED BY '123456';
7、创建trove的user,endpoint
# user openstack user create --domain default --password-prompt trove openstack role add --project service --user trove admin openstack user set --project service trove # service openstack service create --name trove \ --description "Database" database # endpoint openstack endpoint create --region RegionOne \ database public http://node1_ip:8779/v1.0/%\(tenant_id\)s openstack endpoint create --region RegionOne \ database internal http://node1_ip:8779/v1.0/%\(tenant_id\)s openstack endpoint create --region RegionOne \ database admin http://node1_ip:8779/v1.0/%\(tenant_id\)s
8、准备配置文件
mkdir -p ~/log/trove mkdir -p /etc/trove cd trove cp etc/trove/trove.conf.sample /etc/trove/trove.conf cp etc/trove/api-paste.ini /etc/trove/ cp etc/trove/trove-taskmanager.conf.sample /etc/trove/trove-taskmanager.conf cp etc/trove/trove-guestagent.conf.sample /etc/trove/trove-guestagent.conf cp etc/trove/trove-conductor.conf.sample /etc/trove/trove-conductor.conf cd /etc/trove
9、配置trove
编辑 trove.conf, trove-taskmanager.conf and trove-conductor.conf
[DEFAULT] log_dir = /home/a/log/trove log_file = trove-api.log 如果是trove-taskmanager.conf log_file = trove-taskmanager.log 如果是trove-conductor.conf log_file = trove-conductor.log auth_strategy = keystone trove_auth_url = http://node0_ip:5000/v2.0 nova_compute_url = http://node0_ip:8774/v2 cinder_url = http://node0_ip:8776/v1 # traskmanager.conf中未配置些项 #swift_url = http://node0_ip:8080/v1/AUTH_ notifier_queue_hostname = node0_ip [database] connection = mysql+pymysql://trove:123456@node0_ip/trove [DEFAULT] rpc_backend=rabbit [oslo_messaging_rabbit] rabbit_host=node0_ip rabbit_port=5672 rabbit_userid=openstack rabbit_password=rabbit_password
编辑trove.conf
[DEFAULT] auth_strategy = keystone add_addresses = True # network_label_regex = ^NETWORK_LABEL$ # nova-network 配置此项 network_label_regex = .* # neutron 配置此项 api_paste_config = /etc/trove/api-paste.ini max_accepted_volume_size = 10 # 每instance可以使用最大cinder volume size [keystone_authtoken] ... auth_uri = http://node0_ip:5000 auth_url = http://node0_ip:35357 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = trove password = 123456
编辑trove-taskmanager.conf
[DEFAULT] nova_proxy_admin_user = trove nova_proxy_admin_pass = TROVE_PASS nova_proxy_admin_tenant_name = service taskmanager_manager = trove.taskmanager.manager.Manager #nova_proxy_admin_tenant_id = network_driver = trove.network.nova.NovaNetwork default_neutron_networks = # 若启用安全组,创建trove实例中会有报错,"From port must be an integer." trove_security_groups_support = False # 如果在guest agent运行在centos7中,需要配置以下几项 guest_config = /etc/trove/trove-guestagent.conf guest_info = guest_info injected_config_location = /etc/trove/ cloudinit_location = /etc/trove/cloudinit
编辑 trove-guestagent.conf
[DEFAULT] log_dir = /var/log/trove/ #log_file = logfile.txt #log_config_append = /etc/trove/trove-logging-guestagent.conf #log_dir = /home/a/log/trove/ log_file = trove-guestagent.log rpc_backend=rabbit [oslo_messaging_rabbit] rabbit_host=node0_ip rabbit_port=5672 rabbit_userid=openstack rabbit_password = rabbit_password [DEFAULT] nova_proxy_admin_user = admin nova_proxy_admin_pass = ADMIN_PASS nova_proxy_admin_tenant_name = service trove_auth_url = http://node0_ip:35357/v2.0
10、 Populate trove database
trove-manage --config-file /etc/trove/trove.conf db_sync
11、 启动servie
su - a screen -S trove-api trove-api \ --config-file /etc/trove/trove.conf screen -S trove-taskmanager trove-taskmanager \ --config-file /etc/trove/trove-taskmanager.conf screen -S trove-conductor trove-conductor \ --config-file /etc/trove/trove-conductor.conf
四、使用trove
1、下载并上传mysql p_w_picpath
wget http://tarballs.openstack.org/trove/p_w_picpaths/ubuntu/mysql.qcow2 glance p_w_picpath-create --name "mysqlTest" --disk-format qcow2 \ --container-format bare \ --file mysql.qcow2
2、Create a datastore
trove-manage \ --config-file /etc/trove/trove.conf \ datastore_update mysql ''
3、Update the datastore to use the new p_w_picpath
# glance_p_w_picpath_ID替换为上面mysqlTest的ID,glance_p_w_picpath_ID后面的有一对单引号,引号间无空白字符 trove-manage --config-file /etc/trove/trove.conf \ datastore_version_update \ mysql mysql-5.6 mysql glance_p_w_picpath_ID '' 1
4、创建一个mysql实例
# mysql_instance_1后面的2为flavor的ID,可替换为别的flovar id,--size 为cinder volume的大小 trove create mysql_instance_1 2 --size 5 --databases myDB \ --users userA:password --datastore_version mysql-5.6 \ --datastore mysql
五、补充说明
1、20170105补充说明
在20170105,python-novaclient已经发布7.0.0,在源码安装trove过程中,默认安装python-novaclient(7.0.0),导致trove list报错,需要将python-novaclient替换为6.0.0
pip uninstall python-novaclient pip install python-novaclient==6.0.0
2、20170419补充说明
在20170419,newton 中的bug,导致trove list报错,此bug已经在ocata中修复
stable/newton 6a7d1aa
trove/common/remote.py 101行
client = Client(CONF.nova_client_version, context.user, context.auth_token, bypass_url=url, tenant_id=context.tenant, auth_url=PROXY_AUTH_URL)
context.auth_token需要修改为auth_token=contex.auth_token,Client第三个参数为password,传入contex.auth_token会导致keytone认证失败。