Установка OpenStack Swift на Ubuntu Server
Установка Swift All in One (SAIO) на Ubuntu Server1) Устанавливаем пакеты
sudo apt-get update sudo apt-get install curl gcc memcached rsync sqlite3 xfsprogs git-core libffi-dev python-setuptools liberasurecode-dev libssl-dev sudo apt-get install python-coverage python-dev python-nose python-xattr python-eventlet python-greenlet python-pastedeploy python-netifaces python-pip python-dnspython python-mock2) Далее нужно выбрать среди 2 вариантов 2.1 или 2.2 2.1 Если устанавливаете в отдельный раздел диска:
sudo fdisk /dev/sdb sudo mkfs.xfs /dev/sdb1Открываем /etc/fstab добавляем в конец
/dev/sdb1 /mnt/sdb1 xfs noatime,nodiratime,nobarrier,logbufs=8 0 0Создаем точки монтирования и ссылки:
sudo mkdir /mnt/sdb1 sudo mount /mnt/sdb1 sudo mkdir /mnt/sdb1/1 /mnt/sdb1/2 /mnt/sdb1/3 /mnt/sdb1/4 sudo chown ${USER}:${USER} /mnt/sdb1/* sudo mkdir /srv for x in {1..4}; do sudo ln -s /mnt/sdb1/$x /srv/$x; done sudo mkdir -p /srv/1/node/sdb1 /srv/1/node/sdb5 \ /srv/2/node/sdb2 /srv/2/node/sdb6 \ /srv/3/node/sdb3 /srv/3/node/sdb7 \ /srv/4/node/sdb4 /srv/4/node/sdb8 \ /var/run/swift sudo chown -R ${USER}:${USER} /var/run/swift # **Make sure to include the trailing slash after /srv/$x/** for x in {1..4}; do sudo chown -R ${USER}:${USER} /srv/$x/; done2.2 Для использования существующего места на диске:
sudo mkdir /srv sudo truncate -s 1GB /srv/swift-disk # выделяем допустимый размер, в данном случае 1ГБ sudo mkfs.xfs /srv/swift-diskОткрываем /etc/fstab добавляем в конец
/srv/swift-disk /mnt/sdb1 xfs loop,noatime,nodiratime,nobarrier,logbufs=8 0 0Создаем точки монтирования и ссылки:
sudo mkdir /mnt/sdb1 sudo mount /mnt/sdb1 sudo mkdir /mnt/sdb1/1 /mnt/sdb1/2 /mnt/sdb1/3 /mnt/sdb1/4 sudo chown ${USER}:${USER} /mnt/sdb1/* for x in {1..4}; do sudo ln -s /mnt/sdb1/$x /srv/$x; done sudo mkdir -p /srv/1/node/sdb1 /srv/1/node/sdb5 /srv/2/node/sdb2 /srv/2/node/sdb6 /srv/3/node/sdb3 /srv/3/node/sdb7 /srv/4/node/sdb4 /srv/4/node/sdb8 /var/run/swift sudo chown -R ${USER}:${USER} /var/run/swift # **Make sure to include the trailing slash after /srv/$x/** for x in {1..4}; do sudo chown -R ${USER}:${USER} /srv/$x/; doneДобавляем следующие строки в файл /etc/rc.local (перед exit 0):
mkdir -p /var/cache/swift /var/cache/swift2 /var/cache/swift3 /var/cache/swift4 chown <your-user-name>:<your-group-name> /var/cache/swift* mkdir -p /var/run/swift chown <your-user-name>:<your-group-name> /var/run/swiftУстанавливаем клиент для swift:
cd $HOME; git clone https://github.com/openstack/python-swiftclient.git cd $HOME/python-swiftclient; sudo python setup.py develop; cd -Скачиваем и уставливаем дистрибутив swift:
git clone https://github.com/openstack/swift.git cd $HOME/swift; sudo python setup.py develop; cd - sudo pip install -U xattr sudo pip install -r test-requirements.txtНастрайваем rsyncd.conf
sudo cp $HOME/swift/doc/saio/rsyncd.conf /etc/ sudo sed -i "s/<your-user-name>/${USER}/" /etc/rsyncd.confРедактируем /etc/default/rsync:
RSYNC_ENABLE=true sudo service rsync restart rsync rsync://pub@localhost/На что получили ответ:
account6012 account6022 account6032 account6042 container6011 container6021 container6031 container6041 object6010 object6020 object6030 object6040 sudo service memcached start sudo chkconfig memcached on // включаем автозагрузку у ubuntu $ sudo update-rc.d memcached defaults4) Логирование .... необязательно
sudo cp $HOME/swift/doc/saio/rsyslog.d/10-swift.conf /etc/rsyslog.d/
Отредактировать /etc/rsyslog.conf в секции “GLOBAL DIRECTIVES”: $PrivDropToGroup admЕсли включены в конфиге hourly logs ( я не включал)Ж
sudo mkdir -p /var/log/swift/hourlyИначе:
sudo mkdir -p /var/log/swiftЗапуск логирования:
sudo chown -R syslog.adm /var/log/swift sudo chmod -R g+w /var/log/swift sudo service rsyslog restart5) Если уже существует директория /etc/swift удалите:
sudo rm -rf /etc/swiftСкопируйте дефотные конфиги в /etc/swift :
cd $HOME/swift/doc; sudo cp -r saio/swift /etc/swift; cd - sudo chown -R ${USER}:${USER} /etc/swift
mkdir -p $HOME/bin find /etc/swift/ -name \*.conf | xargs sudo sed -i "s/<your-user-name>/${USER}/" cd $HOME/swift/doc; cp saio/bin/* $HOME/bin; cd - chmod +x $HOME/bin/*Если вы монтировали раздел из свободного пространства (как я):
sed -i "s/dev\/sdb1/src\/swift-disk/" $HOME/bin/resetswiftЕсли вы не закотели писать логи (я захотел):
sed -i "/find \/var\/log\/swift/d" $HOME/bin/resetswiftКопируем тестовую конфигурацию:
cp $HOME/swift/test/sample.conf /etc/swift/test.confДобавляем переменную окружения
echo "export SWIFT_TEST_CONFIG_FILE=/etc/swift/test.conf" >> $HOME/.bashrcУбедитель что указан правильный путь к папке bin:
echo "export PATH=${PATH}:$HOME/bin" >> $HOME/.bashrcПерезагрузим окружеие :
. $HOME/.bashrcПересобираем кольца
remakeringsПроведем ряд тестов:
$HOME/swift/.unittestsСтартуем все сервисы SWIFT
startmainПолучаем an X-Storage-Url и X-Auth-Token
curl -v -H 'X-Storage-User: test:tester' -H 'X-Storage-Pass: testing' http://127.0.0.1:8080/auth/v1.0OK Авторизация через токены:
curl -v -H 'X-Auth-Token: <token-from-x-auth-token-above>' <url-from-x-storage-url-above>авторизоватлись, но там ничего нет Проверка сущестующей информации по юзеру test:tester :
swift -A http://127.0.0.1:8080/auth/v1.0 -U test:tester -K testing statЗагрузка файла для начала скачаем что нибудь
wget https://weblst.ru/item.jpgЗагрузим картинку item.jpg в контейнер images
swift -A http://127.0.0.1:8080/auth/v1.0 -U test:tester -K testing upload images item.jpgКартинка должна быть доступна по адресу http://127.0.0.1:8080/v1/AUTH_test/images/item.jpg по умолчанию у контейнера images нет прав на чтение
swift -A http://127.0.0.1:8080/auth/v1.0 -U test:tester -K testing post -r '.r:*' imagesтеперь картинки в контейнере images доступны
Стартуем сервисы . тоже самое что startmain
swift-init main start
Останавливаем сервисы
swift-init all stop
Также есть команда которая заоново создает разделы для окружения swift, удаляя старый раздел
все данные потрутся в разделе и картинки не будет
resetswift