




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、OpenStackSwift 云存储安装手册(V1.1)2012年11月文档编号作者日期备注来两根香肠2012-10来两根香肠2012-11加入 KeyStone 认证一、硬件环境 4二、架构部署 4三、软件环境 5控制节点:5存储节点一:5存储节点二:5四、安装代理节点:51 .安装 Swift 的先决条件 52 .创建 Swift 的工作目录 53 .创建/etc/swift/swift.conf64 .安装 swift-proxy 服务 65 .创建 SSL 自签名证书 cert66 .配置 memcached,监听默认的端口。推荐配置为内部的、非公用的 IP 网络地址.67 .重启 m
2、emcachedserver:68 .创建/etc/swift/proxy-server.conf69 .创建 account,container 和 objectring。710 .ring 需要记录每个 StoreNode/srv/node 中记录的存储设备 711 .确认 ring 的内容是否正确:712 .平衡(Rebalance)ring713 .确保所有的配置文件都属于 swift 用户 814 .开启 Proxy 服务:8五、安装配置存储节点(两台存储节点配置相同)81 .安装 Swift 的先决条件 82 .创建 Swift 的工作目录 83 .从 proxy 节点中复制配置文
3、件 84 .安装 Storagenode 相关软件 95 .对 Storagenode 的每一个存储设备,安装 XFS 逻辑卷 96 .创建/etc/rsyncd.conf97 .修改/etc/default/rsync 中的 RSYNC_ENABLE 墉性 108 .开启 rsync 守护进程 109 .创建/etc/swift/account-server.conf1010 .创建/etc/swift/container-server.conf1011 .创建/etc/swift/object-server.conf11六、测试 121、 获彳导X-Storage-Url 和 X-Auth
4、-Token122、 检测是否可以使用 HEAD 命令查询 account 状态 123、 建立 myfiles 容器并上传文件到 myfiles 容器中 124、 列出指定用户的容器 125、 下载 myfiles 容器中指定文件 12七、多节点应用 131、分布式存储 132、可靠性与可用性 133、负载均衡 13八、RESTAPI151、 搭建 APACHE+PHP 环境 152、 获取 php-cloudfiles153、 获取容器列表 15九、使用 KeyStone 认证 161、 安装 Mysql162、 安装 keystone163、 配置 keystone164、 测试 key
5、stone205、 配置 swiftproxy206、 测试通过 keystone 的认证访问 swift207、 RESTAPI20一、硬件环境1、DELLR720(3 台)CPUIntel(R)Xeon(R)CPUE5-260902.40GHz*2内存:16GB硬盘:2TB网卡:BroadcomCorporationNetXtremeIIBCM5709GigabitEthernet*42、系统:UbuntuServer12.04x643、存储设置Sda:1TSdb:1T服务器内置存储不需要也不建议采用 RAID 技术。Swift 的磁盘模式非常不适合采用 RAID技术,使用后将极大的降低存
6、储性能。、架构部署机器型号/主机名外网 IP内网 IP作用R720/Proxy00代理节点R720/object11存储节点 1(zone1)R720/object22存储节点 2(zone2)三、软件环境控制节点:Ubuntu12.04server64bithostname:proxyeth0:0eth1:0存储节点一:Ubuntu12.04server64bithostname:object1eth0:1存储节点二:Ubuntu1
7、2.04server64bithostname:object2eth0:2四、安装代理节点:1 .安装 Swift 的先决条件apt-getinstallpython-software-propertiesadd-apt-repositoryppa:swift-core/ppaapt-getupdateapt-getinstallswift2 .创建 Swift 的工作目录mkdir-p/etc/swiftchown-Rswift:swift/etc/swift/3 .创建/etc/swift/swift.confcat/etc/swift/swift.confEOFsw
8、ift-hash#randomuniquestringthatcanneverchange(DONOTLOSE)swift_hash_path_suffix=od-tx8-N8-An/etc/swift/proxy-server.conf/etc/fstabmkdir-p/srv/node/sdb1mount/srv/node/sdb1chown-Rswift:swift/srv/node6 .创建/etc/rsyncd.confcat/etc/rsyncd.conf/etc/swift/account-server.conf/etc/swift/container-server.conf/e
9、tc/swift/object-server.confEOFDEFAULTbind_ip=workers=2pipeline:mainpipeline=object-serverapp:object-serveruse=egg:swift#objectobject-replicatorobject-updaterobject-auditorEOF12 .开启 storage 服务swift-initobject-serverstartswift-initobject-replicatorstartswift-initobject-updaterstartswift-initobj
10、ect-auditorstartswift-initcontainer-serverstartswift-initcontainer-replicatorstartswift-initcontainer-updaterstartswift-initcontainer-auditorstartswift-initaccount-serverstartswift-initaccount-replicatorstartswift-initaccount-auditorstart六、测试1、获得 X-Storage-Url 和 X-Auth-Token用户名、密码和访问地址在控制节点 proxy 的/
11、etc/swift/proxy-server.conf 中配置curl-k-v-HX-Storage-User:system:root-HX-Storage-Pass:testpass0:8080/auth/v1.02、检测是否可以使用 HEAD 命令查询 account 状态上一步获取的 X-storage-Url 和 X-Auth-Token 在这里会用到curl-k-v-HX-Auth-Token:AUTH_tkdee53fd036174a3793b08a4e2ff1ef1b0:8080/v1/AUTHsyste
12、m3、建立 myfiles 容器并上传文件到 myfiles 容器中swift-A0:8080/auth/v1.0-Usystem:root-Ktestpassuploadmyfiles1.txt4、列出指定用户的容器swift-A0:8080/auth/v1.0-Usystem:root-Ktestpasslist5、下载 myfiles 容器中指定文件swift-A0:8080/auth/v1.0-Usystem:root-Ktestpassdownloadmyfiles七、多
13、节点应用我们将 swift 的架构重新规划如下:机器型号/主机名外网 IP内网 IP作用R720/Proxy10代理节点 1R720/Proxy210代理节点 2R720/Storage11存储节点 1(zone1)R720/Storage22存储节点 2(zone1)R720/Storage33存储节点 3(zone1)R720/Storage511存储节点 51(zone2)R720/Storage52192
14、.168.1.52存储节点 52(zone2)在戈 U 分 zone 的时候可将 Storage!Storage2 戈 U 分至 Uzonel,将 Storage51、Storage52 戈 U 分至 Uzone2,分别启动 proxy1 和所有的 storage。1、分布式存储我们可以上传几个文件,这个时候可以看到,proxy1 将上传的文件分配到了 zone 中不同的存储节点里。2、可靠性与可用性将其中一个有数据的存储节点破坏掉(重装系统),这个时候读取数据时我们会发现依然可以获取所有的数据,proxy1 会将请求不到资源的请求自动切换到另外一个 zone 上去。然后按照步骤重新做成与之前
15、相同配置的存储节点,启动存储节点后,我们会发现这台存储节点立即从其他的 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 前端增加一个
16、Nginx 服务或者 LVS,则可以将请求分别发送到不同的代理节点上,从而实现负载均衡。4、扩容新增一个存储节点 storage3(3),我们把他添加到 zonel 中去:swift-ring-builderaccount.builderaddz1-3:6002/sdb1100swift-ring-buildercontainer.builderaddz1-3:6001/sdb1100swift-ring-builderobject.builderaddz1-3:6000/sdb1100然后生成 ring
17、文件,Copy 到所有节点,重启所有节点后我们再上传一些文件到存储里去,这时可以发现 zone1里的 storage3 也开始分担存储任务。至此我们就可灵活的增加 Proxy 节点或者 Storage 节点实现类似如下的 swift 云存储架构了:八、RESTAPI因为 Swift 采用 REST 架构,我们不能像普通的文件系统那样对数据进行访问,必须通过它提供的 API 来访问操作数据。Rackspace 还对这些 api 做了不同语言的封装绑定,以方便开发者进行开发。目前支持的语言有 PHP、Python、Java、C#/.NET 和 Ruby。我们可以在这些基础上开发出基于 RESTFU
18、L 的 WebService。这里我们来尝试一下使用 PHP来取出 Swift 的数据。1、搭建 APACHE+PHP 环境这一步比较简单,这里不详述了。2、获取 php-cloudfilesgitclonegit: https: 去下载3、获取容器列表先修改 cloudfiles.php 里的访问 url 地址为 proxy 的地址,然后编辑下面的程序vitest.phpauthenticate();$conn=newCF_Connection($auth);$conn=$conn-list_containers();echojson_encode($conn);/$cont=$conn-c
19、reate_container(test4);/$obj=$cont-create_object(PutObjectNameHere);?访问 http:/yoururl/test.php 则可以得到 json 格式的容器列表了。九、使用KeyStone认证1、安装 Mysqlapt-getinstallmysql-serverpython-mysqldb2、安装 keystoneapt-getinstallkeystone3、配置 keystone1)进入 mysql 创建 keystone 库 mysql-uroot-padminCreatedatabasekeystone;2)修改/et
20、c/mysql/my.conf 文件将 bind-address= 改为 bind-address=重启 mysqlservicemysqlrestart3)修改/etc/keystone/keystone.conf 文件将connection=sqlite:/keystone.db更改为connection=mysql:keystone:keystone/keystone(keystone:keystone 为 mysql 库keystone 的用户名:密码)修改后切记重启 keystoneservicekeystonerestart4)初始
21、化 keystone 库Keystone-managedb_sync5)创建用户角色等信息/*根据配置文件的 token 的来创建租户,用户,角色*/(使用的是 python-keystoneclient.git 项目)exportSERVICE_TOKEN=在 keystone 安装目录下 etc/keystone.conf 中的 Token 值exportSERVICE_ENDPOINT=http:localhost:35357/v2.0”/*创建租户*/ROOTkeystonetenant-create-name=service/*创建用户*/ROOTkeystoneuser-creat
22、e-name=admin-pass=admin-email= ID-role这里放角色 ID-tenant_id这里放tenantID/*配置 KeyStone 的 Service*/keystoneservice-create-name=keystone-type=identity-description=KeystoneIdentityService配置 KeystoneService 的 endpointkeystoneendpoint-create-regionRegionOne-service_idservice_id-publicurlhttp:/localhost:5000/v2
23、.0-adminurlhttp:/localhost:35357/v2.0-internalurlhttp:/localhost:5000/v2.0/创建管理 Swift 的 Userkeystoneuser-create-name=swift-pass=admin-tenant_idtenant_id-email=将名称为admin的角色权限配置给用户名为swift的用户到service的租户管理中keystoneuser-role-add-tenant_idtenant_id-useruser_id-rolerule_id为 SwiftService 配置 endpointkeystone
24、endpoint-create-regionRegionOne-service_idservice_id-publicurlhttp:/localhost:8080/v1/AUTH_tenantID-adminurlhttp:/localhost:8080/-internalurlhttp:/localhost:8080/v1/AUTH_tenantID也可以用以下脚本完成#!/usr/bin/envbashADMIN_PASSWORD=adminENABLE_SWIFT=1ENABLE_ENDPOINTS=1KEYSTONE_CONF=$KEYSTONE_CONF:-/etc/keyston
25、e/keystone.confSERVICE_PASSWORD=$SERVICE_PASSWORD:-$ADMIN_PASSWORD# ExtractsomeinfofromKeystonesconfigurationfileif-r$KEYSTONE_CONF;thenCONFIG_SERVICE_TOKEN=$(seds/:space:/g$KEYSTONE_CONF|grepAadmin_token=|cut-d=-f2)CONFIG_ADMIN_PORT=$(seds/:space:/g$KEYSTONE_CONF|grepAadmin_port=|cut-d=-f2)fiexport
26、SERVICE_TOKEN=$SERVICE_TOKEN:-$CONFIG_SERVICE_TOKENif-z$SERVICE_TOKEN;thenechoNoservicetokenfound.echoSetSERVICE_TOKENmanuallyfromkeystone.confadmin_token.exit1fiexportSERVICE_ENDPOINT=$SERVICE_ENDPOINT:-http:/127.O.O.1:$CONFIG_ADMIN_PORT:-35357/v2.0functionget_id()echo$|grepid|awkprint$4、# TenantsA
27、DMIN_TENANT=$(get_idkeystonetenant-create-name=admin)SERVICE_TENANT=$(get_idkeystonetenant-create-name=service)DEMO_TENANT=$(get_idkeystonetenant-create-name=demo)# UsersADMIN_USER=$(get_idkeystoneuser-create-name=admin-pass=$ADMIN_PASSWORD-email=)DEMO_USER=$(get_idkeystoneuser-create-name=demo-pass
28、=$ADMIN_PASSWORD-email=)# RolesADMIN_ROLE=$(get_idkeystonerole-create-name=admin)MEMBER_ROLE=$(get_idkeystonerole-create-name=Member)KEYSTONEADMIN_ROLE=$(get_idkeystonerole-create-name=KeystoneAdmin)KEYSTONESERVICE_ROLE=$(get_idkeystonerole-create-name=KeystoneServiceAdmin)SYSADMIN_ROLE=$(get_idkeys
29、tonerole-create-name=sysadmin)# AddRolestoUsersinTenantskeystoneuser-role-add-user$ADMIN_USER-role$ADMIN_ROLE-tenant_id$ADMIN_TENANTkeystoneuser-role-add-user$DEMO_USER-role$MEMBER_ROLE-tenant_id$DEMO_TENANTkeystoneuser-role-add-user$DEMO_USER-role$SYSADMIN_ROLE-tenant_id$DEMO_TENANTkeystoneuser-rol
30、e-add-user$ADMIN_USER-role$ADMIN_ROLE-tenant_id$DEMO_TENANT# TODO(termie):thesetwomightbedubiouskeystoneuser-role-add-user$ADMIN_USER-role$KEYSTONEADMIN_ROLE-tenant_id$ADMIN_TENANTkeystoneuser-role-add-user$ADMIN_USER-role$KEYSTONESERVICE_ROLE-tenant_id$ADMIN_TENANT# ServicesKEYSTONE_SERVICE=$(get_i
31、dkeystoneservice-create-name=keystone-type=identity-description=KeystoneIdentityService)if-n$ENABLE_ENDPOINTS;thenkeystoneendpoint-create-regionRegionOne-service_id$KEYSTONE_SERVICE-publicurlhttp:localhost:$(public_port)s/v2.0-adminurlhttp:localhost:$(admin_port)s/v2.0-internalurlhttp:localhost:$(ad
32、min_po)s/v2.0fiif-n$ENABLE_SWIFT;thenSWIFT_SERVICE=$(get_idkeystoneservice-create-name=swift-type=object-store-description=SwiftService)SWIFT_USER=$(get_idkeystoneuser-create-name=swift-pass=$SERVICE_PASSWORD-tenant_id$SERVICE_TENANT-email=)keystoneuser-role-add-tenant_id$SERVICE_TENANT-user$SWIFT_U
33、SER-role$ADMIN_ROLEkeystoneendpoint-create-regionRegionOne-service_id$SWIFT_SERVICE-publicurlhttp:0:8080/v1/AUTH_$(tenant_id)s-adminurlhttp:0:8080 八-internalurlhttp:0:8080/v1/AUTH_$(tenant_id)sfi4、测试 keystonecurl-dauth:tenantName:service,passwordCredentials:use
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 钢水快速测温项目可行性研究报告
- 废水回收资源项目可行性研究报告
- 2026年高考语文总复习文言文专题-教师版-古代文化常识(知识清单)
- 贸易合同中常见风险提示
- 医疗健康市场发展前景
- 北疆就业网就业协议书5篇
- 楼房加层建筑施工承建合同3篇
- 数字支付价格创新与电子商务深度融合-洞察及研究
- 11.5机械效率 同步练习 (含解析)2025-2026学年苏科版(2024)物理九年级上册
- 部门安全知识培训计划课件
- 空间中的“爱情买卖二次元手游”玩家的数字身体与爱欲张力研究
- 建设项目概算表(模板)
- 小提琴培训行业供需趋势及投资风险研究报告
- 深静脉血栓预防及护理课件
- 心律失常临床诊疗指南
- 食品存储和保鲜技巧
- 《现代服务业》课件
- 大学生毕业论文写作教程全套教学课件
- 肺部感染性疾病课件
- 《交通运输概论》 课件 第五章 铁路运输系统(二)
- 腾讯基干领导力素质模型V4.0-最后版本
评论
0/150
提交评论