中文
注册

安装配置并验证Swift

Swift对象存储,负责存储和检索随机非结构化的数据对象。因为多副本和弹性扩展等特点,使其具备高度容错功能。与传统的数据存储目录树形式有区别,对象和文件数据保存在多个驱动器中。

配置名称解析

在控制节点和存储节点执行以下操作。

  1. 将第一个存储节点的主机名称设置为object1。
    1
    hostnamectl set-hostname object1
    

    如果有多个对象存储节点则依次设置为object2,object3…本实例中仅使用一个对象存储节点。

  2. 编辑配置文件“vim /etc/hosts”文件,需要包含以下内容:
    1
    2
    3
    172.168.201.11  controller
    172.168.201.12  compute
    172.168.201.13  object1
    
  3. 重新启动系统以激活更改。

先决环境配置(控制节点)

在控制节点执行以下操作。

  1. 使用admin用户登录OpenStack命令行。
    1
    source /etc/keystone/admin-openrc
    
  2. 创建Identity Service凭据。
    1. 创建swift用户。
      1
      openstack user create --domain default --password-prompt swift
      

    2. 将admin角色添加到swift用户。
      1
      openstack role add --project service --user swift admin
      
    3. 创建swift服务实体。
      1
      openstack service create --name swift --description "OpenStack Object Storage" object-store
      

  3. 创建对象存储服务API端点。
    1
    2
    3
    openstack endpoint create --region RegionOne object-store public http://controller:8080/v1/AUTH_%\(project_id\)s
    openstack endpoint create --region RegionOne object-store internal http://controller:8080/v1/AUTH_%\(project_id\)s
    openstack endpoint create --region RegionOne object-store admin http://controller:8080/v1
    

安装和配置组件(控制节点)

在控制节点执行以下操作。

  1. 安装包。
    1
    yum -y install openstack-swift-proxy python-swiftclient python-keystoneclient python-keystonemiddleware memcached
    
  2. 从对象存储源存储库获取代理服务配置文件。
    1
    curl -o /etc/swift/proxy-server.conf https://opendev.org/openstack/swift/raw/branch/stable/stein/etc/proxy-server.conf-sample  --insecure
    

    OpenStack Rocky版本需把stein换成相应的rocky。

  3. 编辑配置文件“/etc/swift/proxy-server.conf”并完成以下操作:
    1
    vim /etc/swift/proxy-server.conf
    
    1. 配置绑定端口,用户和配置目录。
      1
      2
      3
      4
      [DEFAULT]
      bind_port = 8080
      user = swift
      swift_dir = /etc/swift
      
    2. 在该[pipeline:main]部分中,删除“tempurl”和“tempauth”模块并添加“authtoken”和“keystoneauth”模块。
      1
      2
      [pipeline:main]
      pipeline = catch_errors gatekeeper healthcheck proxy-logging cache container_sync bulk ratelimit authtoken keystoneauth container-quotas account-quotas slo dlo versioned_writes proxy-logging proxy-server
      
    3. 在该[app:proxy-server]部分中,启用自动账户创建。
      1
      2
      3
      [app:proxy-server]
      use = egg:swift#proxy
      account_autocreate = True
      
    4. 在该[filter:keystoneauth]部分中,配置操作员角色。
      1
      2
      3
      [filter:keystoneauth]
      use = egg:swift#keystoneauth
      operator_roles = admin,user
      
    5. 在该[filter:authtoken]部分中,配置身份服务访问(注释掉或删除该[filter:authtoken] 部分中的任何其他配置项)。
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      [filter:authtoken]
      paste.filter_factory = keystonemiddleware.auth_token:filter_factory
      www_authenticate_uri = http://controller:5000
      auth_url = http://controller:5000/v3/
      memcached_servers = controller:11211
      auth_type = password
      project_domain_id = default
      user_domain_id = default
      project_name = service
      username = swift
      password = <PASSWORD>
      delay_auth_decision = True
      

      为方便理解,本文将涉及到的密码全部以“<PASSWORD>”代替,请用户根据实际情况进行修改。此处密码是在先决环境配置(控制节点)中,为swift用户创建的密码。

    6. 在该[filter:cache]部分中,配置memcached位置。
      1
      2
      3
      [filter:cache]
      use = egg:swift#memcache
      memcache_servers = controller:11211
      

先决环境配置(存储节点)

在存储节点执行以下操作。

  1. 安装支持实用程序包。
    1
    yum -y install xfsprogs rsync
    

  2. 格式化“/dev/sdb”和“/dev/sdc”设备的XFS。
    1
    2
    mkfs.xfs /dev/sdb
    mkfs.xfs /dev/sdc
    

    sdb和sdc不能是系统盘,是需要另外添加的硬盘。

  3. 创建挂载点目录结构。
    1
    2
    mkdir -p /srv/node/sdb
    mkdir -p /srv/node/sdc
    
  4. 编辑“/etc/fstab”文件并将以下内容添加到其中。
    1
    2
    /dev/sdb /srv/node/sdb xfs noatime,nodiratime,nobarrier,logbufs=8 0 2
    /dev/sdc /srv/node/sdc xfs noatime,nodiratime,nobarrier,logbufs=8 0 2
    
  5. 安装设备。
    1
    2
    mount /dev/sdb /srv/node/sdb
    mount /dev/sdc /srv/node/sdc
    
  6. 创建或编辑“/etc/rsyncd.conf”文件以包含以下内容。
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    uid = swift
    gid = swift
    log file = /var/log/rsyncd.log
    pid file = /var/run/rsyncd.pid
    address = 172.168.201.13
    [account]
    max connections = 2
    path = /srv/node/
    read only = False
    lock file = /var/lock/account.lock
    [container]
    max connections = 2
    path = /srv/node/
    read only = False
    lock file = /var/lock/container.lock
    [object]
    max connections = 2
    path = /srv/node/
    read only = False
    lock file = /var/lock/object.lock
    

    address为存储节点的管理网络的IP地址。

  7. 启动rsyncd服务并将其配置为在系统引导时启动。
    1
    2
    systemctl enable rsyncd.service
    systemctl start rsyncd.service
    

安装和配置组件(存储节点)

在存储节点执行以下操作。

  1. 如果没有安装过,需要先安装OpenStack Stein包,否则下一步无法安装。
    1. 清空Yum缓存。
      1
      yum clean all
      
    2. 安装OpenStack Stein软件包。
      1
      yum -y install centos-release-openstack-stein
      

      OpenStack Rocky版本请装相应的软件包。

      yum -y install centos-release-openstack-rocky
  2. 安装Swift软件包。
    1
    2
    yum -y install openstack-swift-account openstack-swift-container \
    openstack-swift-object
    
  3. 从对象存储源存储库获取记帐,容器和对象服务配置文件。
    1
    2
    3
    curl -o /etc/swift/account-server.conf https://opendev.org/openstack/swift/raw/branch/stable/stein/etc/account-server.conf-sample
    curl -o /etc/swift/container-server.conf https://opendev.org/openstack/swift/raw/branch/stable/stein/etc/container-server.conf-sample
    curl -o /etc/swift/object-server.conf https://opendev.org/openstack/swift/raw/branch/stable/stein/etc/object-server.conf-sample
    

    OpenStack Rocky版本需把stein换成相应的rocky。

  4. 编辑配置文件“/etc/swift/account-server.conf”并完成以下操作:
    1
    vim /etc/swift/account-server.conf
    
    1. 在本[DEFAULT]节中,配置绑定IP地址,绑定端口,用户,配置目录和挂载点目录。
      1
      2
      3
      4
      5
      6
      7
      [DEFAULT]
      bind_ip = 172.168.201.13
      bind_port = 6202
      user = swift
      swift_dir = /etc/swift
      devices = /srv/node
      mount_check = True
      

      bind_ip为存储节点上管理网络的IP地址。

    2. 在该[pipeline:main]部分中,启用相应的模块。
      1
      2
      [pipeline:main]
      pipeline = healthcheck recon account-server
      
    3. 在该[filter:recon]部分中,配置recon(米)缓存目录。
      1
      2
      3
      [filter:recon]
      use = egg:swift#recon
      recon_cache_path = /var/cache/swift
      
  5. 编辑配置文件“/etc/swift/container-server.conf”并完成以下操作:
    1
    vim /etc/swift/container-server.conf
    
    1. 在本[DEFAULT]节中,配置绑定IP地址,绑定端口,用户,配置目录和挂载点目录。
      1
      2
      3
      4
      5
      6
      7
      [DEFAULT]
      bind_ip = 172.168.201.13
      bind_port = 6201
      user = swift
      swift_dir = /etc/swift
      devices = /srv/node
      mount_check = True
      

      bind_ip为存储节点上管理网络的IP地址。

    2. 在该[pipeline:main]部分中,启用相应的模块。
      1
      2
      [pipeline:main]
      pipeline = healthcheck recon container-server
      
    3. 在该[filter:recon]部分中,配置recon缓存目录。
      1
      2
      3
      [filter:recon]
      use = egg:swift#recon
      recon_cache_path = /var/cache/swift
      
  6. 编辑配置文件“/etc/swift/object-server.conf”并完成以下操作:
    1
    vim /etc/swift/object-server.conf
    
    1. 在本[DEFAULT]节中,配置绑定IP地址,绑定端口,用户,配置目录和挂载点目录。
      1
      2
      3
      4
      5
      6
      7
      [DEFAULT]
      bind_ip = 172.168.201.13
      bind_port = 6200
      user = swift
      swift_dir = /etc/swift
      devices = /srv/node
      mount_check = True
      

      bind_ip为存储节点上管理网络的IP地址。

    2. 在该[pipeline:main]部分中,启用相应的模块。
      1
      2
      [pipeline:main]
      pipeline = healthcheck recon object-server
      
    3. 在该[filter:recon]部分中,配置recon(米)缓存和锁定目录。
      1
      2
      3
      4
      [filter:recon]
      use = egg:swift#recon
      recon_cache_path = /var/cache/swift
      recon_lock_path = /var/lock
      
    4. 确保安装点目录结构的正确所有权。
      1
      2
      chown -R swift:swift /srv/node
      sudo restorecon -R /srv
      
    5. 创建recon目录并设置其权限。
      1
      2
      3
      mkdir -p /var/cache/swift
      chown -R root:swift /var/cache/swift
      chmod -R 775 /var/cache/swift
      

创建账户环

在控制节点执行以下操作。

  1. 切换到“/etc/swift”目录。
    1
    cd /etc/swift
    
  2. 创建基本account.builder文件。
    1
    swift-ring-builder account.builder create 10 2 1
    
  3. 将每个存储节点添加到环中。
    1
    2
    swift-ring-builder account.builder add --region 1 --zone 1 --ip 172.168.201.13 --port 6202 --device sdb --weight 100
    swift-ring-builder account.builder add --region 1 --zone 1 --ip 172.168.201.13 --port 6202 --device sdc --weight 100
    

    此处--ip后面为存储节点的管理IP地址。

  4. 验证账户环环内容。
    1
    swift-ring-builder account.builder
    
  5. 重新平衡环。
    1
    swift-ring-builder account.builder rebalance
    

创建容器环

在控制节点执行以下操作。

  1. 切换到“/etc/swift”目录。
    1
    cd /etc/swift
    
  2. 创建基本container.builder文件。
    1
    swift-ring-builder container.builder create 10 2 1
    
  3. 将每个存储节点添加到环中。
    1
    2
    swift-ring-builder container.builder add --region 1 --zone 1 --ip 172.168.201.13 --port 6201 --device sdb --weight 100
    swift-ring-builder container.builder add --region 1 --zone 1 --ip 172.168.201.13 --port 6201 --device sdc --weight 100
    

    此处--ip后面为存储节点的管理IP地址。

  4. 验证容器环内容。
    1
    swift-ring-builder container.builder
    
  5. 重新平衡环。
    1
    swift-ring-builder container.builder rebalance
    

创建对象环

在控制节点执行以下操作。

  1. 切换到“/etc/swift”目录。
    1
    cd /etc/swift
    
  2. 创建基本“object.builder”文件。
    1
    swift-ring-builder object.builder create 10 2 1
    
  3. 将每个存储节点添加到环中:
    1
    2
    swift-ring-builder object.builder add --region 1 --zone 1 --ip 172.168.201.13 --port 6200 --device sdb --weight 100
    swift-ring-builder object.builder add --region 1 --zone 1 --ip 172.168.201.13 --port 6200 --device sdc --weight 100
    

    此处--ip后面为存储节点的管理IP地址。

  4. 验证对象环内容。
    1
    swift-ring-builder object.builder
    
  5. 重新平衡环。
    1
    swift-ring-builder object.builder rebalance
    

分配环配置文件

在控制节点执行以下操作。

将生成的副本“account.ring.gz”、“container.ring.gz”以及“object.ring.gz”文件复制到“/etc/swift”每个存储节点和运行代理服务的任何其他节点上目录。

1
2
cd /etc/swift/
scp -r ./*.gz root@object1:/etc/swift/

修改配置

在控制节点执行以下操作。

  1. “/etc/swift/swift.conf”从Object Storage源存储库获取文件。
    1
    curl -o /etc/swift/swift.conf \https://opendev.org/openstack/swift/raw/branch/stable/stein/etc/swift.conf-sample
    

    OpenStack Rocky版本需把stein换成相应的rocky。

  2. 编辑配置文件“/etc/swift/swift.conf”并完成以下操作:
    1
    vim /etc/swift/swift.conf
    
    1. 在该[swift-hash]部分中,为您的环境配置哈希路径前缀和后缀。
      1
      2
      3
      [swift-hash]
      swift_hash_path_suffix = <PASSWORD>
      swift_hash_path_prefix = <PASSWORD>
      

      此处的两个<PASSWORD>可以换成任意唯一字符串。

    2. 在该[storage-policy:0]部分中,配置默认存储策略。
      1
      2
      3
      [storage-policy:0]
      name = Policy-0
      default = yes
      
  3. 将swift.conf文件复制到每个存储节点上的“/etc/swift”目录下面,如果有多个控制节点,也需要复制到其他控制节点上的“/etc/swift”目录下。

启动服务

在控制节点和存储节点执行以下操作。

  1. 在所有节点上,确保配置目录的正确所有权。
    1
    chown -R root:swift /etc/swift
    
  2. 在控制器节点和运行代理服务的任何其他节点上,启动对象存储代理服务(包括其依赖项)并将其配置为在系统引导时启动。
    1
    2
    systemctl enable openstack-swift-proxy.service memcached.service
    systemctl start openstack-swift-proxy.service memcached.service
    
  3. 在存储节点上,启动对象存储服务并将其配置为在系统引导时启动。
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    systemctl enable openstack-swift-account.service openstack-swift-account-auditor.service \
    openstack-swift-account-reaper.service openstack-swift-account-replicator.service
    systemctl start openstack-swift-account.service openstack-swift-account-auditor.service \
    openstack-swift-account-reaper.service openstack-swift-account-replicator.service
    systemctl status openstack-swift-account.service openstack-swift-account-auditor.service \
    openstack-swift-account-reaper.service openstack-swift-account-replicator.service
    
    systemctl enable openstack-swift-container.service \
    openstack-swift-container-auditor.service openstack-swift-container-replicator.service \
    openstack-swift-container-updater.service
    systemctl start openstack-swift-container.service \
    openstack-swift-container-auditor.service openstack-swift-container-replicator.service \
    openstack-swift-container-updater.service
    systemctl status openstack-swift-container.service \
    openstack-swift-container-auditor.service openstack-swift-container-replicator.service \
    openstack-swift-container-updater.service
    
    systemctl enable openstack-swift-object.service openstack-swift-object-auditor.service \
    openstack-swift-object-replicator.service openstack-swift-object-updater.service
    systemctl start openstack-swift-object.service openstack-swift-object-auditor.service \
    openstack-swift-object-replicator.service openstack-swift-object-updater.service
    systemctl status openstack-swift-object.service openstack-swift-object-auditor.service \
    openstack-swift-object-replicator.service openstack-swift-object-updater.service
    

验证

在控制节点执行以下操作。

  1. 使用admin用户登录OpenStack命令行。
    1
    source /etc/keystone/admin-openrc
    
  2. 显示服务状态。
    1
    swift stat
    

  3. 创建container1容器。
    1
    openstack container create container1
    
  4. 将测试文件上传到container1容器。
    1
    openstack object create container1 FILE
    
  5. 列出container1容器中的文件。
    1
    openstack object list container1
    

  6. 从container1容器下载测试文件。
    1
    openstack object save container1 FILE
    

Swift常用命令

命令行

功能描述

swift stat

显示swift服务状态

openstack container create container1

创建存储容器

openstack object create container1 FILE

上传文件到存储容器

openstack container delete container1

删除存储容器

openstack object list container1

列出容器中的文件

openstack object save container1 FILE

从容器中下载文件

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词