OpenStack File Share Service(Manila) For Centos
Introduction:
1.Create the database.
1
2
3
4
<code>mysql -u root -p</code>
<code>CREATE DATABASE manila;</code>
<code>GRANT ALL PRIVILEGES ON manila.* TO </code><code>'manila'</code><code>@</code><code>'localhost'</code><code>IDENTIFIED BY </code><code>'password'</code><code>;</code>
<code>GRANT ALL PRIVILEGES ON manila.* TO </code><code>'manila'</code><code>@</code><code>'%'</code><code>IDENTIFIED BY </code><code>'password'</code><code>;</code>
5
6
7
8
9
<code>openstack user create --password-prompt manila</code>
<code>openstack role add --project service --user manila admin</code>
<code>openstack service create --name manila --description</code><code>"OpenStack Shared Filesystems"</code> <code>share</code>
<code>openstack endpoint create \</code>
<code> </code><code>--publicurl http:</code><code>//x</code><code>.x.x.x:8786</code><code>/v1/</code><code>%\(tenant_id\)s \</code>
<code> </code><code>--internalurl http:</code><code>//x</code><code>.x.x.x:8786</code><code>/v1/</code><code>%\(tenant_id\)s \</code>
<code> </code><code>--adminurl http:</code><code>//x</code><code>.x.x.x:8786</code><code>/v1/</code><code>%\(tenant_id\)s \</code>
<code> </code><code>--region RegionOne \</code>
<code> </code><code>share</code>
3.Install required packages on controller node.openstack-manila-api and openstack-manila-scheduler services will run on thecontroller node.
<code>yum </code><code>install</code> <code>openstack-manila python-manilapython-manilaclient</code>
4.Installed required packages on compute node.openstack-manila-share service will run on the compute node.
<code>yum </code><code>install</code> <code>openstack-mania-share python-manila</code>
5. Edit the /etc/manila/manila.conf file and api-paste.ini
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<code>[DEFAULT]</code>
<code>osapi_share_listen=0.0.0.0</code>
<code>api_paste_config=</code><code>/etc/manila/api-paste</code><code>.ini</code>
<code>state_path=</code><code>/var/lib/manila</code>
<code>glance_host=X.X.X.X</code>
<code>storage_availability_zone=nova</code>
<code>rootwrap_config=</code><code>/etc/manila/rootwrap</code><code>.conf</code>
<code>auth_strategy=keystone</code>
<code>enabled_share_backends=backend1</code>
<code>nova_catalog_info=compute:nova:publicURL</code>
<code>nova_catalog_admin_info=compute:nova:adminURL</code>
<code>nova_api_insecure=False</code>
<code>nova_admin_username=nova</code>
<code>nova_admin_password=password</code>
<code>nova_admin_tenant_name=service</code>
<code>nova_admin_auth_url=http:</code><code>//X</code><code>.X.X.X:5000</code><code>/v2</code><code>.0</code>
<code>network_api_class=manila.network.neutron.neutron_network_plugin.NeutronNetworkPlugin</code>
<code>debug=True</code>
<code>verbose=True</code>
<code>log_dir=</code><code>/var/log/manila</code>
<code>use_syslog=False</code>
<code>rpc_backend=rabbit</code>
<code>control_exchange=openstack</code>
<code>amqp_durable_queues=False</code>
<code>cinder_catalog_info=volume:cinder:publicURL</code>
<code>neutron_api_insecure=False</code>
<code>cinder_admin_username=cinder</code>
<code>neutron_auth_strategy=keystone</code>
<code>cinder_admin_password=password</code>
<code>notification_driver=messaging</code>
<code>neutron_admin_tenant_name=service</code>
<code>cinder_cross_az_attach=True</code>
<code>neutron_url=http:</code><code>//X</code><code>.X.X.X:9696</code>
<code>cinder_api_insecure=False</code>
<code>cinder_admin_auth_url=http:</code><code>//X</code><code>.X.X.X:5000</code><code>/v2</code><code>.0</code>
<code>cinder_http_retries=3</code>
<code>cinder_admin_tenant_name=service</code>
<code>neutron_admin_password=password</code>
<code>neutron_admin_username=neutron</code>
<code>neutron_admin_auth_url=http:</code><code>//X</code><code>.X.X.X:5000</code><code>/v2</code><code>.0</code>
<code>neutron_url_timeout=30</code>
<code>default_share_type = default</code>
<code>sql_connection = mysql:</code><code>//manila</code><code>:[email protected]</code><code>/manila</code>
<code>[oslo_messaging_rabbit]</code>
<code>rabbit_host = controller</code>
<code>rabbit_userid = openstack</code>
<code>rabbit_password = password</code>
<code>[oslo_concurrency]</code>
<code>lock_path=</code><code>/var/lock/manila</code>
Warning!!!
This Manila Share Backend is configure on Manila Share node,So Manila-api and Manila-scheduler not configure.
<code>[backend1]</code>
<code>service_network_division_mask=28</code>
<code>volume_name_template=manila-share-%s</code>
<code>service_instance_network_helper_type=neutron</code>
<code>max_time_to_build_instance=300</code>
<code>share_mount_path=</code><code>/shares</code>
<code>manila_service_keypair_name=manila-service</code>
<code>service_network_name=manila_service_network</code>
<code>interface_driver=manila.network.linux.interface.OVSInterfaceDriver</code>
<code>service_network_cidr=10.254.0.0</code><code>/16</code>
<code>service_instance_flavor_id=100</code>
<code>service_instance_smb_config_path=$share_mount_path</code><code>/smb</code><code>.conf</code>
<code>volume_snapshot_name_template=manila-snapshot-%s</code>
<code>share_backend_name=backend1</code>
<code>smb_template_config_path=$state_path</code><code>/smb</code><code>.conf</code>
<code>service_instance_name_template=manila_service_instance_%s</code>
<code>driver_handles_share_servers = True</code>
<code>service_instance_user = manila</code>
<code>service_instance_password=manila</code>
<code>service_image_name = manila-service-image</code>
<code>path_to_private_key = </code><code>/root/</code><code>.</code><code>ssh</code><code>/id_rsa</code>
<code>path_to_public_key = </code><code>/root/</code><code>.</code><code>ssh</code><code>/id_rsa</code><code>.pub</code>
<code>share_backend_name = GENERIC1</code>
<code>share_driver = manila.share.drivers.generic.GenericShareDriver</code>
<code>share_helpers=CIFS=manila.share.drivers.generic.CIFSHelper,NFS=manila.share.drivers.generic.NFSHelper</code>
<code>share_volume_fstype=ext4</code>
<code>max_time_to_attach=120</code>
<code>service_instance_security_group=manila-service</code>
<code>connect_share_server_to_tenant_network=False</code>
<code>Replace </code><code>/etc/manila/api-paste</code><code>.ini,Configure Keystone authtoken.</code>
<code>service_protocol = http</code>
<code>service_host = X.X.X.X</code>
<code>service_port = 5000</code>
<code>auth_host = X.X.X.X</code>
<code>auth_port = 35357</code>
<code>auth_protocol = http</code>
<code>admin_tenant_name = service</code>
<code>admin_user = manila</code>
<code>admin_password = password</code>
<code>signing_dir = </code><code>/var/lib/manila</code>
<code>auth_uri=http:</code><code>//X</code><code>.X.X.X:5000/</code>
6.Populate the Manila Database.
<code>su</code> <code>-s </code><code>/bin/sh</code> <code>-c </code><code>"manila-manage db sync"</code> <code>manila</code>
7.Start and enable manila services.
<code>systemctl start openstack-manila-api</code>
<code>systemctl start openstack-manila-scheduler</code>
<code>systemctl </code><code>enable</code> <code>openstack-manila-api</code>
<code>systemctl </code><code>enable</code> <code>openstack-manila-scheduler</code>
<code>systemctl start openstack-manila-share</code>
<code>systemctl </code><code>enable</code> <code>openstack-manila-share</code>
8.Upload manila service imageto glance.
<code>wget https:</code><code>//github</code><code>.com</code><code>/uglide/manila-image-elements/releases/download/0</code><code>.1.0</code><code>/manila-service-image</code><code>.qcow2</code>
<code>glance image-create --name </code><code>"manila-service-image-new"</code> <code>--</code><code>file</code> <code>manila-service-image.qcow2 --disk-</code><code>format</code> <code>qcow2 --container-</code><code>format</code> <code>bare --visibility public --progress</code>
9.Create default share type.
<code>manila </code><code>type</code><code>-create default True</code>
10. Create Manila flavor type.
<code>nova flavor-create manila-service-flavor 100 128 0 1</code>
11. Create nova for manila Security Group.
<code>nova secgroup-create manila-service </code><code>'manila-service description'</code>
<code>nova secgroup-add-rule manila-service icmp -1 -1 0.0.0.0</code><code>/0</code>
<code>nova secgroup-add-rule manila-service tcp 22 22 0.0.0.0</code><code>/0</code>
<code>nova secgroup-add-rule manila-service tcp 2049 2049 0.0.0.0</code><code>/0</code>
<code>nova secgroup-add-rule manila-service udp 2049 2049 0.0.0.0</code><code>/0</code>
<code>nova secgroup-add-rule manila-service udp 445 445 0.0.0.0</code><code>/0</code>
<code>nova secgroup-add-rule manila-service tcp 445 445 0.0.0.0</code><code>/0</code>
<code>nova secgroup-add-rule manila-service tcp 137 139 0.0.0.0</code><code>/0</code>
<code>nova secgroup-add-rule manila-service udp 137 139 0.0.0.0</code><code>/0</code>
12. Create share network.
<code>manila share-network-create --name devinshare --neutron-net-</code><code>id</code> <code>XXXXXXX --neutron-subnet-</code><code>id</code> <code>XXXXXXX</code>
13. Create NFS share.
<code>manila create NFS 1 --name devin --share-network devinshare</code>
14. Configure Manila access.
<code>manila access-allow devin ip XXX(instance_ip) --access-level rw</code>
本文轉自Devin 51CTO部落格,原文連結:http://blog.51cto.com/devingeng/1745324