⛔ PROBLEMA ⛔ | ✅ SOLUÇÃO ✅ |
---|---|
Precisa de um local seguro e barato para armazenar seus backups? Veja aqui com o Tiozão como a S3 da OCI (Oracle Cloud Infrastructure) junto com o Rclone podem te ajudar. Partiu conferir? |
Uma visão geral de conceitos na OCI - https://docs.oracle.com/pt-br/iaas/Content/Identity/Concepts/overview.htm
Uma visão sobre Object Storate - https://docs.oracle.com/en-us/iaas/Content/Object/Concepts/objectstorageoverview.htm#Overview_of_Object_Storage
Acesse sua conta na interface web da OCI: https://cloud.oracle.com
Doc: https://docs.oracle.com/en-us/iaas/Content/Identity/users/create-user-accounts.htm
OCI : Identity & Security => Domains => Default => Users => Create user
First name: Zabbix
Last name: Backup
Use the email address as the username: NO
Username: [email protected]
Email: [email protected]
Doc: https://docs.oracle.com/en-us/iaas/Content/Email/Reference/gettingstarted_topic-create-group.htm
OCI : Identity & Security => Domains => Default => Groups => Create Group
Name: Admin-Zabbix
Description: Administradores do Compartment Zabbix
Select users to assign this group.
Doc: https://docs.oracle.com/en-us/iaas/Content/Identity/compartments/To_create_a_compartment.htm
OCI : Identity & Security => Compartments => Create Compartment
Name: Zabbix-Compartment
Description: Compartimento exclusivo para Zabbix
Tag key: COMPARTMENT
Tag value: Zabbix
Doc: https://docs.oracle.com/en-us/iaas/compute-cloud-at-customer/topics/object/creating-a-bucket.htm
OCI : Storage => Buckets => Create Bucket (🚨Select the compartment created previously Zabbix-Compartment
)
Bucket Name: Bucket-Zabbix
Enable Auto-Tiering: YES
Tag key: BUCKET
Tag Value: Zabbix
OCI : Identity & Security => Policies =>Create Policy
Name: Policy-Admin-Zabbix
Description: Politica de Administrador do Bucket-Zabbix
Compartment: root
Policy Builder:
Policy use cases: Compartment Management
Common policy templates: Let compartment admins manage the compartment
Identify domain: Default
Groups: Admin-Zabbix
Location: Zabbix-Compartment
💡Policy Statements
Allow group 'Default'/'Admin-Zabbix' to manage all-resources in compartment Zabbix-Compartment
Doc: https://docs.oracle.com/en-us/iaas/Content/Identity/access/managing-user-credentials.htm#Working2
Várias credenciais podem ser criadas para o mesmo usuário. Aquelas que não forem mais uilizadas podem podem ser revogadas.
🤓 Você que já é usuário ADMIN na OCI pode criar uma credencial para ele.
🚨 Lembre-se que esse usuário é o equivalente aoroot do Linux
, tendo acesso completo à qualquer objeto, portanto minha recomendação é criar um usuário/grupo/compartment/bucket específico para cada necessidade, conforme procedimentos acima.
OCI : Identity & Security => Domains => Default => Users
Zabbix => Customer secret keys => Generate secret key
Name: rclone
Generated key: Copy this password for your records. It won't be shown again.
Acesse o servidor Zabbix e torne-se o root.
dnf -y install rclone
rclone --version
# Atualizar a verão é fácil, pois é escrito em "GO"
rclone selfupdate
rclone --version
Existem diversas formas de se configurar o rclone, mas para este caso específico do S3 da OCI prefiro editar o arquivo de configuração e preencher os campos conforme abaixo:
# Criar arquivo
mkdir -p ~/.config/rclone
# Preencher com o "template"
cat << '_EOF' >> ~/.config/rclone/rclone.conf
[s3-oci-zabbix]
type = s3
provider = Other
access_key_id = YOUR-ACCESS-KEY-ID
secret_access_key = YOUR-SECRET-ACCESS-KEY
endpoint = YOUR-ENDPOINT
region = YOUR-REGION
location_constraint = YOUR-REGION
acl = private
_EOF
Onde obter YOUR-ACCESS-KEY-ID, YOUR-SECRET-ACCESS-KEY, YOUR-ENDPOINT e YOUR-REGION ?
YOUR-ACCESS-KEY-ID - quando da criação do Customer secret keys para seu usuário foi gerado um
YOUR-SECRET-ACESSS-KEY - quando escolheu Generate secret key lhe foi mostrado uma única vez (lembra?)
YOUR-ENDPOINT - https://<object_storage_namespace>.compat.objectstorage.sa-vinhedo-1.oraclecloud.com.
Acesse o link https://docs.oracle.com/en-us/iaas/api/#/en/s3objectstorage/20160918/ e pesquise pela sua região (utilize o CTRL+F)
YOUR-REGION - no meu caso é sa-vinhedo-1 - https://docs.oracle.com/en-us/iaas/Content/GSG/Concepts/working-with-regions.htm
object_storage_namespace - no meu caso é axbc4suhcahe. Entenda melhor aqui https://docs.oracle.com/en-us/iaas/Content/Object/Tasks/understandingnamespaces.htm
Meu ~/.config/rclone/rclone.conf
ficou assim:
[s3-oci-zabbix]
type = s3
provider = Other
access_key_id = YOUR-ACCESS-KEY-ID # não mostro por motivos óbvios
secret_access_key = YOUR-SECRET-ACCESS-KEY # principalmente a senha. pode esquecer.
endpoint = https://axbc4suhcahe.compat.objectstorage.sa-vinhedo-1.oraclecloud.com
region = sa-vinhedo-1
location_constraint = sa-vinhedo-1
acl = private
# lista todos remotos disponíveis no arquivo de configuração
rclone listremotes
s3-oci-zabbix:
# lista todos os buckets que o usuário tem acesso
rclone lsd s3-oci-zabbix:
-1 2024-02-13 11:12:30 -1 Bucket-Zabbix
Criar script de backup
backup-to-bucket-oci.sh
Esse script apenas serve de inspiração para que seus arquivos no servidor zabbix sejam copiados para o OCI.
Note que o diretório
/var/lib/mysql/
(onde normalmente fica a base do MySQL) NÃO está sendo copiado.O ideal é faze um dump da base de dados em formato sql e incluir o diretório onde encontra-se o dump.
Para utilizar em outros servidores basta ter o rclone e a configuração ajustada para suas necessidades.
É claro que você também pode utilizar o crontab para agendar esse BKP periodicamente.
cat << '_EOF' >> backup-to-bucket-oci.sh
#!/bin/bash
RcloneRcat="rclone rcat --s3-max-upload-parts=100000 --s3-chunk-size=50M --progress --stats=0"
Bucket="s3-oci-zabbix:Bucket-Zabbix"
echo
echo "Envio 'ZABBIX' para a nuvem... `date`"
echo "================================================================================================"
tar --warning=none -czf - /root/ /etc/zabbix/ /usr/lib/zabbix/ | $RcloneRcat $Bucket/ZABBIX.tgz
[ $? -ne 0 ] && echo "*** ERROR *** ZABBIX"
echo
echo "================================================================================================"
echo "TOTAL do Destino: [$Bucket] ... `date`"
echo "================================================================================================"
rclone size $Bucket/
_EOF
DICA: Ajuste o rclone com alguns parâmetros mais interessantes
rclone help flags | grep -E "(s3-chunk-size|s3-max-upload-parts|progress|stats Dur)"
-P, --progress Show progress during transfer
--progress-terminal-title Show progress on the terminal title (requires -P/--progress)
--stats Duration Interval between printing stats, e.g. 500ms, 60s, 5m (0 to disable) (default 1m0s)
--s3-chunk-size SizeSuffix Chunk size to use for uploading (default 5Mi)
--s3-max-upload-parts int Maximum number of parts in a multipart upload (default 10000)
chmod +x backup-to-bucket-oci.sh
./backup-to-bucket-oci.sh
Envio 'ZABBIX' para a nuvem... ter 13 fev 2024 11:55:37 -04
================================================================================================
tar: Removendo "/" inicial dos nomes dos membros
tar: Removendo "/" inicial dos alvos de links físicos
Transferred: 15.801 KiB / 15.801 KiB, 100%, 0 B/s, ETA -
Transferred: 1 / 1, 100%
Elapsed time: 0.3s
================================================================================================
TOTAL do Destino: [s3-oci-zabbix:Bucket-Zabbix] ... ter 13 fev 2024 11:55:38 -04
================================================================================================
Total objects: 1
Total size: 7.900 KiB (8090 Byte)
lsl
to list modification time, size and path of objects only# lista todos os objetos de um bucket
rclone lsl s3-oci-zabbix:Bucket-Zabbix
8090 2024-02-13 11:55:37.801919279 ZABBIX.tgz
Doc: https://docs.oracle.com/en-us/iaas/Content/Billing/Concepts/costanalysisoverview.htm
OCI : Billing & Cost Management => Cost analysis
Média de R$ 0,05 por dia
Desde novembro/2023 quando iniciei diversos testes de recursos.
Time Period : Nov 1, 2023-Mar 9, 2024 | Cost To Date : R$5.65 (BRL)
Média de R$ 6.80 por dia (2.22 TB)
Bucket name: Bucket-XXX
Approximate Object Count: 10 objects
Approximate Size: 2.22 TiB
Time Period : Feb 8, 2024-Feb 26, 2024 | Cost To Date : R$121.44 (BRL)
echo
echo "Envio 'WEBMAIL' para nuvem ... `date`"
echo "================================================================================================"
# Montar o servidor de webmail via ssh
mkdir -p /tmp/remote/
sshfs [email protected]:/ /tmp/remote/
cd /tmp/remote/
tar --warning=none -czf - etc/ home/ var/www/html/ | $RcloneRcat $BucketCopy/WEBMAIL.tgz
[ $? -ne 0 ] && echo "*** ERROR *** WEBMAIL"
cd
umount /tmp/remote/
rclone size $BucketCopy/WEBMAIL.tgz
Média de R$ 0,01 por dia (3.72 GB)
Bucket name: Bucket-YYY
Approximate Object Count: 1,689 objects
Approximate Size: 3.72 GiB
Time Period : Feb 1, 2024-Feb 26, 2024 | Cost To Date : R$0.26 (BRL)
Para dirimir dúvidas e/ou sugestões entre no Grupo Tiozão do Linux no Telegram.
Gostou? Então não deixe de assistir ao vídeo onde explico melhor essa implementação.
https://www.youtube.com/watch?v=2fvNdMYQSes&ab_channel=TiozãodoLinux
Se também gostaria de baixar seus arquivos da OCI para um SAS local, então não deixe de ver esse artigo: https://wiki.tiozaodolinux.com/Guide-for-Linux/Backup-Cloud-Oracle
Que tal ter um acesso WEB aos seus Buckets pra chamar de SEU? https://demo.filestash.app/login