十一、安装和配置Swift

1.检查分区情况

这个搭建方法有些许问题,最后启动不了,如果要完全搭建成功,移步右边蓝色链接脚本化搭建swift

2.控制节点安装与配置

说明:使用/dev/sdb2/dev/sdb3作为swift设备。

(1)创建用户、角色和服务

openstack user create --domain default --password "000000" swift

openstack role add --project service --user swift admin

openstack service create --name swift --description "OpenStack Object Storage" object-store

(2)创建Endpoints

openstack endpoint create --region RegionOne object-store public http://controller:8080/v1/AUTH_%\(project_id\)s

openstack endpoint create --region RegionOne object-store internal http://controller:8080/v1/AUTH_%\(project_id\)s

openstack endpoint create --region RegionOne object-store admin http://controller:8080/v1

(3)安装软件

yum -y install openstack-swift-proxy python-swiftclient python-keystoneclient python-keystonemiddleware memcached

(4)配置proxy-server

复制配置文件

chmod 640 /etc/swift/proxy-server.conf

修改配置文件/etc/swift/proxy-server.conf

vim /etc/swift/proxy-server.conf

[DEFAULT](添加)

swift_dir = /etc/swift

[pipeline:main](把原来那行注释掉再添加)

pipeline = catch_errors gatekeeper healthcheck proxy-logging cache container_sync bulk ratelimit authtoken keystoneauth container-quotas account-quotas slo dlo versioned_writes proxy-logging proxy-server

关键词搜 filter:keystone

将下面内容注释掉

[filter:keystoneauth]

[filter:keystoneauth]
use = egg:swift#keystoneauth

operator_roles = admin,user

[filter:authtoken]

paste.filter_factory = keystonemiddleware.auth_token:filter_factory

www_authenticate_uri = http://controller:5000

auth_url = http://controller:5000

memcached_servers = controller:11211

auth_type = password

project_domain_id = default

user_domain_id = default

project_name = service

username = swift

password = 000000

delay_auth_decision = True

[filter:cache] 把原本的ip改为controller

use = egg:swift#memcache

memcache_servers = controller:11211

3.对象存储节点(Compute)的安装与配置

(1)安装和配置rsyncd

安装软件

yum install -y xfsprogs rsync

准备磁盘和挂载(根据自己分区情况改)

mkfs.xfs /dev/sdb2
mkfs.xfs /dev/sdb3
mkdir -p /srv/node/sdb2
mkdir -p /srv/node/sdb3

 修改配置(找不到文件/进入的是新文件就不保存退出:q!用补全的方式手打进去)

vim /etc/fstab

 添加下面内容,sdb2-3是根据自己的情况改

/dev/sdb2 /srv/node/sdb2 xfs noatime,nodiratime,nobarrier,logbufs=8 0 2

/dev/sdb3 /srv/node/sdb3 xfs noatime,nodiratime,nobarrier,logbufs=8 0 2

       保存退出后

挂载分区(也是根据自己情况改)

mount /srv/node/sdb2

mount /srv/node/sdb3

配置syncd(计算节点compute的ip)

vim /etc/rsyncd.conf
uid = swift

gid = swift

log file = /var/log/rsyncd.log

pid file = /var/run/rsyncd.pid

address = 192.168.200.20
[account]
max connections = 2
path = /srv/node/
read only = False
lock file = /var/lock/account.lock

[container]
max connections = 2
path = /srv/node/
read only = False
lock file = /var/lock/container.lock

[object]
max connections = 2
path = /srv/node/
read only = False
lock file = /var/lock/object.lock

保存退出

启动rsyncd服务

systemctl enable rsyncd.service

systemctl start rsyncd.service

(2)安装Swift组件

安装软件

yum -y install openstack-swift-account openstack-swift-container openstack-swift-object

复制account-server、container-server和object-server的配置文件

chmod 640 /etc/swift/account-server.conf
chmod 640 /etc/swift/container-server.conf
chmod 640 /etc/swift/object-server.conf

修改  第一项   account-server的配置文件

vim /etc/swift/account-server.conf

[DEFAULT](计算节点ip)

bind_ip = 192.168.200.20

bind_port = 6202

user = swift

swift_dir = /etc/swift

devices = /srv/node

mount_check = True

[pipeline:main](先注释原本的)

pipeline = healthcheck recon account-server

[filter:recon]    (这步完成后保存退出)

[filter:recon]  
use = egg:swift#recon

recon_cache_path = /var/cache/swift

修改   第二项  container-server的配置文件

vim /etc/swift/container-server.conf

[DEFAULT](计算节点compute的ip)

bind_ip = 192.168.200.20

bind_port = 6201

user = swift

swift_dir = /etc/swift

devices = /srv/node

mount_check = True

[pipeline:main](先注释原本的)

pipeline = healthcheck recon container-server

[filter:recon](最后面添加)

[filter:recon]
use = egg:swift#recon

recon_cache_path = /var/cache/swift

修改  第三项    object-server的配置文件

vim /etc/swift/object-server.conf

[DEFAULT]  (计算节点ip)

bind_ip = 192.168.200.20

bind_port = 6200

user = swift

swift_dir = /etc/swift

devices = /srv/node

mount_check = True

[pipeline:main](注释原本的后添加)

pipeline = healthcheck recon object-server

[filter:recon](最后面添加,相比前两项多了一行)

[filter:recon]
use = egg:swift#recon

recon_cache_path = /var/cache/swift

recon_lock_path = /var/lock

保存退出

准备文件夹

chown -R swift:swift /srv/node

mkdir -p /var/cache/swift

chown -R root:swift /var/cache/swift

chmod -R 775 /var/cache/swift

(3)生成环

生成--账户环

(计算节点ip)(根据自己实际的分区是sdb还是sdc)

cd /etc/swift
swift-ring-builder account.builder create 8 2 1
swift-ring-builder account.builder add --region 1 --zone 1 \
--ip 192.168.200.20 --port 6202 --device sdb2 --weight 100
swift-ring-builder account.builder add --region 1 --zone 1 \
--ip 192.168.200.20 --port 6202 --device sdb3 --weight 100

如果出现下面这种错误,是因为没有打swift-ring-builder account.builder create 8 2 1这个

验证环

swift-ring-builder account.builder

平衡环

swift-ring-builder account.builder rebalance
生成--容器环
cd /etc/swift
swift-ring-builder container.builder create 8 2 1

计算节点ip跟自己实际分区sdb或sdc

swift-ring-builder container.builder add --region 1 --zone 1 \
--ip 192.168.200.20 --port 6201 --device sdb2 --weight 100
swift-ring-builder container.builder add --region 1 --zone 1 \
--ip 192.168.200.20 --port 6201 --device sdb3 --weight 100

验证环

swift-ring-builder container.builder

平衡环

swift-ring-builder container.builder rebalance

生成--对象环
cd /etc/swift
swift-ring-builder object.builder create 8 2 1
swift-ring-builder object.builder add --region 1 --zone 1 \
--ip 192.168.200.20 --port 6200 --device sdb2 --weight 100
swift-ring-builder object.builder add --region 1 --zone 1 \
--ip 192.168.200.20 --port 6200 --device sdb3 --weight 100

验证环

swift-ring-builder object.builder

平衡环

swift-ring-builder object.builder rebalance

(4)分发环

将account.ring.gz、container.ring.gz、 object.ring.gz复制到所有节点(包括存储节点和控制节点)的 /etc/swift目录下。

scp /etc/swift/account.ring.gz controller:/etc/swift/.

 yes   输入密码

scp /etc/swift/container.ring.gz controller:/etc/swift/.

输入密码即可

scp /etc/swift/object.ring.gz controller:/etc/swift/.

 密码

controller节点ls /etc/swift可以看到已经传过来了

(5)最后配置

(1)复制配置文件compute节点
chmod 640 /etc/swift/swift.conf
(2)修改配置文件
vim /etc/swift/swift.conf

[swift-hash]

swift_hash_path_suffix = HASH_PATH_SUFFIX

swift_hash_path_prefix = HASH_PATH_PREFIX
[storage-policy:0]
name = Policy-0

default = yes

(3)分发配置文件   在compute节点中

把 swift.conf文件复制到 所有节点(包括存储节点和控制节点)的/etc/swift目录。

chown -R root:swift /etc/swift

 传到controller节点

scp /etc/swift/swift.conf controller:/etc/swift/swift.conf

输入密码

(4)在控制节点controller运行
systemctl enable openstack-swift-proxy.service memcached
systemctl start openstack-swift-proxy.service memcached.service
(5)在存储节点compute运行

1

systemctl enable openstack-swift-account \
openstack-swift-account-auditor \
openstack-swift-account-reaper.service \
openstack-swift-account-replicator.service

 2

systemctl start openstack-swift-account.service \
openstack-swift-account-auditor.service \
openstack-swift-account-reaper.service \
openstack-swift-account-replicator.service

 3

systemctl enable openstack-swift-container.service \
openstack-swift-container-auditor.service \
openstack-swift-container-replicator.service \
openstack-swift-container-updater.service

 4

systemctl start openstack-swift-container.service \
openstack-swift-container-auditor.service \
openstack-swift-container-replicator.service \
openstack-swift-container-updater.service

 5

systemctl enable openstack-swift-object.service \
openstack-swift-object-auditor.service \
openstack-swift-object-replicator.service \
openstack-swift-object-updater.service

 6

systemctl start openstack-swift-object.service \
openstack-swift-object-auditor.service \
openstack-swift-object-replicator.service \
openstack-swift-object-updater.service

4.验证

在控制节点controller

swift stat
openstack container create container1
openstack object create container1 FILE
openstack object list container1
openstack object save container1 FILE

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐