1、展云科技Openstack控制节点安装Ubuntu版版本作者联系方式日期备注v0.1曾云龙QQ:2023-9-1初稿目录1安装前说明31系统配置31.1网卡配置31.2安装bridge41.3设立NTP42安装swift42.1安装swift相关组件52.2创建并配置目录52.3配置 swift /etc/swift/swift.conf文献53安装Proxy节点53.1安装代理节点53.2创建SSL自署名认证53.3修改memcached监听接口63.4配置proxy-server.conf64配置节点信息(Ring)64.1创建账户、容器、对象配置信息64.2为存储节点添加物理映射信息64
2、.3验证ring的内容74.4平衡ring74.5保证/etc/swift所有权属于swift用户74.6重启代理服务75配置存储节点75.1安装swift相关组件75.2在每个节点的设备上安装XFS卷75.3创建备份配置文献/etc/rsyncd.conf85.4配置rsync开机启动85.5配置swift日记文献85.6创建/etc/swift/account-server.conf85.7创建/etc/swift/container-server.conf85.8创建/etc/swift/object-server.conf95.9启动swift所有服务95.10验证swift服务96备
3、注96.1rsync相关错误91 安装前说明swift多节点安装,官方建议一台代理服务器,五台存储节点。基本的结构和组成如下:1、 节点(node):物理主机运营一个或者多个Swift服务。2、 代理节点(Proxy node):该节点运营代理服务,同时运营临时授权服务。3、 存储节点(Storage node):节点运营账户(Account)、容器(Container)、对象服务(Object Services)。4、 环形(Ring):Swift数据(或者称作实体)到物理设备的映射(Map)。本文档的演示使用如下几种节点类型,代理节点和存储节点是安装在同一台服务器上的,因此代理节点和存储节
4、点均为3台:1、3个代理节点(Proxy node),提供网络响应效率和吞吐量以及性能问题:运营的swift代理服务进程可以让请求到达时,找到合适的存储节点。这个代理服务同样以服务器网关接口中间件(WSGI Middleware,WSGI:Web Server Gateway Interface)提供临时认证(TempAuth)服务。2、3个存储节点(官方建议5台):存储节点运营的服务swift-account-server、swift-container-server、swift-object-server分别控制着账户数据库、容器数据库以及真实存储的对象存储。本文档描述了在ring中,每个
5、存储节点是作为一个分离的zone(区域),3个存储节点就相称于三个区域。每一个区域就是一个节点组,用来与其他节点分离的。(分开服务、网络、功能、even geography),RING保证所有的复制品被保存在隔离的区域。由于三台swift服务器的安装和配置相同,因此下面的示例是单节点下的配置,其他配置雷同。1 系统配置系统环境型号操作系统CPU内存网卡硬盘大小Dell R520Ubuntu 12.04 server16G192.168.2.20/24300G+6TDell R520Ubuntu 12.04 server16G192.168.2.21/24300G+6TDell R520Ubun
6、tu 12.04 server16G192.168.2.22/24300G+6T1.1 网卡配置修改/etc/network/interface文献,如下所示:重启网络,让修改生效:/etc/init.d/networking restart1.2 安装bridgeapt-get install bridge-utils重启网络或者重启机器都可以1.3 设立NTPapt-get install ntp编辑/etc/ntp.conf,在末尾添加如下内容:server 192.168.2.10重启服务:service ntp restart2 安装swift安装python-software-pr
7、operties在资源仓库增长swift源:add-apt-repository ppa:swift-core/release更新:apt-get update安装依赖包:apt-get -option Dpkg:Options:=-force-confold -assume-yes updateapt-get install pep8 pylint python-pip screen unzip wget psmisc git-core lsof openssh-server vim-nox locate python-virtualenv python-unittest2 iputils-
8、ping wget curl tcpdump euca2ools python-setuptools python-dev python-lxml python-pastescript python-pastedeploy python-paste sqlite3 python-pysqlite2 python-sqlalchemy python-mysqldb python-webob python-greenlet python-routes libldap2-dev libsasl2-dev python-bcrypt curl gcc python-configobj python-c
9、overage python-dev python-eventlet python-greenlet python-netifaces python-nose python-pastedeploy python-setuptools python-simplejson python-webob python-xattr sqlite3 xfsprogs2.1 安装swift相关组件apt-get install swift python-swift openssh-server2.2 创建并配置目录创建目录:mkdir p /etc/swift将目录/etc/swift的访问权限赋予swift
10、用户:chown R swift:swift /etc/swift2.3 配置 swift /etc/swift/swift.conf文献修改/etc/swift/swift.conf文献,内容如下:注意 :所有swift节点的swift_hash_path_suffix值可以随便取,但是都要同样。3 安装Proxy节点3.1 安装代理节点apt-get install swift-proxy memcached3.2 创建SSL自署名认证cd /etc/swiftopenssl req new x509 nodes out cert.crt keyout cert.key3.3 修改memc
11、ached监听接口perl pi e “s/-l 127.0.0.1/-l 192.168.2.20/” /etc/memcached.conf重启缓存服务器:service memcached restart3.4 配置proxy-server.confproxy-server.conf配置信息如附件所示:需要注意的是,proxy-server.conf文献里面没有下图所示的配置,会出现403错误:proxy-server.conf通过ssl访问的话,需要在DEFAULT里面加上:4 配置节点信息(Ring)4.1 创建账户、容器、对象配置信息cd /etc/swiftswift-ring-
12、builder account.builder create 18 2 1swift-ring-builder container.builder create 18 2 1swift-ring-builder object.builder create 18 2 1注意:我们创建的这3个Ring文献,18表达将分区解决成218,2表达我们有3个zone,根据我们的zone数量来定义的,假如跟我们实际情况有差异,也许会在启动服务的时候报错。第三个数字1表达限制分区数据的转移时间,这里为一小时。4.2 为存储节点添加物理映射信息export HOST_IP=192.168.2.20swift-r
13、ing-builder object.builder add z1-$HOST_IP:6010/sdb1 100 swift-ring-builder container.builder add z1-$HOST_IP:6011/sdb1 100 swift-ring-builder account.builder add z1-$HOST_IP:6012/sdb1 100 export HOST_IP=192.168.2.21 swift-ring-builder object.builder add z2-$HOST_IP:6010/sdb1 100 swift-ring-builder
14、container.builder add z2-$HOST_IP:6011/sdb1 100 swift-ring-builder account.builder add z2-$HOST_IP:6012/sdb1 100 export HOST_IP=192.168.2.22 swift-ring-builder object.builder add z3-$HOST_IP:6010/sdb1 100 swift-ring-builder container.builder add z3-$HOST_IP:6011/sdb1 100 swift-ring-builder account.b
15、uilder add z3-$HOST_IP:6012/sdb1 1004.3 验证ring的内容swift-ring-builder object.builder swift-ring-builder container.builder swift-ring-builder account.builder 4.4 平衡ring平衡ring的意思,事实上就是生成最终的ring。执行下面的命令也许需要一点时间:swift-ring-builder object.builder rebalanceswift-ring-builder container.builder rebalanceswift
16、-ring-builder account.builder rebalance4.5 保证/etc/swift所有权属于swift用户chown R swift:swift /etc/swift/*4.6 重启代理服务swift-init proxy restart5 配置存储节点5.1 安装swift相关组件apt-get install swift-account swift-container swift-object xfsprogs5.2 在每个节点的设备上安装XFS卷fdisk /dev/sdbmkfs.xfs I size=1024 /dev/sdb1echo “/dev/sdb
17、1 /srv/node/sdb1 xfs noatime,nodiratime,nobarrier,logbufs=8 0 0” /etc/fstabmkdir p /srv/node/sdb1mount /srv/node/sdb1chown R swift:swift /srv/node/*5.3 创建备份配置文献/etc/rsyncd.conf相关配置在附件中:5.4 配置rsync开机启动在/etc/default/rsync里将RSYNC_ENABLE=false改成true:perl pi -e s/RSYNC_ENABLE=false/RSYNC_ENABLE=true /etc
18、/default/rsync启动rsync服务:service rsync start5.5 配置swift日记文献1、 创建swift日记文献:在/etc/rsyslog.d/目录下创建文献:10-swift.conf10-swift.conf配置信息如下:2、 创建日记目录mkdir p /var/log/swift/3、 重启日记服务进程service rsyslog restart5.6 创建/etc/swift/account-server.conf5.7 创建/etc/swift/container-server.conf5.8 创建/etc/swift/object-server
19、.conf5.9 启动swift所有服务swift-init all start5.10 验证swift服务1、通过curlcurl -d auth: tenantName: admin, passwordCredentials:username: admin, password: zhanyunToken -H Content-type: application/json :35357/v2.0/tokens | python -mjson.tool2、使用swiftswift -V 2 -A :5000/v2.0 -U admin:admin -K zhanyunToken stat3、使
20、用swift创建文献夹swift -V 2 -A :5000/v2.0 -U admin:admin -K zhanyunToken post myfiles5、 使用swift上传文献swift -V 2 -A :5000/v2.0 -U admin:admin -K zhanyunToken opload myfiles yourfilepathandName6 备注6.1 rsync相关错误1、 name lookup failed for 192.168.2.21: Name or service not known在每个swift节点修改/etc/hosts文献,加入其他swift节点的IP和hostname,如下:2、 container-replicator ERROR rsync failed with 5: rsync, -quiet, -no-motd, -timeout=10, -contimeout=1, -whole-file, 3、 swift error: Errno 32 Broken pipe