rpm包安装openstack-swift后怎么配置

rpm包安装openstack-swift后怎么配置,第1张

创建Ring

Ring共有三种,分别为Account Ring、Container Ring、Object Ring。Ring需要在整个集群中保持完全相同,因此需要在某一台PC上创建Ring文件,然后复制到其他PC上。我们将在PC1上进行Ring的创建,然后复制到PC2上。

首先,使用如下命令创建三个Ring。其中,18表示Ring的分区数为218;2表示对象副本数为2;1表示分区数据的迁移时间为1小时(这个解释有待证实)。

# cd /etc/swift

# swift-ring-builder account.builder create 18 2 1

# swift-ring-builder container.builder create 18 2 1

# swift-ring-builder object.builder create 18 2 1

然后向三个Ring中添加存储设备。其中z1和z2表示zone1和zone2;sdb1为Swift使用的存储空间,即上文挂在的回环设备;100代表设备的权重。

# cd /etc/swift

# swift-ring-builder account.builder add z1-192.168.3.52:6002/sdb1 100

# swift-ring-builder container.builder add z1-192.168.3.52:6001/sdb1 100

# swift-ring-builder object.builder add z1-192.168.3.52:6000/sdb1 100

# swift-ring-builder account.builder add z2-192.168.3.53:6002/sdb1 100

# swift-ring-builder container.builder add z2-192.168.3.53:6001/sdb1 100

# swift-ring-builder object.builder add z2-192.168.3.53:6000/sdb1 100

Ring文件创建完毕后,可以通过以下命令来查看刚才添加的信息,以验证是否输入正确。若发现错误,以Account Ring为例,可以使用swift-ring-builder account.builder的删除方法删除已添加的设备,然后重新添加。

# cd /etc/swift

# swift-ring-builder account.builder

# swift-ring-builder container.builder

# swift-ring-builder object.builder

完成设备的添加后,我们还需要创建Ring的最后一步,即平衡环。这个过程需要消耗一些时间。成功之后,会在当前目录生成account.ring.gz、container.ring.gz和object.ring.gz三个文件,这三个文件就是所有节点(包括Proxy Server和Storage Server)要用到的Ring文件。我们需要将这三个文件拷贝到PC2中的/etc/swift目录下。

# cd /etc/swift

# swift-ring-builder account.builder rebalance

# swift-ring-builder container.builder rebalance

# swift-ring-builder object.builder rebalance

由于我们统一采用root用户部署,所以要确保所有节点上的/etc/swift目录都属于root用户。

# chown -R root:root /etc/swift

2.7 创建Swift执行脚本

为便于 *** 作,我们可以在PC1和PC2上创建以下Swift脚本。

1. 创建~/swift/bin/remakerings脚本文件,添加以下内容,即可一键完成Ring的重新创建,当然具体内容需要根据实际环境进行修改。

#!/bin/bash

cd /etc/swift

rm -f *.builder *.ring.gz backups/*.builder backups/*.ring.gz

swift-ring-builder account.builder create 18 2 1

swift-ring-builder container.builder create 18 2 1

swift-ring-builder object.builder create 18 2 1

swift-ring-builder account.builder add z1-192.168.3.52:6002/sdb1 100

swift-ring-builder container.builder add z1-192.168.3.52:6001/sdb1 100

swift-ring-builder object.builder add z1-192.168.3.52:6000/sdb1 100

swift-ring-builder account.builder add z2-192.168.3.53:6002/sdb1 100

swift-ring-builder container.builder add z2-192.168.3.53:6001/sdb1 100

swift-ring-builder object.builder add z2-192.168.3.53:6000/sdb1 100

swift-ring-builder account.builder rebalance

swift-ring-builder container.builder rebalance

swift-ring-builder object.builder rebalance

2. 创建~/swift/bin/resetswift脚本文件,添加以下内容,即可一键清空Swift的对象数据和日志,完成重置。注意:如果使用的是独立分区存储,则需要另行处理,例如将/srv/swift-disk替换为/dev/sdb1等;如果没有使用rsyslog作为独立日志,则需要去掉“find /var/log/swift... ”和“sudo service rsyslog restart”这两行。

#!/bin/bash

swift-init all stop

find /var/log/swift -type f -exec rm -f {} \

sudo umount /srv/node/sdb1

sudo mkfs.xfs -f -i size=1024 /srv/swift-disk

sudo mount /srv/node/sdb1

sudo chown root:root /srv/node/sdb1

sudo rm -f /var/log/debug /var/log/messages /var/log/rsyncd.log /var/log/syslog

sudo service rsyslog restart

sudo service rsync restart

sudo service memcached restart

3. 创建~/swift/bin/startmain脚本文件,添加以下内容,即可一键启动Swift的基本服务,包括proxy-server、account-server、container-server和object-server。

#!/bin/bash

swift-init main start

4. 创建~/swift/bin/stopmain脚本文件,添加以下内容,即可一键关闭Swift的基本服务,包括proxy-server、account-server、container-server和object-server。

#!/bin/bash

swift-init main stop

5. 创建~/swift/bin/startall脚本文件,添加以下内容,即可一键启动Swift的所有服务,包括proxy-server、account-server、account-replicator 、account-auditor、container-server、container-replicator、container-updater、container-auditor、object-server、object-replicator、object-updater、object-auditor。

#!/bin/bash

swift-init proxy start

swift-init account-server start

swift-init account-replicator start

swift-init account-auditor start

swift-init container-server start

swift-init container-replicator start

swift-init container-updater start

swift-init container-auditor start

swift-init object-server start

swift-init object-replicator start

swift-init object-updater start

swift-init object-auditor start

6. 创建~/swift/bin/stopall脚本文件,添加以下内容,即可一键关闭Swift的所有服务,包括proxy-server、account-server、account-replicator 、account-auditor、container-server、container-replicator、container-updater、container-auditor、object-server、object-replicator、object-updater、object-auditor。

#!/bin/bash

swift-init proxy stop

swift-init account-server stop

swift-init account-replicator stop

swift-init account-auditor stop

swift-init container-server stop

swift-init container-replicator stop

swift-init container-updater stop

swift-init container-auditor stop

swift-init object-server stop

swift-init object-replicator stop

swift-init object-updater stop

swift-init object-auditor stop

7. 完成脚本创建后,需要更改脚本权限,使之能够执行。

Xcode6新建一个项目,采用swift创建代码:

创建一个ViewController继承UITableViewController

涉及了模型,控制器

模型:ZLPlace.swift

class ZLPlace: NSObject {  

var place = ""  

var visited = false  

}

tableViewController 控制器

import UIKit  

 

class ViewController: UITableViewController {  

      

    // 静态数据数组,存放模型  

    var arrs = [ZLPlace]()  

      

    override func viewDidLoad() {  

        super.viewDidLoad()  

          

        let place2 = ZLPlace()  

        place2.place = "zhang2"  

        arrs.append(place2)  

          

        let place3 = ZLPlace()  

        place3.place = "zhang3"  

        arrs.append(place3)  

          

        let place4 = ZLPlace()  

        place4.place = "zhang1"  

        arrs.append(place4)  

          

        self.tableView.reloadData()  

    }  

      

    // 数据源方法, 返回多少组  

    override func numberOfSectionsInTableView(tableView: UITableView) ->Int {  

        return 1 

    }  

      

    // 每组有多少行  

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) ->Int {  

        return arrs.count 

    }  

      

    // 每行展示什么内容  

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) ->UITableViewCell {  

        let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell  

          

        let place = arrs[indexPath.row]  

          

        cell.textLabel.text = place.place  

          

        return cell 

          

    }  

      

    // 点击每个cell触发什么事件  

    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {  

          

        let place = arrs[indexPath.row]  

        place.visited = !place.visited 

          

        let cell = tableView.cellForRowAtIndexPath(indexPath)  

        cell?.backgroundColor = UIColor.clearColor()  

        if(place.visited){  

            cell?.accessoryType = UITableViewCellAccessoryType.Checkmark  

        }else{  

            cell?.accessoryType = UITableViewCellAccessoryType.None  

        }  

    }  

      

    // 点击编辑按钮  

    @IBAction func editing(sender: AnyObject) {  

        self.tableView.setEditing(true, animated: true)  

    }  

      

    // 删除每个cell  

    override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {  

        if editingStyle == UITableViewCellEditingStyle.Delete{  

            arrs.removeAtIndex(indexPath.row)  

            tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Top)  

        }  

    }  

      

}

效果如图:

设置存储策略分为两步:编辑配置文件swift.conf文件,创建相应的ObjectRing。在配置文件中每个存储策略以[storage-policy:N]开头,其中N是策略的编号。对于该文件的解析遵循以下规则:

1、如果该文件中没有声明任何策略,Swift会自己创建一个;

2、策略编号应当位非负整数;

3、如果没有声明默认策略,Swift会把编号为0的策略设为默认策略;

4、策略编号必须唯一;

5、策略应当具有名字,策略命名区分大小且必须唯一;

6、策略名称只能包含字母、数字和连字符,"Policy-0"只能用于编号为0的策略;

7、定义策略之后,应当有一个且仅有一个策略被指定为默认策略;

8、"废弃"(Deprecated)策略不能同时为默认策略。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11630411.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存