برنامه نویسی

مهاجرت از Elasticsearch به Opensearch در AWS

Summarize this content to 400 words in Persian Lang

RFS چیست؟

RFS (Reindex from Snapshot) یک فرآیند انتقال داده بین نسخه‌های Elasticsearch و Opensearch یا حتی بین نسخه‌های Opensearch است که فرآیند انتقال کامل را تسهیل می‌کند، از جمله حتی یک فرآیند پروکسی برای مهاجرت در پرواز!

شروع فرآیند مهاجرت

برای شروع فرآیند انتقال، مهم است که یک تنظیمات آماده شده برای جلوگیری از مشکلات در طول مهاجرت داشته باشید. ، مرحله اول را دنبال کنید:

برای پیکربندی cdk، آن را در ترمینال محلی خود اجرا کنید:

cdk bootstrap aws://id_da_conta/região_do_opensearch

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون با پیکربندی cdk، می‌توان مرحله به مرحله را ادامه داد، نکته مهم بعدی این است که قالب migration-assistant-for-amazon-opensearch-service.template را به cloudformation وارد کنید (به طور خودکار به cloudformation از قبل با stack)، نکته ای که باید در هنگام اضافه کردن پشته مورد توجه قرار گیرد:

اگر به مرحله ای که به Stack نشان داده می شود دقت کنید در سایر مراحل مهاجرت از آن استفاده می شود!

در پایان فرآیند پشته، یک EC2 ایجاد می شود، در اسرع وقت از طریق SSM به آن متصل شوید، هنگام ورود به EC2 (چیزی مانند bootstrap-instance-STAGE-REGION)، دستور زیر را اجرا کنید:

sudo su
cd /opensearch-migrations #entrar na pasta correta para dar inicio ao bootstrap que ajudará na migração
./initBootstrap.sh && cd deployment/cdk/opensearch-service-migration

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این فرآیند معمولاً حدود 15 دقیقه طول می کشد (کاملا وقت گیر است، اما بخش های مهمی از مهاجرت را پیکربندی می کند)

اکنون، در پایان فرآیند، در پوشه فعلی (opensearch-migrations/deployment/cdk/opensearch-service-migration) یک فایل cdk.context.json وجود دارد که مسئولیت نحوه رفتار انتقال را بر عهده دارد (راهنمای پیکربندی) ) ، برای انتقال با جادوگر از طریق کنسول، فایل باید چیزی شبیه به زیر باشد:

{
“NOME_DO_OBJETO_PRINCIPAL_DO_CDK_CONTEXT”: {
“stage”: “STAGE”,
“targetCluster”: {
“endpoint”: “TARGET_CLUSTER_URL”,
“auth”: {
“type”: “sigv4”,
“region”: “us-east-1”,
“serviceSigningName”: “es”
}
},
“sourceCluster”: {
“endpoint”: “SOURCE_CLUSTER_URL”,
“version”: “ES_7.1”,
“auth”: {
“type”: “sigv4”,
“region”: “us-east-1”,
“serviceSigningName”: “es”
}
},
“vpcId”: “VPC_ID”,
“reindexFromSnapshotServiceEnabled”: true, //habilita o RFS
“artifactBucketRemovalPolicy”: “RETAIN”, // ou DESTROY Após utilizar o snapshot de dados via s3, mantém os arquivos no bucket
“migrationConsoleServiceEnabled”: true, // assistente de migração ativo
“migrationAssistanceEnabled”: true, // assistente de migração ativo
“reindexFromSnapshotExtraArgs”: “–s3-repo-uri s3://migration-artifacts-ACCOUNT_ID-STAGE-REGION/rfs-snapshot-repo –s3-region REGION –snapshot-name rfs-snapshot”,
“managedServiceSourceSnapshotEnabled”: true // Configuração para que seja possivel usar o comando de snapshot
}
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توجه: برای جایگزینی فایل می توان از دستور زیر استفاده کرد:

vi cdk.context.json
# Dentro do arquivo usando o VIM, usar a seguinte combinação de teclas:
# g g D Shift G # após isso pressionar i (para entrar em modo de edição no Vim)
# assim todo o arquivo antigo sera apagado e será mais fácil de colar sua nova configuração

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پس از اضافه شدن پیکربندی جدید، باید دستورات بوت استرپ را اجرا کنید:

cdk bootstrap –c contextId=NOME_DO_OBJETO_PRINCIPAL_DO_CDK_CONTEXT
cdk deploy “*” –c contextId=NOME_DO_OBJETO_PRINCIPAL_DO_CDK_CONTEXT –require-approval never –concurrency 3

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توجه 2: مهم است که اطمینان حاصل شود که فایل cdk.context.json به درستی پیکربندی شده است، بنابراین اگر پیکربندی نشده باشد، هنگام مهاجرت از طریق RFS مشکلی در آینده خواهد بود.

اکنون پس از اتمام آخرین دستور، ایجاد پشته های لازم برای اجرای دستورات انتقال داده آغاز می شود (مرحله پیکربندی شده در cloudformation را به خاطر بسپارید!):

./accessContainer.sh migration-console STAGE REGION

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اجرای مهاجرت – مرحله تأیید پیکربندی

هنگامی که دستور ذکر شده در بالا را اجرا می کنید، به کنسول دستیار مهاجرت هدایت می شوید، جایی که اولین مرحله مهم اجرای:

console clusters connection-check #comando que checa a conexão com o cluster de source e de target

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر دستور اتصال را با موفقیت برگرداند، می توانید به ایجاد عکس فوری ادامه دهید (مراقب باشید، زیرا ایجاد مستقیماً بر مصرف CPU خوشه منبع تأثیر می گذارد):

ایجاد عکس فوری

اکنون برای شروع عکس فوری:

#AFETA PERFORMANCE DO CLUSTER (Se for snapshot total do cluster ou parcial com maior parte dos indexes)
console snapshot create #inicia a criação do snapshot do cluster completo de source

# para criar apenas o snapshot de um index usar –index-allowlist index
# para checar o status do snapshot em progresso

console snapshot status –deep-check

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

NOTE3: قبل از اینکه ادامه دهیم، مهم است که تمام تکه‌های عکس فوری کامل باشند!

بازگشت فرمان وضعیت چیزی شبیه به این خواهد بود (برخی اطلاعات ممکن است مغایرت داشته باشند، اما فقط یک اشکال ترمینال است)

هنگامی که ایجاد عکس فوری به پایان رسید، می توان انتقال ابرداده را آغاز کرد (که برای انتقال قبلی ابرداده از نمایه ها و نام های مستعار خوشه منبع مهم است):

console metadata evaluate # importante para checar se todos os indices vão ser migrados
console metadata migrate # migração de metadados | –index-allowlist index # para migrar metadata de apenas um indice

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اجرای مهاجرت – مرحله انتقال داده

برای شروع انتقال داده ها، باید دستور زیر را اجرا کنید:

console backfill start # inicio da migração
#Para checar o status da migração:

console backfill status –deep-check
#Para escalar o número de tasks do ECS*:

console backfill scale NUM_DESEJADO_DE_TASKS

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نکته*: هنگام افزایش تعداد کارها مراقب باشید، زیرا بسته به تعداد گره های داده و ظرفیت خوشه هدف، این امر می تواند باعث خطای 429 در خوشه شود و به طور کامل مانع از مهاجرت شود!

مهاجرت از طریق RFS زمانی که تمام خرده های موجود در اسنپ شات به پایان رسید به خودی خود متوقف نمی شود، بنابراین بسیار مهم است که از طریق اجرای دستورات انسانی متوقف شود، به شرح زیر:

console backfill stop
# caso precise pausar a migração
console backfill pause

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پایان مهاجرت – پاکسازی محیط

اکنون که همه چیز تکمیل شده است (مراقب باشید و بررسی کنید که همه خرده ها با موفقیت کامل شده اند)، مهاجرت به پایان می رسد!

برای جلوگیری از هزینه ها و تمیز کردن محیط، مراحل زیر را انجام دهید، اما ابتدا در کنسول، خارج از venv:

cdk destroy “*” –c contextId=NOME_DO_OBJETO_PRINCIPAL_DO_CDK_CONTEXT
# é necessário o aceite no console para remover!

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پس از اتمام حذف از طریق cdk kill، باید به cloudformation بروید و پشته RFS را حذف کنید!

عیب یابی

در این بخش راه هایی برای رفع اشکال خطاهای احتمالی در راه حل ارائه می شود:

Erro de token 'Too' (Erro 429 خیلی درخواستها)

در این مورد، لازم است تعداد اسناد در هر درخواست انبوه راه حل تنظیم شود، زیرا خوشه قادر به رسیدگی به تعداد درخواست های راه حل نیست.

خطای نسخه کلاستر

باید دوباره خوشه را ایجاد کنید

خطا در اتصال به خوشه ها

این خطا برای تجزیه و تحلیل VPC که در cdk.context.json ثبت شده است جالب است، جایی که دامنه ها باید در vpc (هر دو) باشند، اگر حداقل 1 از دامنه ها خارج از VPC باشد، باید به آن دسترسی بدهید. آن را با NatGateway.
اگر هر دو دامنه خارج از VPC باشند، راه حل RFS یک VPC را برای استفاده ایجاد می کند، که به آن اجازه می دهد تا برای توسعه مهاجرت استفاده شود.

چگونه پس از هر گونه تنظیمات لازم در فایل cdk.context.json راه حل را اجرا کنیم؟

برای انجام این کار، باید دوباره دستور را اجرا کنید:
جایی که تمام پشته های لازم برای مهاجرت دوباره مستقر می شوند.

cdk deploy “*” –c contextId=NOME_DO_OBJETO_PRINCIPAL_DO_CDK_CONTEXT –require-approval never –concurrency 3

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خطای کلی شارد

برای تنظیم، لازم است دستور زیر را در دامنه هدف اجرا کنید:

PUT /_cluster/settings
{
“persistent”: {
“cluster.max_shards_per_node”: NUM_DESEJADO
}
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر خطایی خارج از این راهنما باشد:

با Rudney Eduardo Souza Vieira تماس بگیرید یا یک موضوع مستقیم در github پروژه RFS باز کنید (این پروژه برای استفاده از k8s منتقل می شود، بنابراین بسته به تاریخی که در حال خواندن راهنما هستید، تنظیمات دیگری لازم است)

RFS چیست؟

RFS (Reindex from Snapshot) یک فرآیند انتقال داده بین نسخه‌های Elasticsearch و Opensearch یا حتی بین نسخه‌های Opensearch است که فرآیند انتقال کامل را تسهیل می‌کند، از جمله حتی یک فرآیند پروکسی برای مهاجرت در پرواز!

شروع فرآیند مهاجرت

برای شروع فرآیند انتقال، مهم است که یک تنظیمات آماده شده برای جلوگیری از مشکلات در طول مهاجرت داشته باشید. ، مرحله اول را دنبال کنید:

برای پیکربندی cdk، آن را در ترمینال محلی خود اجرا کنید:

cdk bootstrap aws://id_da_conta/região_do_opensearch
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون با پیکربندی cdk، می‌توان مرحله به مرحله را ادامه داد، نکته مهم بعدی این است که قالب migration-assistant-for-amazon-opensearch-service.template را به cloudformation وارد کنید (به طور خودکار به cloudformation از قبل با stack)، نکته ای که باید در هنگام اضافه کردن پشته مورد توجه قرار گیرد:

  • اگر به مرحله ای که به Stack نشان داده می شود دقت کنید در سایر مراحل مهاجرت از آن استفاده می شود!

در پایان فرآیند پشته، یک EC2 ایجاد می شود، در اسرع وقت از طریق SSM به آن متصل شوید، هنگام ورود به EC2 (چیزی مانند bootstrap-instance-STAGE-REGION)، دستور زیر را اجرا کنید:

sudo su
cd /opensearch-migrations #entrar na pasta correta para dar inicio ao bootstrap que ajudará na migração
./initBootstrap.sh && cd deployment/cdk/opensearch-service-migration
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این فرآیند معمولاً حدود 15 دقیقه طول می کشد (کاملا وقت گیر است، اما بخش های مهمی از مهاجرت را پیکربندی می کند)

اکنون، در پایان فرآیند، در پوشه فعلی (opensearch-migrations/deployment/cdk/opensearch-service-migration) یک فایل cdk.context.json وجود دارد که مسئولیت نحوه رفتار انتقال را بر عهده دارد (راهنمای پیکربندی) ) ، برای انتقال با جادوگر از طریق کنسول، فایل باید چیزی شبیه به زیر باشد:

{
    "NOME_DO_OBJETO_PRINCIPAL_DO_CDK_CONTEXT": {
      "stage": "STAGE",
      "targetCluster": {
        "endpoint": "TARGET_CLUSTER_URL",
        "auth": {
          "type": "sigv4",
          "region": "us-east-1",
          "serviceSigningName": "es"
        }
      },
      "sourceCluster": {
        "endpoint": "SOURCE_CLUSTER_URL",
        "version": "ES_7.1", 
        "auth": {
          "type": "sigv4",
          "region": "us-east-1",
          "serviceSigningName": "es"
        }
      },
      "vpcId": "VPC_ID",
      "reindexFromSnapshotServiceEnabled": true, //habilita o RFS
      "artifactBucketRemovalPolicy": "RETAIN", // ou DESTROY Após utilizar o snapshot de dados via s3, mantém os arquivos no bucket
      "migrationConsoleServiceEnabled": true, // assistente de migração ativo
      "migrationAssistanceEnabled": true, // assistente de migração ativo
      "reindexFromSnapshotExtraArgs": "--s3-repo-uri s3://migration-artifacts-ACCOUNT_ID-STAGE-REGION/rfs-snapshot-repo --s3-region REGION --snapshot-name rfs-snapshot",
      "managedServiceSourceSnapshotEnabled": true // Configuração para que seja possivel usar o comando de snapshot
    }
  }
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توجه: برای جایگزینی فایل می توان از دستور زیر استفاده کرد:

vi cdk.context.json
# Dentro do arquivo usando o VIM, usar a seguinte combinação de teclas:
# g g D Shift G # após isso pressionar i (para entrar em modo de edição no Vim)
# assim todo o arquivo antigo sera apagado e será mais fácil de colar sua nova configuração
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پس از اضافه شدن پیکربندی جدید، باید دستورات بوت استرپ را اجرا کنید:

cdk bootstrap --c contextId=NOME_DO_OBJETO_PRINCIPAL_DO_CDK_CONTEXT
cdk deploy "*" --c contextId=NOME_DO_OBJETO_PRINCIPAL_DO_CDK_CONTEXT --require-approval never --concurrency 3
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توجه 2: مهم است که اطمینان حاصل شود که فایل cdk.context.json به درستی پیکربندی شده است، بنابراین اگر پیکربندی نشده باشد، هنگام مهاجرت از طریق RFS مشکلی در آینده خواهد بود.

اکنون پس از اتمام آخرین دستور، ایجاد پشته های لازم برای اجرای دستورات انتقال داده آغاز می شود (مرحله پیکربندی شده در cloudformation را به خاطر بسپارید!):

./accessContainer.sh migration-console STAGE REGION
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اجرای مهاجرت – مرحله تأیید پیکربندی

هنگامی که دستور ذکر شده در بالا را اجرا می کنید، به کنسول دستیار مهاجرت هدایت می شوید، جایی که اولین مرحله مهم اجرای:

console clusters connection-check #comando que checa a conexão com o cluster de source e de target
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر دستور اتصال را با موفقیت برگرداند، می توانید به ایجاد عکس فوری ادامه دهید (مراقب باشید، زیرا ایجاد مستقیماً بر مصرف CPU خوشه منبع تأثیر می گذارد):

تصویر داشبورد opensearch که افزایش استفاده از CPU را نشان می‌دهد

ایجاد عکس فوری

اکنون برای شروع عکس فوری:

#AFETA PERFORMANCE DO CLUSTER (Se for snapshot total do cluster ou parcial com maior parte dos indexes)
console snapshot create #inicia a criação do snapshot do cluster completo de source

# para criar apenas o snapshot de um index usar --index-allowlist index
# para checar o status do snapshot em progresso

console snapshot status --deep-check
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

NOTE3: قبل از اینکه ادامه دهیم، مهم است که تمام تکه‌های عکس فوری کامل باشند!

بازگشت فرمان وضعیت چیزی شبیه به این خواهد بود (برخی اطلاعات ممکن است مغایرت داشته باشند، اما فقط یک اشکال ترمینال است)

تصویر یک ترمینال لینوکس با اطلاعاتی در مورد پیشرفت عکس فوری

هنگامی که ایجاد عکس فوری به پایان رسید، می توان انتقال ابرداده را آغاز کرد (که برای انتقال قبلی ابرداده از نمایه ها و نام های مستعار خوشه منبع مهم است):

console metadata evaluate # importante para checar se todos os indices vão ser migrados
console metadata migrate # migração de metadados | --index-allowlist index  # para migrar metadata de apenas um indice
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اجرای مهاجرت – مرحله انتقال داده

برای شروع انتقال داده ها، باید دستور زیر را اجرا کنید:

console backfill start # inicio da migração
#Para checar o status da migração:

console backfill status --deep-check
#Para escalar o número de tasks do ECS*:

console backfill scale NUM_DESEJADO_DE_TASKS
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نکته*: هنگام افزایش تعداد کارها مراقب باشید، زیرا بسته به تعداد گره های داده و ظرفیت خوشه هدف، این امر می تواند باعث خطای 429 در خوشه شود و به طور کامل مانع از مهاجرت شود!

مهاجرت از طریق RFS زمانی که تمام خرده های موجود در اسنپ شات به پایان رسید به خودی خود متوقف نمی شود، بنابراین بسیار مهم است که از طریق اجرای دستورات انسانی متوقف شود، به شرح زیر:

console backfill stop
# caso precise pausar a migração
console backfill pause
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پایان مهاجرت – پاکسازی محیط

اکنون که همه چیز تکمیل شده است (مراقب باشید و بررسی کنید که همه خرده ها با موفقیت کامل شده اند)، مهاجرت به پایان می رسد!

برای جلوگیری از هزینه ها و تمیز کردن محیط، مراحل زیر را انجام دهید، اما ابتدا در کنسول، خارج از venv:

cdk destroy "*" --c contextId=NOME_DO_OBJETO_PRINCIPAL_DO_CDK_CONTEXT
# é necessário o aceite no console para remover!
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پس از اتمام حذف از طریق cdk kill، باید به cloudformation بروید و پشته RFS را حذف کنید!


عیب یابی

در این بخش راه هایی برای رفع اشکال خطاهای احتمالی در راه حل ارائه می شود:

  • Erro de token 'Too' (Erro 429 خیلی درخواستها)

    • در این مورد، لازم است تعداد اسناد در هر درخواست انبوه راه حل تنظیم شود، زیرا خوشه قادر به رسیدگی به تعداد درخواست های راه حل نیست.
  • خطای نسخه کلاستر

    • باید دوباره خوشه را ایجاد کنید
  • خطا در اتصال به خوشه ها

    • این خطا برای تجزیه و تحلیل VPC که در cdk.context.json ثبت شده است جالب است، جایی که دامنه ها باید در vpc (هر دو) باشند، اگر حداقل 1 از دامنه ها خارج از VPC باشد، باید به آن دسترسی بدهید. آن را با NatGateway.
    • اگر هر دو دامنه خارج از VPC باشند، راه حل RFS یک VPC را برای استفاده ایجاد می کند، که به آن اجازه می دهد تا برای توسعه مهاجرت استفاده شود.
  • چگونه پس از هر گونه تنظیمات لازم در فایل cdk.context.json راه حل را اجرا کنیم؟

    • برای انجام این کار، باید دوباره دستور را اجرا کنید:
    • جایی که تمام پشته های لازم برای مهاجرت دوباره مستقر می شوند.
cdk deploy "*" --c contextId=NOME_DO_OBJETO_PRINCIPAL_DO_CDK_CONTEXT --require-approval never --concurrency 3
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  • خطای کلی شارد

    • برای تنظیم، لازم است دستور زیر را در دامنه هدف اجرا کنید:
PUT /_cluster/settings
{
  "persistent": {
    "cluster.max_shards_per_node": NUM_DESEJADO
  }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر خطایی خارج از این راهنما باشد:

با Rudney Eduardo Souza Vieira تماس بگیرید یا یک موضوع مستقیم در github پروژه RFS باز کنید (این پروژه برای استفاده از k8s منتقل می شود، بنابراین بسته به تاریخی که در حال خواندن راهنما هستید، تنظیمات دیگری لازم است)

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا