OpenStack Swift 云存储多节点部署手册.docx
- 文档编号:30568923
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:24
- 大小:208.47KB
OpenStack Swift 云存储多节点部署手册.docx
《OpenStack Swift 云存储多节点部署手册.docx》由会员分享,可在线阅读,更多相关《OpenStack Swift 云存储多节点部署手册.docx(24页珍藏版)》请在冰豆网上搜索。
OpenStackSwift云存储多节点部署手册
OpenStackSwift云存储安装手册
(V1.1)
2012年11月
文档编号
作者
日期
备注
来两根香肠
2012-10
来两根香肠
2012-11
加入KeyStone认证
一、硬件环境4
二、架构部署4
三、软件环境5
控制节点:
5
存储节点一:
5
存储节点二:
5
四、安装代理节点:
5
1.安装Swift的先决条件5
2.创建Swift的工作目录6
3.创建/etc/swift/swift.conf6
4.安装swift-proxy服务6
5.创建SSL自签名证书cert6
6.配置memcached,监听默认的端口。
推荐配置为内部的、非公用的IP网络地址6
7.重启memcachedserver:
6
8.创建/etc/swift/proxy-server.conf6
9.创建account,container和objectring。
7
10.ring需要记录每个StoreNode/srv/node中记录的存储设备7
11.确认ring的内容是否正确:
8
12.平衡(Rebalance)ring8
13.确保所有的配置文件都属于swift用户8
14.开启Proxy服务:
8
五、安装配置存储节点(两台存储节点配置相同)8
1.安装Swift的先决条件8
2.创建Swift的工作目录8
3.从proxy节点中复制配置文件9
4.安装Storagenode相关软件9
5.对Storagenode的每一个存储设备,安装XFS逻辑卷9
6.创建/etc/rsyncd.conf9
7.修改/etc/default/rsync中的RSYNC_ENABLE=属性10
8.开启rsync守护进程10
9.创建/etc/swift/account-server.conf10
10.创建/etc/swift/container-server.conf11
11.创建/etc/swift/object-server.conf11
六、测试12
1、获得X-Storage-Url和X-Auth-Token12
2、检测是否可以使用HEAD命令查询account状态12
3、建立myfiles容器并上传文件到myfiles容器中12
4、列出指定用户的容器12
5、下载myfiles容器中指定文件12
七、多节点应用13
1、分布式存储13
2、可靠性与可用性13
3、负载均衡13
八、RESTAPI15
1、搭建APACHE+PHP环境15
2、获取php-cloudfiles15
3、获取容器列表15
九、使用KeyStone认证16
1、安装Mysql16
2、安装keystone16
3、配置keystone16
4、测试keystone20
5、配置swiftproxy20
6、测试通过keystone的认证访问swift20
7、RESTAPI21
一、硬件环境
1、DELLR720(3台)
CPU:
Intel(R)Xeon(R)CPUE5-26090@2.40GHz*2
内存:
16GB
硬盘:
2TB
网卡:
BroadcomCorporationNetXtremeIIBCM5709GigabitEthernet*4
2、系统:
UbuntuServer12.04x64
3、存储设置
Sda:
1T
Sdb:
1T
服务器内置存储不需要也不建议采用RAID技术。
Swift的磁盘模式非常不适合采用RAID技术,使用后将极大的降低存储性能。
二、架构部署
机器型号/主机名
外网IP
内网IP
作用
R720/Proxy
192.168.100.20
192.168.1.10
代理节点
R720/object1
192.168.1.11
存储节点1(zone1)
R720/object2
192.168.1.12
存储节点2(zone2)
三、软件环境
控制节点:
Ubuntu 12.04 server64bit
hostname:
proxy
eth0:
192.168.100.20
eth1:
192.168.1.10
存储节点一:
Ubuntu 12.04 server64bit
hostname:
object1
eth0:
192.168.1.11
存储节点二:
Ubuntu 12.04 server64bit
hostname:
object2
eth0:
192.168.1.12
四、安装代理节点:
1.安装Swift的先决条件
apt-getinstallpython-software-properties
add-apt-repositoryppa:
swift-core/ppa
apt-getupdate
apt-getinstallswift
2.创建Swift的工作目录
mkdir-p/etc/swift
chown-Rswift:
swift/etc/swift/
3.创建/etc/swift/swift.conf
cat>/etc/swift/swift.conf< [swift-hash] #randomuniquestringthatcanneverchange(DONOTLOSE) swift_hash_path_suffix=`od-tx8-N8-An EOF 4.安装swift-proxy服务 apt-getinstallswift-proxymemcached 5.创建SSL自签名证书cert cd/etc/swift opensslreq-new-x509-nodes-outcert.crt-keyoutcert.key 6.配置memcached,监听默认的端口。 推荐配置为内部的、非公用的IP网络地址。 perl-pi-e"s/-l127.0.0.1/-l192.168.1.10/"/etc/memcached.conf 7.重启memcachedserver: servicememcachedrestart 8.创建/etc/swift/proxy-server.conf cat>/etc/swift/proxy-server.conf< [DEFAULT] bind_port=8080 workers=8 user=swift [pipeline: main] pipeline=healthcheckcachetempauthproxy-server [app: proxy-server] use=egg: swift#proxy allow_account_management=true account_autocreate=true [filter: tempauth] use=egg: swift#tempauth user_system_root=testpass.adminhttp: //192.168.100.20: 8080/v1/AUTH_system [filter: healthcheck] use=egg: swift#healthcheck [filter: cache] use=egg: swift#memcache memcache_servers=192.168.1.10: 11211 EOF 9.创建account,container和objectring。 swift-ring-builder命令创建相应的.builder文件会有几个参数。 18代表partition的数目会到2^18幂,这个数字取决于你希望一个ring中会有多少个partition。 2代表每个object的副本数。 最后一个参数1,代表一个partition至少在1小时之后才能被移动。 cd/etc/swift swift-ring-builderaccount.buildercreate1821 swift-ring-buildercontainer.buildercreate1821 swift-ring-builderobject.buildercreate1821 10.ring需要记录每个StoreNode/srv/node中记录的存储设备 swift-ring-builderaccount.builderaddz1-192.168.1.11: 6002/sdb1100 swift-ring-buildercontainer.builderaddz1-192.168.1.11: 6001/sdb1100 swift-ring-builderobject.builderaddz1-192.168.1.11: 6000/sdb1100 swift-ring-builderaccount.builderaddz2-192.168.1.12: 6002/sdb1100 swift-ring-buildercontainer.builderaddz2-192.168.1.12: 6001/sdb1100 swift-ring-builderobject.builderaddz2-192.168.1.12: 6000/sdb1100 11.确认ring的内容是否正确: swift-ring-builderaccount.builder swift-ring-buildercontainer.builder swift-ring-builderobject.builder 12.平衡(Rebalance)ring swift-ring-builderaccount.builderrebalance swift-ring-buildercontainer.builderrebalance swift-ring-builderobject.builderrebalance 13.确保所有的配置文件都属于swift用户 chown-Rswift: swift/etc/swift 14.开启Proxy服务: #需要存储节点启动后再启动 swift-initproxystart 五、安装配置存储节点(两台存储节点配置相同) 1.安装Swift的先决条件 apt-getinstallpython-software-properties add-apt-repositoryppa: swift-core/release apt-getupdate apt-getinstallswift 2.创建Swift的工作目录 mkdir-p/etc/swift chown-Rswift: swift/etc/swift/ 3.从proxy节点中复制配置文件 scp192.168.1.10: /etc/swift/swift.conf/etc/swift/ scp192.168.1.10: /etc/swift/object.ring.gz/etc/swift/ scp192.168.1.10: /etc/swift/container.ring.gz/etc/swift/ scp192.168.1.10: /etc/swift/account.ring.gz/etc/swift/ 4.安装Storagenode相关软件 apt-getinstallswift-accountswift-containerswift-objectxfsprogs 5.对Storagenode的每一个存储设备,安装XFS逻辑卷 #创建一个新的分区 fdisk/dev/sdb #创建xfs文件系统 mkfs.xfs-isize=1024/dev/sdb1 #添加到启动时挂载分区 echo"/dev/sdb1/srv/node/sdb1xfsnoatime,nodiratime,nobarrier,logbufs=800">>/etc/fstab mkdir-p/srv/node/sdb1 mount/srv/node/sdb1 chown-Rswift: swift/srv/node 6.创建/etc/rsyncd.conf cat>/etc/rsyncd.conf< uid=swift gid=swift logfile=/var/log/rsyncd.log pidfile=/var/run/rsyncd.pid address=192.168.1.11#存储节点2(object2)设置为192.168.1.12 [account] maxconnections=2 path=/srv/node/ readonly=false lockfile=/var/lock/account.lock [container] maxconnections=2 path=/srv/node/ readonly=false lockfile=/var/lock/container.lock [object] maxconnections=2 path=/srv/node/ readonly=false lockfile=/var/lock/object.lock EOF 7.修改/etc/default/rsync中的RSYNC_ENABLE=属性 perl-pi-e's/RSYNC_ENABLE=false/RSYNC_ENABLE=true/'/etc/default/rsync 8.开启rsync守护进程 servicersyncstart 9.创建/etc/swift/account-server.conf cat>/etc/swift/account-server.conf< [DEFAULT] bind_ip=0.0.0.0 workers=2 [pipeline: main] pipeline=account-server [app: account-server] use=egg: swift#account [account-replicator] [account-auditor] [account-reaper] EOF 10.创建/etc/swift/container-server.conf cat>/etc/swift/container-server.conf< [DEFAULT] bind_ip=0.0.0.0 workers=2 [pipeline: main] pipeline=container-server [app: container-server] use=egg: swift#container [container-replicator] [container-updater] [container-auditor] EOF 11.创建/etc/swift/object-server.conf cat>/etc/swift/object-server.conf< [DEFAULT] bind_ip=0.0.0.0 workers=2 [pipeline: main] pipeline=object-server [app: object-server] use=egg: swift#object [object-replicator] [object-updater] [object-auditor] EOF 12.开启storage服务 swift-initobject-serverstart swift-initobject-replicatorstart swift-initobject-updaterstart swift-initobject-auditorstart swift-initcontainer-serverstart swift-initcontainer-replicatorstart swift-initcontainer-updaterstart swift-initcontainer-auditorstart swift-initaccount-serverstart swift-initaccount-replicatorstart swift-initaccount-auditorstart 六、测试 1、获得X-Storage-Url和X-Auth-Token 用户名、密码和访问地址在控制节点proxy的/etc/swift/proxy-server.conf中配置 curl-k-v-H'X-Storage-User: system: root'-H'X-Storage-Pass: testpass'http: //192.168.100.20: 8080/auth/v1.0 2、检测是否可以使用HEAD命令查询account状态 上一步获取的X-storage-Url和X-Auth-Token在这里会用到 curl-k-v-H'X-Auth-Token: AUTH_tkdee53fd036174a3793b08a4e2ff1ef1b'http: //192.168.100.20: 8080/v1/AUTH_system 3、建立myfiles容器并上传文件到myfiles容器中 swift-Ahttp: //192.168.100.20: 8080/auth/v1.0-Usystem: root-Ktestpassuploadmyfiles1.txt 4、列出指定用户的容器 swift-Ahttp: //192.168.100.20: 8080/auth/v1.0-Usystem: root-Ktestpasslist 5、下载myfiles容器中指定文件 swift-Ahttp: //192.168.100.20: 8080/auth/v1.0-Usystem: root-Ktestpassdownloadmyfiles 7、多节点应用 我们将swift的架构重新规划如下: 机器型号/主机名 外网IP 内网IP 作用 R720/Proxy1 192.168.100.20 192.168.1.9 代理节点1 R720/Proxy2 192.168.100.21 192.168.1.10 代理节点2 R720/Storage1 192.168.1.11 存储节点1(zone1) R720/Storage2 192.168.1.12 存储节点2(zone1) R720/Storage3 192.168.1.13 存储节点3(zone1) R720/Storage51 192.168.1.51 存储节点51(zone2) R720/Storage52 192.168.1.52 存储节点52(zone2) 在划分zone的时候可将Storage1、Storage2划分到zone1,将Storage51、Storage52划分到zone2,分别启动proxy1和所有的storage。 1、分布式存储 我们可以上传几个文件,这个时候可以看到,proxy1将上传的文件分配到了zone中不同的存储节点里。 2、可靠性与可用性 将其中一个有数据的存储节点破坏掉(重装系统),这个时候读取数据时我们会发现依然可以获取所有的数据,proxy1会将请求不到资源的请求自动切换到另外一个zone上去。 然后按照步骤重新做成与之前相同配置的存储节点,启动存储节点后,我们会发现这台存储节点立即从其他的zone中同步回之前丢失了的数据。 3、负载均衡 1)新增一个代理节点proxy2。 先按步骤安装一个proxyNode,然后将ring相关的文件和proxy-server.conf、swift.conf文件copy到proxy2中,修改proxy-server.conf中的IP设置为proxy2的设置。 启动proxy2的swift服务后,可以获取到之前上传的所有数据,在proxy2中上传数据后,在proxy1中也可以读取到。 2)在proxy1和proxy2前端增加一个Nginx服务或者LVS,则可以将请求分别发送到不同的代理节点上,从而实现负载均衡。 4、扩容 新增一个存储节点storage3(192.168.1.13),我们把他添加到zone1中去: swift-ring-builderaccount.builderaddz1-192.168.1.13: 6002/sdb1100 swift-ring-buildercontainer.builderaddz1-192.168.1.13: 6001/sdb1100 swift-ring-builderobject.builderaddz1-192.168.1.13: 6000/sdb1100 然后生成ring文件,Copy到所有节点,重启所有节点后我们再上传一些文件到存储里去,这时可以发现zone1里的storage3也开始分担存储任务。 至此我们就可灵活的增加Proxy节点或者Storage节点实现类似如下的swift云存储架构了: 8、RESTAPI 因为Swift采用REST架构,我们不能像普通的文件系统那样对数据进行访问,必须通过它提供的API来访问操作数据。 Rackspace还对这些api做了不同语言的封装绑定,以方便开发者进行开发。 目前支持的语言有PHP、Python、Java、C#/.NET和Ruby。 我们可以在这些基础上开发出基于RESTFUL的WebServic
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OpenStack Swift 云存储多节点部署手册 存储 节点 部署 手册