Yandex.Cloud дахь 1C-Bitrix дээрх сайттай VDS-ийн нэмэгдэл нөөцлөлт

Сайтыг 2C-Bitrix: Сайтын менежментэд өдөрт 1 удаа (файл болон mysql мэдээллийн сан) нөөцлөх, өөрчлөлтийн түүхийг 90 хоногийн турш хадгалах шаардлагатай байсан.

Энэ сайт нь "7C-Bitrix: Web Environment" суулгасан CentOS 1 үйлдлийн системтэй VDS дээр байрладаг. Нэмж хэлэхэд, үйлдлийн системийн тохиргооны нөөц хуулбарыг хий.

Шаардлагууд:

  • Давтамж - өдөрт 2 удаа;
  • Сүүлийн 90 хоногийн турш хуулбарыг хадгалах;
  • Шаардлагатай бол тодорхой огноогоор бие даасан файлуудыг авах чадвар;
  • Нөөцлөлтийг VDS-ээс өөр мэдээллийн төвд хадгалах ёстой;
  • Хаанаас ч (өөр сервер, локал компьютер гэх мэт) нөөцлөлтөд хандах чадвар.

Хамгийн чухал зүйл бол нэмэлт зай, системийн нөөцийн хамгийн бага зарцуулалтаар нөөцлөлтийг хурдан үүсгэх чадвар байв.

Энэ нь бүхэл системийг хурдан сэргээх агшин зуурын тухай биш, харин файл, мэдээллийн сан, өөрчлөлтийн түүхийн тухай юм.

Эхний мэдээлэл:

  • XEN виртуалчлал дээрх VDS;
  • үйлдлийн систем CentOS 7;
  • 1C-Bitrix: Вэб орчин;
  • "1C-Bitrix: Сайтын менежмент" дээр суурилсан сайт, Стандарт хувилбар;
  • Файлын хэмжээ 50 ГБ бөгөөд өсөх болно;
  • Өгөгдлийн сангийн хэмжээ 3 ГБ бөгөөд өсөх болно.

1C-Bitrix-д суурилуулсан стандарт нөөцлөлт - нэн даруй хасагдсан. Энэ нь зөвхөн жижиг сайтуудад тохиромжтой, учир нь:

  • Сайтын бүрэн хуулбарыг бүрдүүлдэг бөгөөд хуулбар бүр нь миний файлыг эзлэхийн хэрээр их зай эзэлнэ, миний хувьд энэ нь 50 ГБ байна.
  • Нөөцлөлтийг PHP ашиглан хийдэг бөгөөд энэ нь ийм хэмжээний файлтай байх боломжгүй бөгөөд энэ нь серверийг хэт ачаалах бөгөөд хэзээ ч дуусахгүй.
  • Мэдээжийн хэрэг, бүтэн хуулбарыг хадгалахад 90 хоногийн тухай ярих боломжгүй.

Хостерийн санал болгож буй шийдэл бол VDS-тэй ижил мэдээллийн төвд байрлах нөөц диск юм, гэхдээ өөр сервер дээр. Та FTP-ээр дамжуулан дисктэй ажиллаж, өөрийн скриптүүдийг ашиглаж болно, эсвэл VDS дээр ISPManager суулгасан бол түүний нөөц модулиар дамжуулан ашиглах боломжтой. Нэг дата төвийг ашигладаг тул энэ сонголт тохиромжгүй.

Дээр дурдсан бүхнээс харахад миний хувьд хамгийн сайн сонголт бол Yandex.Cloud (Object Storage) эсвэл Amazon S3 (Amazon Simple Storage Service) дээрх өөрийн хувилбарын дагуу нэмэлт нөөцлөлт хийх явдал юм.

Үүнд:

  • VDS-д root хандалт;
  • суулгасан давхардлын хэрэгсэл;
  • Yandex.Cloud дахь данс.

нэмэлт нөөц - зөвхөн сүүлийн нөөцлөлтөөс хойш өөрчлөгдсөн өгөгдлийг архивлах арга.

давхардсан байдал - rsync алгоритмыг ашигладаг, Amazon S3-тай ажиллах боломжтой нөөцлөх хэрэгсэл.

Yandex.Cloud болон Amazon S3

Миний хувьд энэ тохиолдолд Yandex.Cloud болон Amazon S3 хооронд ямар ч ялгаа байхгүй. Yandex нь Amazon S3 API-ийн үндсэн хэсгийг дэмждэг тул та S3-тэй ажиллах боломжтой шийдлүүдийг ашиглан түүнтэй ажиллах боломжтой. Миний хувьд энэ бол давхардлын хэрэгсэл юм.

Yandex-ийн гол давуу тал нь рублиэр төлбөр хийх боломжтой, хэрэв маш их мэдээлэл байгаа бол курст ямар ч холбоос байхгүй болно. Хурдны хувьд Амазоны Европын дата төвүүд Yandex дахь Оросын төвүүдтэй тэнцүү ажилладаг, жишээлбэл, та Франкфуртыг ашиглаж болно. Би өмнө нь Amazon S3-ийг ижил төстэй ажилд ашиглаж байсан бол одоо Yandex-г туршиж үзэхээр шийдсэн.

Yandex.Cloud-ийг тохируулж байна

1. Та Yandex.Cloud дээр төлбөрийн данс үүсгэх хэрэгтэй. Үүнийг хийхийн тулд та Yandex акаунтаараа Yandex.Cloud руу нэвтрэх эсвэл шинээр үүсгэх хэрэгтэй.

2. Cloud үүсгэх.
Yandex.Cloud дахь 1C-Bitrix дээрх сайттай VDS-ийн нэмэгдэл нөөцлөлт

3. "Үүлэн" хэсэгт "Каталог" үүсгэнэ үү.
Yandex.Cloud дахь 1C-Bitrix дээрх сайттай VDS-ийн нэмэгдэл нөөцлөлт

4. "Каталог"-ын хувьд "Үйлчилгээний данс" үүсгэнэ үү.
Yandex.Cloud дахь 1C-Bitrix дээрх сайттай VDS-ийн нэмэгдэл нөөцлөлт

5. "Үйлчилгээний бүртгэл"-ийн хувьд түлхүүрүүдийг үүсгэнэ үү.
Yandex.Cloud дахь 1C-Bitrix дээрх сайттай VDS-ийн нэмэгдэл нөөцлөлт

6. Түлхүүрүүдийг хадгалаарай, ирээдүйд танд хэрэгтэй болно.
Yandex.Cloud дахь 1C-Bitrix дээрх сайттай VDS-ийн нэмэгдэл нөөцлөлт

7. "Каталог"-ын хувьд "Хувин" үүсгэхийн тулд файлууд түүн рүү орох болно.
Yandex.Cloud дахь 1C-Bitrix дээрх сайттай VDS-ийн нэмэгдэл нөөцлөлт

8. Би хязгаар тогтоож, "Хүйтэн агуулах" -ыг сонгохыг зөвлөж байна.
Yandex.Cloud дахь 1C-Bitrix дээрх сайттай VDS-ийн нэмэгдэл нөөцлөлт

Сервер дээр хуваарьт нөөцлөлтийг тохируулж байна

Энэхүү гарын авлага нь удирдлагын үндсэн ур чадваруудыг агуулна.

1. VDS дээр давхардуулах хэрэгслийг суулгана уу

yum install duplicity

2. MySQL dumps-д зориулсан хавтас үүсгэ, миний хувьд энэ нь VDS root-д /backup_db байна.

3. Bash скриптүүдэд /backup_scripts хавтас үүсгээд /backup_scripts/backup.sh нөөцлөх эхний скриптийг үүсгэнэ үү.

Скриптийн агуулга:

#!`which bash`


# /backup_scripts/backup.sh

# Это условие проверяет не идёт ли в данный момент процесс резервного копирования, если идёт, то на email отправляется сообщение об ошибке (этот блок можно не использовать)
if [ -f /home/backup_check.mark ];
then

DATE_TIME=`date +"%d.%m.%Y %T"`;

/usr/sbin/sendmail -t <<EOF
From:backup@$HOSTNAME
To:<Ваш EMAIL>
Subject:Error backup to YANDEX.CLOUD
Content-Type:text/plain; charset=utf-8
Error backup to YANDEX.CLOUD

$DATE_TIME
EOF

else

# Основной блок отвечающий за резервное копирование
# Если нет ощибки ставим метку и запускаем backup

echo '' > /home/backup_check.mark;


# Удаляем файлы с дампами базы оставшиеся от предыдущего backup

/bin/rm -f /backup_db/*


# Делаем дамп всех mysql баз, предполагается что доступ добавлен в файле /root/.my.cnf

DATETIME=`date +%Y-%m-%d_%H-%M-%S`;

`which mysqldump` --quote-names --all-databases | `which gzip` > /backup_db/DB_$DATETIME.sql.gz


# Добавляем данные для отправки в Яндекс.

export PASSPHRASE=<Придумайте пароль для шифрования архива>
export AWS_ACCESS_KEY_ID=<Идентификатор ключа полученный у Яндекса>
export AWS_SECRET_ACCESS_KEY=<Секретный ключ полученный у Яндекса>


# Запускаем duplicity для резервирования необходимых папок на сервере.
# Данная команда будет создавать полный backup раз в месяц и до следующего месяца добавлять инкрементальные к нему
# -- exclude это папки, которые нужно исключить, я исключаю все папки с кешем битрикса
# --include папки которые нужно резервировать в моём случае это:
# - /backup_db
# - /home
# - /etc
# s3://storage.yandexcloud.net/backup , backup это имя созданного выше бакета

# Техническая особенность и значения некоторых параметров:
# Две строки "--exclude='**'" и "/" нужны, чтобы можно было выше оперировать --include и --exclude для разных папок. Эти две строчки сначала добавляют в бэкап весь сервер "/", потом исключают его "--exclude='**'"
# --full-if-older-than='1M' - создавать полную копию каждый месяц
# --volsize='512' - максимальный размер каждого из файлов в бэкапе в мегабайтах
# --log-file='/var/log/duplicity.log' - куда писать лог файл

`which duplicity` 
    --s3-use-ia --s3-european-buckets 
    --s3-use-new-style 
    --s3-use-multiprocessing 
    --s3-multipart-chunk-size='128' 
    --volsize='512' 
    --no-print-statistics 
    --verbosity=0 
    --full-if-older-than='1M' 
    --log-file='/var/log/duplicity.log' 
    --exclude='**/www/bitrix/backup/**' 
    --exclude='**/www/bitrix/cache/**' 
    --exclude='**/www/bitrix/cache_image/**' 
    --exclude='**/www/bitrix/managed_cache/**' 
    --exclude='**/www/bitrix/managed_flags/**' 
    --exclude='**/www/bitrix/stack_cache/**' 
    --exclude='**/www/bitrix/html_pages/*/**' 
    --exclude='**/www/bitrix/tmp/**' 
    --exclude='**/www/upload/tmp/**' 
    --exclude='**/www/upload/resize_cache/**' 
    --include='/backup_db' 
    --include='/home' 
    --include='/etc' 
    --exclude='**' 
    / 
    s3://storage.yandexcloud.net/backup



# Данная команда нужна для чистки.
# Она оставляет 3 последних полных backup и ассоциированных с ними инкрементальных backup.
# Т.о. у меня остаются backup за 3 месяца, т.к. первая команда каждый месяц делает новый полный backup

`which duplicity` remove-all-but-n-full 3 --s3-use-ia --s3-european-buckets --s3-use-new-style --verbosity=0 --force s3://storage.yandexcloud.net/backup



unset PASSPHRASE
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY

# Удаляем метку об идущем backup

/bin/rm -f /home/backup_check.mark;

fi

4. Скриптийг анх удаа ажиллуулж, үр дүнг шалгана уу, файлууд хувин дотор гарч ирнэ.

`which bash` /backup_scripts/backup.sh

Yandex.Cloud дахь 1C-Bitrix дээрх сайттай VDS-ийн нэмэгдэл нөөцлөлт

5. Үндсэн хэрэглэгчийг өдөрт 2 удаа, эсвэл шаардлагатай үед нь ажиллуулах скриптийг cron-д нэмнэ үү.

10 4,16 * * * `which bash` /backup_scripts/backup.sh

Yandex.Cloud-аас өгөгдөл сэргээх

1. Сэргээх хавтас /backup_restore үүсгэ

2. Bash сэргээх скрипт /backup_scripts/restore.sh хийнэ үү

Би тодорхой файлыг сэргээх хамгийн их хүссэн жишээг өгье.

#!`which bash`

export PASSPHRASE=<Пароль для шифрования архива используемый при бэкапе>
export AWS_ACCESS_KEY_ID=<Идентификатор ключа полученный у Яндекса>
export AWS_SECRET_ACCESS_KEY=<Секретный ключ полученный у Яндекса>

# 3 примера, раскомментировать нужный

# Получить статус backup
#`which duplicity` collection-status s3://storage.yandexcloud.net/backup

# Восстановить index.php из корня сайта
#`which duplicity` --file-to-restore='home/bitrix/www/index.php' s3://storage.yandexcloud.net/backup /backup_restore/index.php

# Восстановить index.php из корня сайта 3х дневной давности
#`which duplicity` --time='3D' --file-to-restore='home/bitrix/www/index.php' s3://storage.yandexcloud.net/backup /backup_restore/index.php

unset PASSPHRASE
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY

3. Скриптийг ажиллуулаад үр дүнг хүлээнэ үү.

`which bash` /backup_scripts/backup.sh

/backup_restore/ хавтсанд та өмнө нь нөөцлөлтөнд орсон index.php файлыг олох болно.

Та өөрийн хэрэгцээнд нийцүүлэн илүү нарийн тохируулга хийж болно.

давхардлыг хасах

Давхардал нь нэг сул талтай - сувгийн ашиглалтын хязгаарыг тогтоох арга байхгүй. Энгийн сувагтай бол энэ нь асуудал үүсгэдэггүй, гэхдээ DDoS-ээр хамгаалагдсан сувгийн хувьд өдөрт тооцоо хийх хурдтай бол би 1-2 мегабитийн хязгаарыг тогтоох боломжтой байхыг хүсч байна.

Дүгнэж хэлэхэд

Yandex.Cloud эсвэл Amazon S3 дээр нөөцлөлт хийх нь сайт болон үйлдлийн системийн тохиргооны бие даасан хуулбарыг өөр сервер эсвэл локал компьютерээс ашиглах боломжтой болгодог. Үүний зэрэгцээ, энэ хуулбар нь хостингын хяналтын самбар эсвэл Bitrix админ самбарт харагдахгүй бөгөөд энэ нь нэмэлт аюулгүй байдлыг хангадаг.

Хамгийн харамсалтай үр дүнд та шинэ сервер байгуулж, сайтыг ямар ч өдөр байрлуулж болно. Хэдийгээр хамгийн их эрэлт хэрэгцээтэй функц нь тодорхой огноогоор файлд хандах боломжтой байх болно.

Та энэ техникийг зөвхөн 1C-Bitrix гэлтгүй дурын хөдөлгүүрт VDS эсвэл Зориулалтын сервер, сайтад ашиглаж болно. OS нь Ubuntu эсвэл Debian гэх мэт CentOS-ээс өөр байж болно.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх