swift proxy-server 安装

Swift 安装
1 Swift(Proxy+storage)
将swift 和keystone分离安装,4个zone用4块硬盘来替代
1.1 环境说明
机器名    eth0    说明
Cloudtest01    192.168.0.17/24    Keystone glance nova-api nova-volumes
Cloudtest03    192.168.0.21/24    Proxy+storage

1.2 系统ubuntu12.04
最小化安装,只需要安装ssh server就可以。
1.3 设置网络
编辑 /etc/network/interfaces
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.21
netmask 255.255.255.0
gateway 192.168.0.1
dns-search openstack.com
dns-nameservers 8.8.8.8

auto eth1
iface eth1 inet manual
up ifconfig eth1 up
查看当前网卡情况
root@cloudtest03:~# mii-tool
SIOCGMIIREG on eth0 failed: Input/output error
SIOCGMIIREG on eth0 failed: Input/output error
eth0: negotiated 100baseTx-FD flow-control, link ok
1.4 设置hostname
root@cloudtest03:~# hostname cloudtest03
root@cloudtest03:~# cat /etc/hosts
127.0.0.1       localhost
#127.0.1.1      cloudtest03
192.168.0.17    cloudtest01.openstack.com cloudtest01
192.168.0.20    cloudtest02.openstack.com cloudtest02
192.168.0.21    cloudtest03.openstack.com cloudtest03

root@cloudtest03:~# hostname -f
cloudtest03.openstack.com

1.5 安装软件
root@cloudtest03:~# apt-get update  更新源

apt-get -y install swift swift-proxy swift-account swift-container \
 swift-object xfsprogs curl python-pastedeploy python-keystone python-keystoneclient

1.6 分区
对四块硬盘进行分区,每块硬盘划分一块分区
 fdisk /dev/sdc
 fdisk /dev/sdd
fdisk /dev/sde
fdisk /dev/sdf
 mkfs.xfs -i size=1024 /dev/sdc1
mkfs.xfs -i size=1024 /dev/sdd1
mkfs.xfs -i size=1024 /dev/sde1
 mkfs.xfs -i size=1024 /dev/sdf1
 mkdir /mnt/swift_backend
 pushd /mnt/swift_backend
mkdir node1 node2 node3 node4
popd
 
修改/etc/fstab,末尾添加
/dev/sdc1 /mnt/swift_backend/node1 xfs noatime,nodiratime,nobarrier,logbufs=8 0 0
/dev/sdd1 /mnt/swift_backend/node2 xfs noatime,nodiratime,nobarrier,logbufs=8 0 0
/dev/sde1 /mnt/swift_backend/node3 xfs noatime,nodiratime,nobarrier,logbufs=8 0 0
/dev/sdf1 /mnt/swift_backend/node4 xfs noatime,nodiratime,nobarrier,logbufs=8 0 0
挂载磁盘
mount -a
mount –l  可以查看挂载磁盘情况
创建连接文件
chown swift.swift /mnt/swift_backend/*
for i in {1..4}; do sudo ln -s /mnt/swift_backend/node$i /srv/node$i; done;
mkdir -p /etc/swift/account-server \
/etc/swift/container-server \
/etc/swift/object-server \
mkdir /run/swift
chown -L -R swift.swift /etc/swift /srv/node[1-4]/ /run/swift
系统启动时启动Swift服务,需要把如下两行命令写入 /etc/rc.local里,位置在“exit 0;”之前:
sudo mkdir -p /var/cache/swift /var/cache/swift2 /var/cache/swift3 /var/cache/swift4
sudo chown swift:swift /var/cache/swift*
soudo mkdir -p /var/run/swift
sudo chown swift:swift /var/run/swift

1.7 配置rsync
sed -i 's/RSYNC_ENABLE=false/RSYNC_ENABLE=true/g' /etc/default/rsync

创建/etc/rsyncd.conf
# General stuff
uid = swift
gid = swift
log file = /var/log/rsyncd.log
pid file = /run/rsyncd.pid
address = 127.0.0.1

# Account Server replication settings
[account6012]
max connections = 25
path = /srv/node1/
read only = false
lock file = /run/lock/account6012.lock

[account6022]
max connections = 25
path = /srv/node2/
read only = false
lock file = /run/lock/account6022.lock

[account6032]
max connections = 25
path = /srv/node3/
read only = false
lock file = /run/lock/account6032.lock

[account6042]
max connections = 25
path = /srv/node4/
read only = false
lock file = /run/lock/account6042.lock

# Container server replication settings

[container6011]
max connections = 25
path = /srv/node1/
read only = false
lock file = /run/lock/container6011.lock

[container6021]
max connections = 25
path = /srv/node2/
read only = false
lock file = /run/lock/container6021.lock

[container6031]
max connections = 25
path = /srv/node3/
read only = false
lock file = /run/lock/container6031.lock

[container6041]
max connections = 25
path = /srv/node4/
read only = false
lock file = /run/lock/container6041.lock

# Object Server replication settings

[object6010]
max connections = 25
path = /srv/node1/
read only = false
lock file = /run/lock/object6010.lock

[object6020]
max connections = 25
path = /srv/node2/
read only = false
lock file = /run/lock/object6020.lock

[object6030]
max connections = 25
path = /srv/node3/
read only = false
lock file = /run/lock/object6030.lock

[object6040]
max connections = 25
path = /srv/node4/
read only = false
lock file = /run/lock/object6040.lock

重启服务
service rsync restart

1.8 设置日志
创建 /etc/rsyslog.d/10-swift.conf
# Uncomment the following to have a log containing all logs together
#local1,local2,local3,local4,local5.*   /var/log/swift/all.log

# Uncomment the following to have hourly proxy logs for stats processing
#$template HourlyProxyLog,"/var/log/swift/hourly/%$YEAR%%$MONTH%%$DAY%%$HOUR%"
#local1.*;local1.!notice ?HourlyProxyLog

local1.*;local1.!notice /var/log/swift/proxy.log
local1.notice           /var/log/swift/proxy.error
local1.*                ~

local2.*;local2.!notice /var/log/swift/storage1.log
local2.notice           /var/log/swift/storage1.error
local2.*                ~

local3.*;local3.!notice /var/log/swift/storage2.log
local3.notice           /var/log/swift/storage2.error
local3.*                ~

local4.*;local4.!notice /var/log/swift/storage3.log
local4.notice           /var/log/swift/storage3.error
local4.*                ~

local5.*;local5.!notice /var/log/swift/storage4.log
local5.notice           /var/log/swift/storage4.error
local5.*                ~
编辑 /etc/rsyslog.conf
$PrivDropToGroup adm
创建文件并重启rsyslog服务
mkdir -p /var/log/swift/hourly
chown -R syslog.adm /var/log/swift
chmod -R g+w /var/log/swift
service rsyslog restart

1.9 配置proxy-server
[DEFAULT]
bind_port = 8080
user = swift
swift_dir = /etc/swift

[pipeline:main]
# Order of execution of modules defined below
pipeline = catch_errors healthcheck cache authtoken keystone proxy-server

[app:proxy-server]
use = egg:swift#proxy
allow_account_management = true
account_autocreate = true
set log_name = swift-proxy
set log_facility = LOG_LOCAL0
set log_level = INFO
set access_log_name = swift-proxy
set access_log_facility = SYSLOG
set access_log_level = INFO
set log_headers = True
account_autocreate = True

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

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

[filter:cache]
use = egg:swift#memcache
set log_name = cache

[filter:authtoken]
paste.filter_factory = keystone.middleware.auth_token:filter_factory
auth_protocol = http
auth_host = 192.168.0.17
auth_port = 35357
auth_token = zhizheng
service_protocol = http
service_host = 192.168.0.17
service_port = 5000
admin_token = zhizheng
admin_tenant_name = service
admin_user = swift
admin_password = zhizheng
delay_auth_decision = 0

[filter:keystone]
paste.filter_factory = keystone.middleware.swift_auth:filter_factory
operator_roles = admin, swiftoperator
is_admin = true
创建/etc/swift/swift.conf
cat >/etc/swift/swift.conf <<EOF
[swift-hash]
# random unique string that can never change (DO NOT LOSE)
swift_hash_path_suffix = `od -t x8 -N 8 -A n </dev/random`
EOF

2.0 Account Server, Container Server, Object Server
创建/etc/swift/account-server/1.conf
cat > /etc/swift/account-server/1.conf <<EOF
[DEFAULT]
devices = /srv/node1
mount_check = false
bind_port = 6012
user = swift
log_facility = LOG_LOCAL2
recon_cache_path = /var/cache/swift
 
[pipeline:main]
pipeline = account-server

[app:account-server]
use = egg:swift#account
 
[account-replicator]
vm_test_mode = yes

[account-auditor]

[account-reaper]
EOF
创建/etc/swift/container-server/1.conf
cat >/etc/swift/container-server/1.conf <<EOF
[DEFAULT]
devices = /srv/node1
mount_check = false
bind_port = 6011
user = swift
log_facility = LOG_LOCAL2
recon_cache_path = /var/cache/swift


[pipeline:main]
pipeline = container-server

[app:container-server]
use = egg:swift#container

[container-replicator]
vm_test_mode = yes

[container-updater]

[container-auditor]

[container-sync]
EOF

创建/etc/swift/object-server/1.conf
cat > /etc/swift/object-server/1.conf <<EOF
[DEFAULT]
devices = /srv/node1
mount_check = false
bind_port = 6010
user = swift
log_facility = LOG_LOCAL2
recon_cache_path = /var/cache/swift

[pipeline:main]
pipeline = object-server

[app:object-server]
use = egg:swift#object

[object-replicator]
vm_test_mode = yes

[object-updater]

[object-auditor]
EOF
创建/etc/swift/account-server/2.conf
cat > /etc/swift/account-server/2.conf <<EOF
[DEFAULT]
devices = /srv/node2
mount_check = false
bind_port = 6022
user = swift
log_facility = LOG_LOCAL3
recon_cache_path = /var/cache/swift2
 
[pipeline:main]
pipeline = account-server

[app:account-server]
use = egg:swift#account
 
[account-replicator]
vm_test_mode = yes

[account-auditor]

[account-reaper]
EOF
创建/etc/swift/container-server/2.conf
cat >/etc/swift/container-server/2.conf <<EOF
[DEFAULT]
devices = /srv/node2
mount_check = false
bind_port = 6021
user = swift
log_facility = LOG_LOCAL3
recon_cache_path = /var/cache/swift2


[pipeline:main]
pipeline = container-server

[app:container-server]
use = egg:swift#container

[container-replicator]
vm_test_mode = yes

[container-updater]

[container-auditor]

[container-sync]
EOF

创建/etc/swift/object-server/2.conf
cat > /etc/swift/object-server/2.conf <<EOF
[DEFAULT]
devices = /srv/node2
mount_check = false
bind_port = 6020
user = swift
log_facility = LOG_LOCAL3
recon_cache_path = /var/cache/swift2

[pipeline:main]
pipeline = object-server

[app:object-server]
use = egg:swift#object

[object-replicator]
vm_test_mode = yes

[object-updater]

[object-auditor]
EOF
创建/etc/swift/account-server/3.conf
cat > /etc/swift/account-server/3.conf <<EOF
[DEFAULT]
devices = /srv/node3
mount_check = false
bind_port = 6032
user = swift
log_facility = LOG_LOCAL4
recon_cache_path = /var/cache/swift3
 
[pipeline:main]
pipeline = account-server

[app:account-server]
use = egg:swift#account
 
[account-replicator]
vm_test_mode = yes

[account-auditor]

[account-reaper]
EOF
创建/etc/swift/container-server/3.conf
cat >/etc/swift/container-server/3.conf <<EOF
[DEFAULT]
devices = /srv/node3
mount_check = false
bind_port = 6031
user = swift
log_facility = LOG_LOCAL4
recon_cache_path = /var/cache/swift3


[pipeline:main]
pipeline = container-server

[app:container-server]
use = egg:swift#container

[container-replicator]
vm_test_mode = yes

[container-updater]

[container-auditor]

[container-sync]
EOF

创建/etc/swift/object-server/3.conf
cat > /etc/swift/object-server/3.conf <<EOF
[DEFAULT]
devices = /srv/node3
mount_check = false
bind_port = 6030
user = swift
log_facility = LOG_LOCAL4
recon_cache_path = /var/cache/swift3

[pipeline:main]
pipeline = object-server

[app:object-server]
use = egg:swift#object

[object-replicator]
vm_test_mode = yes

[object-updater]

[object-auditor]
EOF
创建/etc/swift/account-server/4.conf
cat > /etc/swift/account-server/4.conf <<EOF
[DEFAULT]
devices = /srv/node4
mount_check = false
bind_port = 6042
user = swift
log_facility = LOG_LOCAL5
recon_cache_path = /var/cache/swift4
 
[pipeline:main]
pipeline = account-server

[app:account-server]
use = egg:swift#account
 
[account-replicator]
vm_test_mode = yes

[account-auditor]

[account-reaper]
EOF
创建/etc/swift/container-server/4.conf
cat >/etc/swift/container-server/4.conf <<EOF
[DEFAULT]
devices = /srv/node4
mount_check = false
bind_port = 6041
user = swift
log_facility = LOG_LOCAL5
recon_cache_path = /var/cache/swift4


[pipeline:main]
pipeline = container-server

[app:container-server]
use = egg:swift#container

[container-replicator]
vm_test_mode = yes

[container-updater]

[container-auditor]

[container-sync]
EOF

创建/etc/swift/object-server/4.conf
cat > /etc/swift/object-server/4.conf <<EOF
[DEFAULT]
devices = /srv/node4
mount_check = false
bind_port = 6040
user = swift
log_facility = LOG_LOCAL5
recon_cache_path = /var/cache/swift4

[pipeline:main]
pipeline = object-server

[app:object-server]
use = egg:swift#object

[object-replicator]
vm_test_mode = yes

[object-updater]

[object-auditor]
EOF

最后别忘了编辑 sync
cat <<EOF >>/etc/swift/container-server.conf
[container-sync]
EOF

2.1 确认目录更改权限
chown -R swift.swift /etc/swift
chown -R swift.swift /srv   
chown -R swift.swift /mnt/swift_backend/
2.2 ring server
pushd /etc/swift
swift-ring-builder object.builder create 18 3 1
swift-ring-builder container.builder create 18 3 1
swift-ring-builder account.builder create 18 3 1
swift-ring-builder object.builder add z1-192.168.0.21:6010/sdc 1
swift-ring-builder object.builder add z2-192.168.0.21:6020/sdd 1
swift-ring-builder object.builder add z3-192.168.0.21:6030/sde 1
swift-ring-builder object.builder add z4-192.168.0.21:6040/sdf 1
swift-ring-builder container.builder add z1-192.168.0.21:6011/sdc 1
swift-ring-builder container.builder add z2-192.168.0.21:6021/sdd 1
swift-ring-builder container.builder add z3-192.168.0.21:6031/sde 1
swift-ring-builder container.builder add z4-192.168.0.21:6041/sdf 1
swift-ring-builder account.builder add z1-192.168.0.21:6012/sdc 1
swift-ring-builder account.builder add z2-192.168.0.21:6022/sdd 1
swift-ring-builder account.builder add z3-192.168.0.21:6032/sde 1
swift-ring-builder account.builder add z4-192.168.0.21:6042/sdf 1
swift-ring-builder object.builder rebalance
swift-ring-builder container.builder rebalance
swift-ring-builder account.builder rebalance
2.3 启动服务
swift-init main start
swift-init rest start
2.4 启动proxy-server
swift-init proxy start
swift-init proxy restart
2.5 更改数据库的endpoint使其指向proxy-server地址
root@cloudtest01:/etc/apt# keystone endpoint-list
+----------------------------------+-----------+------------------------------------------------+------------------------------------------------+-------------------------------------------+
|                id                |   region  |                   publicurl                    |                  internalurl                   |                  adminurl                 |
+----------------------------------+-----------+------------------------------------------------+------------------------------------------------+-------------------------------------------+
| 2f73b7eff0844b6d8fea7b80d28696b4 | RegionOne | http://192.168.0.17:8776/v1/%(tenant_id)s      | http://192.168.0.17:8776/v1/%(tenant_id)s      | http://192.168.0.17:8776/v1/%(tenant_id)s |
| 69bf61249b384b75adc2b864a5f006e3 | RegionOne | http://192.168.0.17:9292/v1                    | http://192.168.0.17:9292/v1                    | http://192.168.0.17:9292/v1               |
| 8d34bbe8ffd84feabb0dba4ed522516d | RegionOne | http://192.168.0.17:8773/services/Cloud        | http://192.168.0.17:8773/services/Cloud        | http://192.168.0.17:8773/services/Admin   |
| 98f0d799541c4ae9ac37176a473dbe30 | RegionOne | http://192.168.0.17:5000/v2.0                  | http://192.168.0.17:5000/v2.0                  | http://192.168.0.17:35357/v2.0            |
| b7b2384fdbc1488293c1d38c0e7465e1 | RegionOne | http://192.168.0.17:8774/v2/%(tenant_id)s      | http://192.168.0.17:8774/v2/%(tenant_id)s      | http://192.168.0.17:8774/v2/%(tenant_id)s |
| d7c721763cec4827aecfff71d75b1020 | RegionOne | http://192.168.0.17:8080/v1/AUTH_%(tenant_id)s | http://192.168.0.17:8080/v1/AUTH_%(tenant_id)s | http://192.168.0.17:8080/v1               |
+----------------------------------+-----------+------------------------------------------------+------------------------------------------------+-------------------------------------------+
Swift的endpoint目前指向的是192.168.0.17 控制节点自身,修改数据库将其指向192.168.0.21的proxy-server地址
root@cloudtest01:/etc/apt# keystone endpoint-list
+----------------------------------+-----------+------------------------------------------------+------------------------------------------------+-------------------------------------------+
|                id                |   region  |                   publicurl                    |                  internalurl                   |                  adminurl                 |
+----------------------------------+-----------+------------------------------------------------+------------------------------------------------+-------------------------------------------+
| 2f73b7eff0844b6d8fea7b80d28696b4 | RegionOne | http://192.168.0.17:8776/v1/%(tenant_id)s      | http://192.168.0.17:8776/v1/%(tenant_id)s      | http://192.168.0.17:8776/v1/%(tenant_id)s |
| 69bf61249b384b75adc2b864a5f006e3 | RegionOne | http://192.168.0.17:9292/v1                    | http://192.168.0.17:9292/v1                    | http://192.168.0.17:9292/v1               |
| 8d34bbe8ffd84feabb0dba4ed522516d | RegionOne | http://192.168.0.17:8773/services/Cloud        | http://192.168.0.17:8773/services/Cloud        | http://192.168.0.17:8773/services/Admin   |
| 98f0d799541c4ae9ac37176a473dbe30 | RegionOne | http://192.168.0.17:5000/v2.0                  | http://192.168.0.17:5000/v2.0                  | http://192.168.0.17:35357/v2.0            |
| b7b2384fdbc1488293c1d38c0e7465e1 | RegionOne | http://192.168.0.17:8774/v2/%(tenant_id)s      | http://192.168.0.17:8774/v2/%(tenant_id)s      | http://192.168.0.17:8774/v2/%(tenant_id)s |
| d7c721763cec4827aecfff71d75b1020 | RegionOne | http://192.168.0.21:8080/v1/AUTH_%(tenant_id)s | http://192.168.0.21:8080/v1/AUTH_%(tenant_id)s | http://192.168.0.21:8080/v1               |
+----------------------------------+-----------+------------------------------------------------+------------------------------------------------+-------------------------------------------+
2.6 设置环境变量 /etc/profile 添加
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=zhizheng
export OS_AUTH_URL=http://192.168.0.17:5000/v2.0/
导出环境变量
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=zhizheng
export OS_AUTH_URL=http://192.168.0.17:5000/v2.0/
检查
root@cloudtest03:/var/log/swift# export |grep OS_
root@cloudtest03:/var/log/swift# export OS_TENANT_NAME=admin
root@cloudtest03:/var/log/swift# export OS_USERNAME=admin
root@cloudtest03:/var/log/swift# export OS_PASSWORD=zhizheng
root@cloudtest03:/var/log/swift# export OS_AUTH_URL=http://192.168.0.17:5000/v2.0/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值