AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-299343

Snappawapa's questions

Martin Hope
Snappawapa
Asked: 2025-02-03 02:21:39 +0800 CST

Traefik redireciona para um caminho diferente

  • 5

Tenho um proxy reverso baseado em caminho traefik bastante simples e queria saber se é possível redirecionar o usuário para um caminho diferente, em vez de middlewares influenciarem a solicitação do proxy .

Sei que posso simplesmente especificar o caminho raiz para rotear para o serviço desejado, mas isso atrapalha o tratamento desse serviço de estar por trás do proxy (não é possível carregar nenhuma imagem de página/recurso).

Olhando os documentos, não há nada óbvio que não seja uma ferramenta de middleware para alterar a url de um usuário. Existe uma maneira de redirecionar um usuário para um caminho diferente com base em outro?

Minha configuração atual:

tls:
  stores:
    default:
      defaultCertificate:
        certFile: /etc/traefik/certs/publicCert.crt
        keyFile: /etc/traefik/certs/privateKey.pem
  certificates:
    - certFile: /etc/traefik/certs/publicCert.crt
      keyFile: /etc/traefik/certs/privateKey.pem
      stores:
        - default
http:
  # https://doc.traefik.io/traefik/routing/services/
  services:
    core-depot:
      loadBalancer:
        serversTransport: oqmInternalTransport
        servers:
          - url: https://oqm-core-depot:443
            preservePath: true
    core-api:
      loadBalancer:
        serversTransport: oqmInternalTransport
        servers:
          - url: https://oqm-core-api:443
            preservePath: true
    infra-keycloak:
      loadBalancer:
        serversTransport: oqmInternalTransport
        servers:
          - url: https://oqm-infra-keycloak:443
    core-base-station:
      loadBalancer:
        serversTransport: oqmInternalTransport
        servers:
          - url: http://oqm-core-base_station:80
            preservePath: true
  # https://doc.traefik.io/traefik/routing/services/#serverstransport_1
  serversTransports:
    oqmInternalTransport:
      rootCAs:
        - /etc/traefik/certs/rootCert.crt
  # https://doc.traefik.io/traefik/routing/routers/
  routers:
    defaultRoute:
      service: core-depot
      rule: "Path(`/`)"
    core-depot-router:
      rule: "PathPrefix(`/core/depot`)"
      service: core-depot
      middlewares:
        - strip-oqm-prefixes
    core-api-router:
      rule: "PathPrefix(`/core/api`)"
      service: core-api
      middlewares:
        - strip-oqm-prefixes
    infra-keycloak-router:
      rule: "PathPrefix(`/infra/keycloak`)"
      service: infra-keycloak
      middlewares:
    core-base-station-router:
      rule: "PathPrefix(`/core/base-station`)"
      service: core-base-station
      middlewares:
        - strip-oqm-prefixes
  middlewares:
    strip-oqm-prefixes:
      stripprefix:
        prefixes:
          - /core/depot
          - /core/api
          - /core/base-station

reverse-proxy
  • 1 respostas
  • 18 Views
Martin Hope
Snappawapa
Asked: 2023-05-27 07:27:42 +0800 CST

Arquivos de dados Mongodb corrompidos quando copiados em

  • 5

Tenho certeza de que existe uma solução direta, estou executando um serviço Mongodb da seguinte forma:

[Unit]
Description=Mongo server for Open Quartermaster. Version ${version}, using MongoDB tagged to "4".
Documentation=https://github.com/Epic-Breakfast-Productions/OpenQuarterMaster/tree/main/software/Infrastructure
After=docker.service
Wants=network-online.target docker.socket
Requires=docker.socket

[Service]
Type=simple
Restart=always
TimeoutSec=5m

#ExecStartPre=/bin/bash -c "/usr/bin/docker container inspect oqm_mongo 2> /dev/null || "
ExecStartPre=/bin/bash -c "/usr/bin/docker stop -t 10 oqm_infra_mongo || echo 'Could not stop mongo container'"
ExecStartPre=/bin/bash -c "/usr/bin/docker rm oqm_infra_mongo || echo 'Could not remove mongo container'"
ExecStartPre=/bin/bash -c "/usr/bin/docker pull mongo:4"

ExecStart=/bin/bash -c "/usr/bin/docker run \
                                 --name oqm_infra_mongo \
                                 -p=27017:27017 \
                                 -v /data/oqm/db/mongo/:/data/db  \
                                 mongo:4 mongod --replSet rs0"
ExecStartPost=/bin/bash -c "running=\"false\"; \
                            while [ \"$running\" != \"true\" ]; do \
                                sleep 1s; \
                                /usr/bin/docker exec oqm_infra_mongo mongo --eval \"\"; \
                                if [ \"$?\" = \"0\" ]; then \
                                    echo \"Mongo container running and available!\"; \
                                    running=\"true\"; \
                                fi \
                            done \
                            "
ExecStartPost=/bin/bash -c "/usr/bin/docker exec oqm_infra_mongo mongo --eval \"rs.initiate({'_id':'rs0', 'members':[{'_id':0,'host':'localhost:27017'}]})\" || echo 'Probably already initialized.'"

ExecStop=/bin/bash -c "/usr/bin/docker stop -t 10 oqm_infra_mongo || echo 'Could not stop mongo container'"
ExecStopPost=/bin/bash -c "/usr/bin/docker rm oqm_infra_mongo || echo 'Could not remove mongo container'"

[Install]
WantedBy=multi-user.target

Estou fazendo com que o docker mapeie o diretório /data/oqm/db/mongo/ do host e parece que isso funciona bem; olhando do host, vejo o diretório preenchido quando executado. Essa configuração parece funcionar bem entre as reinicializações e persiste bem.

No entanto, quando tento fazer backup e restaurar os dados copiando os dados neste diretório e voltando, ao tentar trazer o serviço de volta, Mongo vomita, alegando que os dados estão corrompidos. Alguma ideia?

Para esclarecer, meu backup e restauração acontecem quando o serviço é interrompido e consiste em:

Fazendo backup:

  1. Parando o serviço (usando systemd)
  2. Copiando os arquivos no diretório de dados
  3. Iniciando o backup do serviço (usando systemd)

Restaurando:

  1. Parando o serviço (usando systemd)
  2. nuking os arquivos existentes no diretório de dados
  3. copiando de volta os arquivos copiados anteriormente
  4. Iniciando o serviço (usando systemd) (falha)

Estou tentando este método, pois geralmente é descrito nos documentos: https://www.mongodb.com/docs/manual/core/backups/#back-up-with-cp-or-rsync

Trecho dos logs de erro:


May 27 09:06:59 oqm-dev bash[41304]: {"t":{"$date":"2023-05-27T13:06:59.275+00:00"},"s":"I",  "c":"STORAGE",  "id":22315,   "ctx":"initandlisten","msg":"Opening WiredTiger","attr":{"config":"create,cache_size=11224M,session_max=33000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000,close_scan_interval=10,close_handle_minimum=250),statistics_log=(wait=0),verbose=[recovery_progress,checkpoint_progress,compact_progress],"}}
May 27 09:06:59 oqm-dev bash[41304]: {"t":{"$date":"2023-05-27T13:06:59.686+00:00"},"s":"I",  "c":"STORAGE",  "id":22430,   "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1685192819:686027][1:0x7fefd1197cc0], txn-recover: [WT_VERB_RECOVERY_PROGRESS] Recovering log 1 through 3"}}
May 27 09:06:59 oqm-dev bash[41304]: {"t":{"$date":"2023-05-27T13:06:59.719+00:00"},"s":"I",  "c":"STORAGE",  "id":22430,   "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1685192819:719823][1:0x7fefd1197cc0], txn-recover: [WT_VERB_RECOVERY_PROGRESS] Recovering log 2 through 3"}}
May 27 09:06:59 oqm-dev bash[41304]: {"t":{"$date":"2023-05-27T13:06:59.749+00:00"},"s":"I",  "c":"STORAGE",  "id":22430,   "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1685192819:749492][1:0x7fefd1197cc0], txn-recover: [WT_VERB_RECOVERY_PROGRESS] Recovering log 3 through 3"}}
May 27 09:06:59 oqm-dev bash[41304]: {"t":{"$date":"2023-05-27T13:06:59.801+00:00"},"s":"E",  "c":"STORAGE",  "id":22435,   "ctx":"initandlisten","msg":"WiredTiger error","attr":{"error":-31804,"message":"[1685192819:801911][1:0x7fefd1197cc0], txn-recover: __recovery_setup_file, 643: metadata corruption: files file:collection-0-6243490866083295563.wt and file:collection-0--9007965794334803376.wt have the same file ID 4: WT_PANIC: WiredTiger library panic"}}
May 27 09:06:59 oqm-dev bash[41304]: {"t":{"$date":"2023-05-27T13:06:59.801+00:00"},"s":"F",  "c":"-",        "id":23089,   "ctx":"initandlisten","msg":"Fatal assertion","attr":{"msgid":50853,"file":"src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp","line":481}}
May 27 09:06:59 oqm-dev bash[41304]: {"t":{"$date":"2023-05-27T13:06:59.802+00:00"},"s":"F",  "c":"-",        "id":23090,   "ctx":"initandlisten","msg":"\n\n***aborting after fassert() failure\n\n"}
May 27 09:06:59 oqm-dev bash[41304]: {"t":{"$date":"2023-05-27T13:06:59.802+00:00"},"s":"F",  "c":"CONTROL",  "id":4757800, "ctx":"initandlisten","msg":"Writing fatal message","attr":{"message":"Got signal: 6 (Aborted).\n"}}

Atualização: depois que foi sugerido, verifiquei novamente se as permissões estão sendo preservadas e definitivamente estão sendo preservadas agora. Infelizmente, ainda atingindo o mesmo problema

backup
  • 1 respostas
  • 56 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve