openvstorage / framework

The Framework is a set of components and tools which brings the user an interface (GUI / API) to setup, extend and manage an Open vStorage platform.
Other
27 stars 23 forks source link

Integrate volumedriver fencing #970

Closed khenderick closed 7 years ago

khenderick commented 7 years ago

Integrate volumedriver fencing: https://github.com/openvstorage/volumedriver/pull/120

khenderick commented 7 years ago

Remark: check for compatible alba version to be integrated at the same time.

khenderick commented 7 years ago

We can only enable this flag when used with an Alba backend.

khenderick commented 7 years ago

Fixed by #996, packaged in openvstorage-2.7.4-rev.4084.68cc098

JeffreyDevloo commented 7 years ago

Information

The change in framework introduced a new parameter 'vrouter_use_fencing' in the volumedriver config. This parameter should default to 'false' by the volumedriver but framework will configure it to 'true' by default.

Steps

Output

Manually

{
    "content_addressed_cache": {
        "read_cache_serialization_path": [], 
        "serialize_read_cache": false
    }, 
    "backend_connection_manager": {
        "backend_interface_retries_on_error": 5, 
        "alba_connection_preset": "default", 
        "backend_type": "ALBA", 
        "alba_connection_transport": "TCP", 
        "alba_connection_timeout": 15, 
        "backend_interface_retry_backoff_multiplier": 2.0, 
        "backend_interface_retry_interval_secs": 1, 
        "alba_connection_host": "10.100.199.151", 
        "alba_connection_port": 26204
    }, 
    "distributed_lock_store": {
        "dls_arakoon_cluster_nodes": [
            {
                "host": "10.100.199.151", 
                "node_id": "DRvbRRQZXE1eouKs", 
                "port": 26408
            }
        ], 
        "dls_arakoon_cluster_id": "voldrv", a
        "dls_type": "Arakoon"
    }, 
    "volume_registry": {
        "vregistry_arakoon_cluster_id": "voldrv", 
        "vregistry_arakoon_cluster_nodes": [
            {
                "host": "10.100.199.151", 
                "node_id": "DRvbRRQZXE1eouKs", 
                "port": 26408
            }
        ]
    }, 
    "volume_router_cluster": {
        "vrouter_cluster_id": "73b2b485-47e3-4455-b23d-b930bec87bd3"
    }, 
    "volume_router": {
        "vrouter_migrate_timeout_ms": 5000, 
        "vrouter_sco_multiplier": 1024, 
        "vrouter_volume_read_threshold": 1024, 
        "vrouter_id": "myvpool01DRvbRRQZXE1eouKs", 
        "vrouter_use_fencing": true, 
        "vrouter_file_write_threshold": 1024, 
        "vrouter_volume_write_threshold": 1024, 
        "vrouter_max_workers": 16, 
        "vrouter_min_workers": 4, 
        "vrouter_routing_retries": 10, 
        "vrouter_backend_sync_timeout_ms": 5000, 
        "vrouter_redirect_timeout_ms": "5000", 
        "vrouter_file_read_threshold": 1024
    }, 
    "volume_manager": {
        "clean_interval": 1, 
        "tlog_path": "/mnt/hdd1/myvpool01_db_tlog_1", 
        "non_disposable_scos_factor": 2.0, 
        "metadata_path": "/mnt/hdd1/myvpool01_db_md_1", 
        "number_of_scos_in_tlog": 16, 
        "default_cluster_size": 4096, 
        "dtl_throttle_usecs": 4000
    }, 
    "scocache": {
        "trigger_gap": "1GB", 
        "backoff_gap": "2GB", 
        "scocache_mount_points": [
            {
                "path": "/mnt/hdd1/myvpool01_write_sco_1", 
                "size": "45211648KiB"
            }
        ]
    }, 
    "filesystem": {
        "fs_raw_disk_suffix": ".raw", 
        "fs_enable_shm_interface": 0, 
        "fs_metadata_backend_arakoon_cluster_nodes": [], 
        "fs_dtl_mode": "Asynchronous", 
        "fs_metadata_backend_mds_nodes": [
            {
                "host": "10.100.199.151", 
                "port": 26300
            }
        ], 
        "fs_metadata_backend_type": "MDS", 
        "fs_virtual_disk_format": "raw", 
        "fs_enable_network_interface": 1, 
        "fs_dtl_config_mode": "Automatic", 
        "fs_dtl_host": ""
    }, 
    "file_driver": {
        "fd_extent_cache_capacity": "1024", 
        "fd_namespace": "fd-myvpool01-73b2b485-47e3-4455-b23d-b930bec87bd3", 
        "fd_cache_path": "/mnt/hdd1/myvpool01_write_fd_1"
    }, 
    "threadpool_component": {
        "num_threads": 16
    }, 
    "event_publisher": {
        "events_amqp_routing_key": "volumerouter", 
        "events_amqp_uris": [
            {
                "amqp_uri": "amqp://ovs:0penv5tor4ge@10.100.199.153"
            }, 
            {
                "amqp_uri": "amqp://ovs:0penv5tor4ge@10.100.199.151"
            }, 
            {
                "amqp_uri": "amqp://ovs:0penv5tor4ge@10.100.199.152"
            }
        ]
    }, 
    "metadata_server": {
        "mds_nodes": [
            {
                "host": "10.100.199.151", 
                "scratch_directory": "/mnt/hdd1/myvpool01_db_mds_1", 
                "port": 26300, 
                "db_directory": "/mnt/hdd1/myvpool01_db_mds_1"
            }
        ]
    }, 
    "distributed_transaction_log": {
        "dtl_path": "/mnt/hdd1/myvpool01_write_dtl_1", 
        "dtl_transport": "TCP"
    }
}

Found

"volume_router": {
        "vrouter_migrate_timeout_ms": 5000, 
        "vrouter_sco_multiplier": 1024, 
        "vrouter_volume_read_threshold": 1024, 
        "vrouter_id": "myvpool01DRvbRRQZXE1eouKs", 
        "vrouter_use_fencing": true,                                                <--------
        "vrouter_file_write_threshold": 1024, 
        "vrouter_volume_write_threshold": 1024, 
        "vrouter_max_workers": 16, 
        "vrouter_min_workers": 4, 
        "vrouter_routing_retries": 10, 
        "vrouter_backend_sync_timeout_ms": 5000, 
        "vrouter_redirect_timeout_ms": "5000", 
        "vrouter_file_read_threshold": 1024
    }, 

Code wise

sdc = StorageDriverConfiguration('storagedriver', vdisk.vpool_guid, vdisk.storagedriver_id)
sdc.load()
if 'vrouter_use_fencing' in sdc.configuration.get('volume_router'):
    print 'Parameter in config'
    if sdc.configuration.get('volume_router')['vrouter_use_fencing'] is True:
        print 'Parameter set to the default value'

Code above gives:

Parameter in config
Parameter set to the default value

Test result

Test passed.

Packages

Tested for Ubuntu 16.04.