十一、安装和配置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