Change Password

Please enter the password.
Please enter the password. Between 8-64 characters. Not identical to your email address. Contain at least 3 of: uppercase, lowercase, numbers, and special characters.
Please enter the password.
Submit

Change Nickname

Current Nickname:
Submit

Apply New License

License Detail

Please complete this required field.

  • Ultipa Graph V4

Standalone

Please complete this required field.

Please complete this required field.

The MAC address of the server you want to deploy.

Please complete this required field.

Please complete this required field.

Cancel
Apply
ID
Product
Status
Cores
Applied Validity Period(days)
Effective Date
Excpired Date
Mac Address
Apply Comment
Review Comment
Close
Profile
  • Full Name:
  • Phone:
  • Company:
  • Company Email:
  • Country:
  • Language:
Change Password
Apply

You have no license application record.

Apply
Certificate Issued at Valid until Serial No. File
Serial No. Valid until File

Not having one? Apply now! >>>

Product Created On ID Amount (USD) Invoice
Product Created On ID Amount (USD) Invoice

No Invoice

v4.5
Search
    Français
    v4.5

      Procédure de Déploiement

      Déploiement Docker

      Exigences Logicielles

      • Docker CE 19+ ou Docker EE équivalent

      Installation

      • Récupérez l'image docker en ligne ou chargez l'image docker hors ligne
        • En ligne : docker pull [docker url]/tag:version
        • Hors ligne : docker load -i < 'fichier image docker' >
      • Récupérez l'ID de l'image docker : docker images
      • Démarrez le conteneur docker

      docker run -itd --net=host 
      -v <absolute_path_to_data_folder>:/opt/ultipa-server/data 
      -v <absolute_path_to_config_folder>:/opt/ultipa-server/config 
      -v <absolute_path_to_log_folder>:/opt/ultipa-server/log 
      -v <absolute_path_to_mlog_folder>:/opt/ultipa-server/mlog 
      -v <absolute_path_to_algo_folder>:/opt/ultipa-server/algo 
      -e TZ=Europe/Paris 
      --name ultipa-server --ulimit nofile=90000:90000 --privileged `image ID`
      docker exec -it ultipa-server bash 
      start
      

      Docker signalera une erreur 'No config files found' lors du premier démarrage, tout en créant automatiquement un fichier exemple nommé example.config. Copiez et renommez example.config en server.config, et modifiez ce fichier en suivant la Configuration du Serveur (voir ci-dessous) avant de redémarrer.

      • Options de la commande docker run
        • Définir le fuseau horaire : -e TZ=Europe/Paris
        • Augmenter la limite du nombre de fichiers ouverts : -ulimit nofile=90000:90000 --privileged
        • Activer le débogage GDB : --cap-add=SYS_PTRACE --security-opt seccomp=unconfined
      • Raisons courantes pour lesquelles docker ne démarre pas
      Erreur Description
      Échec de liaison de la machine !!! Échec de liaison de l'adresse MAC de la machine. Veuillez vous assurer que la licence est copiée à l'emplacement approprié, et que l'adresse MAC de la nouvelle machine doit être ajoutée dans la licence
      Licence expirée ! Le serveur s’arrête... La licence est expirée, une nouvelle licence est requise
      Échec de Rpc BuildAndStart ! Le port public du serveur est occupé

      Déploiement en Cluster

      • Préparez les machines du cluster, vérifiez l'IP et le port pour la communication interne et les services externes, assurez-vous que chaque machine peut accéder aux ports privés des autres machines.
      • Il est recommandé d'utiliser ultipa_doctor_linux_v4.0 gen_config pour générer un fichier de configuration de cluster, puis copier le fichier sur la machine correspondante, comme détaillé dans la documentation Ultipa Doctor 4.0. Vous pouvez également configurer le cluster manuellement.
      • Installez ultipa-server sur chaque machine en utilisant Docker et démarrez le service pour toutes les machines.
      • Vérifiez les points suivants une fois le déploiement terminé :
        1. Vérification du processus. Chaque machine doit avoir le processus ultipa-server. Si ce n’est pas le cas, localisez le problème en vérifiant le journal du serveur et le journal htap.
        2. Vérification du statut du cluster. Il est recommandé d'utiliser ultipa_doctor_linux_v4.0 health_check comme détaillé dans la documentation Ultipa Doctor 4.0. Vous pouvez également utiliser curl http://private_addr:private_ip/raft_admin, le cluster est déployé avec succès si le Leader est élu normalement.
        3. Utilisez Ultipa Manager (si disponible) pour vérifier si le cluster est bien affiché.
        4. Importez des données de test. Entrez dans le conteneur ultipa-server à partir de n'importe quelle machine pour exécuter l'importation : cd example && sh import_example.sh.
      • Remarque : Lorsqu'un nouveau cluster est déployé, les données initiales de chaque instance doivent être vides, et ne pas copier le catalogue de données dans un environnement de production !

      Configuration du Serveur

      Chemin du Fichier de Configuration

      config/server.config

      Configuration Globale

      section:[Server]

      Élément Par Défaut Description
      host 0.0.0.0:60061 Adresse d'écoute du serveur
      server_id 1 server_id doit être unique pour le cluster ; un serveur unique doit utiliser la valeur par défaut
      dbpath data Chemin de stockage des fichiers de base de données
      resource_path resource Chemin de stockage des ressources, ressources telles que le dictionnaire de full-text
      worker_num 10 Nombre de threads de service, c'est-à-dire, worker_num * 2
      slow_query 5 Seuil de requête lente, 5 secondes par défaut
      authorized true Si le mode d'authentification est activé ou non
      use_ssl false Si ssl est activé ou non
      ssl_key_path ./resource/cert/ultipa.key Valide seulement si ssl est activé
      ssl_crt_path ./resource/cert/ultipa.crt Valide seulement si ssl est activé
      license ./resource/cert/ultipa.lic Licence
      mem_threshold_percent 80 Limite d'utilisation de la mémoire, 80% par défaut. La protection de la mémoire est activée une fois que la limite est dépassée, et les requêtes seront terminées.

      Configuration des Journaux

      section:[Log]

      Élément Par Défaut Description
      level 3 1: fatal, 2: error, 3: info, 4: debug
      stdout true Si obtenir le journal sur la sortie standard ou non
      color true Si afficher des couleurs dans le terminal ou non
      file_retain_counts 5 Nombre de fichiers journaux à conserver
      log_file_size 200 Taille maximale d'un fichier journal unique, 200M par défaut

      Configuration du Superviseur

      section:[Supervisor]

      Élément Par Défaut Description
      stat_period 3 Compte le QPS dans les 3 s

      Configuration de la Persistance

      section:[BaseDB]

      Élément Par Défaut Description
      db_buffer_size 512 Taille du buffer de db, 512M par défaut est recommandé
      lru_cache false Si utiliser le cache lru ou non
      lru_cache_size 5000000 Taille du cache lru

      Configuration du Moteur

      section:[Engine]

      Élément Par Défaut Description
      template_max_depth 10 Profondeur maximale de la requête modèle, 10 par défaut est recommandée
      super_node_size 100000 Taille de super node, 100000 par défaut signifie qu'un node avec 100000 ou plus de voisins est considéré comme super node
      ab_timeout 15 Délai d'attente de la requête AB, 15 secondes par défaut, qui peut également être défini via l'interface de requête SDK
      default_max_depth 30 Profondeur maximale de la requête, 30 par défaut est recommandée
      load_direction_mode 1 1: Chargement bidirectionnel
      2: Chargement unidirectionnel (a-->b)
      3: Chargement unidirectionnel (b<--a)
      (Utilisez la valeur par défaut, pas besoin de changer)

      HTAP

      section:[HTAP]

      Élément Par Défaut Description
      private_addr 127.0.0.1:60161 Adresse privée, IP et port pour la communication inter-cluster, le port doit être unique avec le port du serveur
      conf 127.0.0.1:60161|127.0.0.1:60061:1,
      127.0.0.1:60162|127.0.0.1:60062:3,
      127.0.0.1:60163|127.0.0.1:60063:1
      Configuration du cluster,127.0.0.1:60161|127.0.0.1:60061:1. Le premier ip:port est private_addr, le second ip:port:role est public_addr:role. conf de toutes les machines doit être cohérent
      data_path data/htap Chemin de stockage des données du cluster
      election_timeout 5000 Délai d'attente pour l'élection, la plage autorisée est de 5000ms à 30000ms+. En cas de retard de heartbeat dû à la pression, le délai d'attente pour l'élection peut être augmenté de manière appropriée.
      election_heartbeat_factor 10 Ratio du délai d'attente pour l'élection au temps de heartbeat
      snapshot_interval 3600 Intervalle pour compresser le journal, 3600 secondes par défaut

      Configuration Détailée du Cluster

      Raft

      Raft utilise normalement un nombre impair de nodes, tels que 3, 5, 7, etc. Cela est dû au fait que Raft ne peut fonctionner que lorsque plus de la moitié des nodes sont en ligne, et 'plus de la moitié' signifie N/2+1 plutôt que N/2. Par exemple, cela nécessite >=2 nodes en ligne pour un cluster de 3 nodes, et >=3 nodes en ligne pour un cluster de 5 nodes.

      Pour les clusters avec un nombre pair de nodes, Raft exige que les 2 nodes d'un cluster de 2 nodes soient tous les deux en ligne, et qu'un cluster de 4 nodes ait >=3 nodes en ligne.

      Bien qu'un nombre pair de nodes consomme plus de ressources matérielles qu'un nombre impair de nodes mais apporte une disponibilité moindre, dans certains scénarios de forte cohérence, un nombre pair de nodes a plus d'avantages en termes de tolérance aux sinistres de données pour garantir la sécurité des données.

      Dans le système Ultipa, chaque GraphSet a un groupe Raft, et chaque groupe Raft est complètement indépendant avec un Leader et un Follower différents.

      Remarque : Le GraphSet nouvellement créé ne peut être utilisé immédiatement que lorsque le cluster Raft élit le Leader. Le délai est déterminé par le temps d'élection configuré.

      Rôle

      • Rôle 0 : Le node ne peut pas fournir de lectures lorsqu'il est Follower, il est utilisé pour des lectures cohérentes
      • Rôle 1 : Le node peut fournir des lectures lorsqu'il est Follower, il est utilisé pour un équilibrage de charge de lecture
      • Rôle 2 : Node algorithme qui peut exécuter des algorithmes, mais ne peut pas participer à l'équilibrage de charge de lecture
      • Rôle 3 : Node algorithme qui peut participer à l'équilibrage de charge de lecture
      • Rôle 4 : Node de sauvegarde qui ne fait que synchroniser les données, mais ne participe pas aux élections
      Rôle Non-lisible comme Follower Lisible comme Follower Node Algorithme Node de Sauvegarde
      0 Y N N N
      1 N Y N N
      2 N N Y N
      3 N Y Y N
      4 N N N Y

      Remarques :

      • Le node de rôle 2, 3 ou 4 ne peut pas être élu Leader.
      • Le nombre de nodes algorithme (rôle 2 ou 3) dans un cluster ne peut pas dépasser 50%.

      Délai d'Attente pour l'Élection

      Pour éviter les élections simultanées initiées par plusieurs nodes, Raft définit un délai d'attente pour l'élection aléatoire :

      Délai d'Attente Réel pour l'Élection = random(election_timeout, 2*election_timeout)
      Temps de Heartbeat = max(election_timeout/election_heartbeat_factor, 10)

      Opération du Cluster

      Journaux

      Journal du cluster : htap-yyyymmdd-HHMMSS.log
      Journal du serveur : server-yyyymmdd-HHMMSS.log

      Les journaux commençant par [HTAP] dans le journal du serveur sont liés à la synchronisation du cluster, pour les visualiser : cat server-yyyymmdd-HHMMSS.log |grep "[HTAP]"

      Outil d'Opération

      ultipa_cluster_cli

      Veuillez l'utiliser avec une extrême prudence !

      Ajouter un Node

      Les données initiales du node à ajouter doivent être les mêmes que celles des autres nodes. Démarrez le node nouvellement rejoint tout en s'assurant que le répertoire data/htapp est vide, sinon de nouvelles données peuvent ne pas être synchronisées.

      ultipa_cluster_cli add --peer="$peer_being_added" --conf="$current_conf"

      ./ultipa_cluster_cli add \ 
      --peer="127.0.0.1:60163|127.0.0.1:60063:1" \ 
      --conf="127.0.0.1:60161|127.0.0.1:60061:1,\ 
                  127.0.0.1:60162|127.0.0.1:60062:1" 
      

      Supprimer un Node

      ultipa_cluster_cli remove --peer="$peer_being_removed" --conf="$current_conf"

      ./ultipa_cluster_cli remove \ 
      --peer="127.0.0.1:60163|127.0.0.1:60063:1" \ 
      --conf="127.0.0.1:60161|127.0.0.1:60061:1,\ 
      					  127.0.0.1:60162|127.0.0.1:60062:1,\ 
                  127.0.0.1:60163|127.0.0.1:60063:1" 
      

      Modifier le Node du Cluster

      ultipa_cluster_cli change_conf --conf="$current_conf" --new_conf="$new_conf"

      Créer un Snapshot, Compresser le Journal

      ultipa_cluster_cli snapshot_leader --peer="$target_peer"

      Changer de Leader

      ultipa_cluster_cli change_leader --peer="$target_leader" --conf="$current_conf"

      Resynchronisation

      Lorsqu'un node a une incohérence de données, il doit être réinitialisé. Suivez strictement les étapes ci-dessous pour resynchroniser les données. Remarque : Les opérations suivantes doivent être effectuées sur le node à resynchroniser !

      1. Utilisez ultipa_cluster_cli pour supprimer le node à resynchroniser
      2. Arrêtez le node à resynchroniser : ./ultipa-server stop
      3. Supprimez l'ensemble du répertoire de données du node à resynchroniser
      4. Redémarrez le node à resynchroniser
      5. Utilisez ultipa_cluster_cli pour ajouter le node à resynchroniser

      Surveillance du Cluster

      Page de surveillance : http://private_host:private_port/raft_admin

      FAQs du Cluster

      1. Erreurs Courantes

      • Ce follower n'est pas lisible: La requête de lecture a été envoyée à un node non lisible.
      • Ce follower charge le snapshot: Le node charge le snapshot, services temporairement indisponibles.
      • Ce peer n'est pas leader, veuillez rediriger vers le peer leader: Le node n'est pas leader.
      • Ce cluster raft n'a pas de leader: Aucun Leader n'a été élu dans le cluster.

      2. Si l'erreur suivante se produit lors du redémarrage de ultipa-server, cela indique que le serveur peut avoir une incohérence de données due à une sortie anormale pendant le log apply process. Pour la cohérence des données, utilisez ./ultipa-server -d -safe pour réparer les données automatiquement.

      [HTAP] IMPORTANT ! xxx pre_applied_index xxx != applied_index xxx, il pourrait y avoir des incohérences de données. 
      [HTAP] Exécutez ./ultipa-server -d -safe pour démarrer le serveur en toute sécurité. 
      

      Si ./ultipa-server -d -safe échoue à démarrer, veuillez suivre strictement les étapes correspondantes pour resynchroniser.

      [HTAP] Échec du démarrage en toute sécurité ! Veuillez resynchroniser ce peer selon le document !
      

      3. L'erreur 'reject term_unmatched AppendEntries' se produit lors du redémarrage

      Cela indique que le statut du cluster du node est incorrect, ce qui peut être causé par la suppression du répertoire htap. Étant donné que le dernier prev_log_term du node est enregistré dans le cluster, et que local_prev_log_term devient 0 après la suppression des données localement, la synchronisation des données est rejetée car local_prev_log_term < prev_log_term.

      Lorsque le statut du cluster du node présente un problème, utilisez ultipa_cluster_cli pour resynchroniser.

      4. Modifier le fichier de configuration et redémarrer pour changer l'IP ou le port d'écoute du node ne prend pas effet. C'est parce que le cluster a déjà enregistré les informations du node, vous devez donc utiliser ultipa_cluster_cli change_conf pour mettre à jour les informations du cluster après le redémarrage.

      ./ultipa_cluster_cli change_conf \ 
      --conf="127.0.0.1:60161|127.0.0.1:60061:1,\ 
      127.0.0.1:60162|127.0.0.1:60062:1,\
      127.0.0.1:60163|127.0.0.1:60063:1" \ 
      --new_conf="127.0.0.1:60261|127.0.0.1:60061:1,\ 
                  127.0.0.1:60262|127.0.0.1:60062:1,\ 
                  127.0.0.1:60263|127.0.0.1:60063:1" 
      

      5. Modifier le fichier de configuration et redémarrer pour changer de rôle ne prend pas effet. C'est parce que le cluster a déjà mis en cache cette configuration, vous devez donc utiliser ultipa_cluster_cli change_conf pour mettre à jour les informations du cluster après le redémarrage.

      ./ultipa_cluster_cli change_conf \ 
      --conf="127.0.0.1:60161|127.0.0.1:60061:2,\ 
              127.0.0.1:60162|127.0.0.1:60062:1,\ 
              127.0.0.1:60163|127.0.0.1:60063:1" \ 
      --new_conf="127.0.0.1:60161|127.0.0.1:60061:1,\ 
                  127.0.0.1:60162|127.0.0.1:60062:1,\ 
                  127.0.0.1:60163|127.0.0.1:60063:1" 
      

      6. Si vous supprimez le répertoire htap sans supprimer le répertoire de données GraphSet, il y aura un problème lorsque vous utiliserez l'outil ultipa_cluster_cli pour supprimer le node et le rajouter après le redémarrage du service. C'est parce que les données sont synchronisées depuis le début à cause de la suppression du répertoire htap, et pendant que le répertoire de données n'est pas supprimé, il y aura une incohérence de données due aux journaux d'exécution en double ! Ainsi, n'oubliez pas de supprimer tous les répertoires de données GraphSet (y compris global) lorsque vous supprimez le répertoire htap !

      7. Lorsque ni le répertoire htap ni le répertoire de données n'est supprimé, les données seront synchronisées depuis le dernier emplacement lorsque le node est supprimé et rajouté en utilisant l'outil ultipa_cluster_cli. C'est parce que le cluster se souvient toujours de l'emplacement lors de la dernière synchronisation du journal.

      Please complete the following information to download this book
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写