+++ title = "swift 安装过程(queen)" date = 2019-01-08T00:00:00+08:00 lastmod = 2019-01-09T16:27:38+08:00 tags = ["openstack", "swift", "install"] categories = ["openstack"] draft = false weight = 3001 +++

主要记录一下根据官方文档安装过程中遇到的一些小的问题。

env

os: 均为 ubuntu server 16.04 controller node:

  • 192.168.100.50

网络适配器 3 个:

  • VMnet0
  • VMnet1
  • VMnet8(NAT)

storage node:

  • 192.168.100.105
  • 192.168.100.106
  • 192.168.100.107

各节点网络适配器相同,2个:

  • VMnet0
  • VMnet1

注意:钱工说 VMnet0 就是桥接网络

以 storage node 中的 IP 为 192.168.100.107 为例子,展示一下 /etc/hosts 文件 。

ubuntu@swift107:~$ cat /etc/hosts
127.0.0.1    localhost
127.0.0.1    swift107
127.0.1.1    ubuntu
# controller
192.168.100.50    controller
# storage
192.168.100.105    swift105
192.168.100.106    swift106
192.168.100.107    swift107

官方文档这里只显示了 storage node :

  • 10.0.0.51 object1
  • 10.0.0.52 object2

step

environment networking

https://docs.openstack.org/swift/queens/install/environment-networking.html

这里记录的2个节点,均指存储节点(storage node). 官方文档这里对每个节点均设置了2个硬盘(/dev/sdb, /dev/sdb).

storage node

https://docs.openstack.org/swift/queens/install/storage-install-ubuntu-debian.html

storage node 可以使用已挂载硬盘的某个新分区

Format the /dev/sdb and /dev/sdc devices as XFS:

$ mkfs.xfs /dev/sda6

storage node 中的 MANAGEMENT_INTERFACE_IP_ADDRESS

https://docs.openstack.org/swift/queens/install/storage-install-ubuntu-debian.html#install-and-configure-components

Replace MANAGEMENT_INTERFACE_IP_ADDRESS with the IP address of the management network on the storage node. 这里的 MANAGEMENT_INTERFACE_IP_ADDRESS 应该理解为 storage node 上的对应与 management network 中的IP,也就是 192.168.100.105 之类的IP

rings

https://docs.openstack.org/swift/queens/install/initial-rings.html#distribute-ring-configuration-files

这一步不要忘记了。也就是把 controller node 中的 account.ring.gz, container.ring.gz, and object.ring.gz 复制过去。

finalize-installation

https://docs.openstack.org/swift/queens/install/finalize-installation-ubuntu-debian.html

On the controller node and any other nodes running the proxy service, restart the Object Storage proxy service including its dependencies:

$ service memcached restart
$ service swift-proxy restart

这里运行完成后,必须要用 status 检查一下。当时我就是没有检查(实际上是storage node没有开放相应端口),导致后面一步的 `swift stat` 失效。

$ service memcached status
$ service swift-proxy status

verify

https://docs.openstack.org/swift/queens/install/verify.html

基本的命令,也可以通过 horizon 进行。

demo-openrc 文件应该之前就有了。

root@controller:~# cat demo-openrc
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=openstack
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
root@controller:~# . demo-openrc

上传文件

root@controller:~# openstack object create container1 360bdoctor.exe
root@controller:~# openstack object list container1
+----------------+
| Name           |
+----------------+
| 360bdoctor.exe |
+----------------+
root@controller:~#
  • 当上传文件太大时,会出503错误。

    root@controller:~# openstack object create container1 cn_sql_server_2008_r2_enterprise_x86_x64_ia64_dvd_522233.rar -v
    START with options: [u'object', u'create', u'container1', u'cn_sql_server_2008_r2_enterprise_x86_x64_ia64_dvd_522233.rar', u'-v']
    command: object create -> openstackclient.object.v1.object.CreateObject (auth=True)
    Using auth plugin: password
    Service Unavailable (HTTP 503) (Request-ID: tx063c37fe0f004a6fba14c-005c345bf6)
    END return value: 1
    root@controller:~# du -sh cn_sql_server_2008_r2_enterprise_x86_x64_ia64_dvd_522233.rar
    3.3G    cn_sql_server_2008_r2_enterprise_x86_x64_ia64_dvd_522233.rar
    root@controller:~#
    

    是不是与配置过程中的 https://docs.openstack.org/swift/queens/install/initial-rings.html For simplicity, this guide uses one region and two zones with 2^10 (1024) maximum partitions, 3 replicas of each object, and 1 hour minimum time between moving a partition more than once. 中的 2^10 (1024) maximum partitions 这个位置相关。如果是这个思路,我们可以尝试往这个方向,改一下。

  • 在上传文件时,请不要使用 "./****" 形式

    因为这样的话,会导致在 horizon 中显示为目录形式,这明显不对。 而且,当有这样的目录文件时,在 horizon 是删除不了这个文件的(可能是因为,horizon 传过去的就是 "." ,而不是你希望的 "./360bdoctor.exe" 这样的文件) 所以这时,只能通过命令行`openstack object delete controller1 ./360bdoctor.exe`这样的删除了。

    (下面命令请不要运行)

    $ openstack object create container1 ./360bdoctor.exe
    
  • 不能上传文件夹

    官网的这次配置不能上传文件夹,是不是与配置过程中的某个因素相关

    root@controller:~# ll
    total 3450604
    drwx------  8 root root       4096 Jan  8 15:52 ./
    drwxr-xr-x 23 root root       4096 Oct 22 18:11 ../
    -rw-r--r--  1 root root    1993728 Jan  4 18:58 360bdoctor.exe
    drwx------  2 root root       4096 Oct 29 10:50 .ssh/
    root@controller:~# openstack object create container1 ttt -v
    START with options: [u'object', u'create', u'container1', u'ttt', u'-v']
    command: object create -> openstackclient.object.v1.object.CreateObject (auth=True)
    Using auth plugin: password
    [Errno 21] Is a directory: u'ttt'
    END return value: 1
    root@controller:~#
    

Ref

results matching ""

    No results matching ""