ネイティブクラウド指向エンジニアリングツール-ChaosBladeカオス

ファイル

著者|シャオChangjun(ドームバレー)の技術的な専門家のアリクラウドスマートビジネスグループ  

REVIEW:クラウドネイティブシステムの進化では、どのようにシステムの耐障害性を向上させ、システムの障害を注入するリバースエンジニアリングの混乱脆弱なアイデア、システムの問題の早期発見により、大きな挑戦の下でシステムの安定性を保護するために。ChaosBladeツールは、宣言の実行とカオス、シンプルかつ効率的に設定することができます。この記事では、実験的なシーンChaosBladeとネイティブのクラウド関連の慣行に焦点を当てます。

ChaosBladeはじめに

ChaosBladeアリババは、オープンソースの中でCNCF Landspaceに追加された直後に、高いシーン、豊富な使いやすく、他の特性を持つオープン従うようにソースモデルとカオス混沌とした実験の実行ツールで、簡単に実験的な場面を拡張することができますカオスは、主流のツールとなります。

実験シーン

次のように現在サポートされている実験的なシナリオは以下のとおりです。

  • シーンの基本的なリソース:CPU負荷、メモリ使用量、ディスクIOの負荷、ディスク使用量、ネットワーク遅延、パケット損失、ネットワークマスク、ドメイン名がアクセスできない、シェルスクリプトが改ざん、プロセスを強制終了、プロセスハングは、マシンを再起動など。

  • アプリケーションサービスシナリオ:JavaアプリケーションとC ++アプリケーション内で実験的なシーンをサポートしています。シーンは、などダボ、RocketMQ、HttpClientを、サーブレット、ドルイド、のサポートなどの豊富なJavaコンポーネント、ですが、また、JavaやGroovyで書かれたスクリプトは、複雑なテストシナリオを実装してサポートしています。

  • コンテナサービスシーン:ドッカーサポートKubernetesやサービス、ノード、ポッドと実験シーンコンテナなどポッドのネットワーク遅延やパケット損失などの3つのリソースを含みます。

カオス実験モデル

ファイル

上記の実験のすべてがあって、4層に分かれている混沌としたシーン実験モデルを、続い:

  • 対象:実験的な目標。実験アセンブリは、コンテナ、アプリケーション・フレームワーク(ダボ、Redisの)など、発生手段と
  • スコープ:実験範囲。それはそうで特定のトリガ実験機またはクラスタとを指します。
  • マッチャー:実験的なルールマッチャ。ターゲットが一致するルールは、関連する実験を定義、構成、複数設定することができます。各ターゲットは、このようなダボRPC領域として独自の特殊な一致条件を、持っている可能性があるため、サービスプロバイダとサービスコンシューマの下でサービスの分野でのRedisキャッシュはセットに従って、操作を得る一致させることができるサービスを呼び出して、一致させることができます。
  • 処置:実験的なシミュレーションは、特定のシナリオに磁気ディスク等のターゲット別の実施形態ではない同じシーンを、意味し、ディスクは、ディスクIOの読み取りと書き込みが高い、完全な行使することができます。アプリケーションは、異常な、遅延を抽象化する場合、指定された値(エラーコード、ラージ・オブジェクト、等)、パラメータ改ざん、繰り返し呼び出し、実験等場面を返します。

IPはcom.example.HelloServiceを呼び出して、マシン10.0.0.1上のアプリケーションの一例である1.0.0 @ダボ成分(ターゲット)の実験のように記述することができ、範囲の実験例は10.0で、このモデルに基づいて、ダボサービス遅延3S。 0.1ホスト(範囲)、com.example.HelloServiceを呼び出す1.0.0 @ chaosbladeコマンドに対応する、(マッチャー)サービスの遅延3S(アクション):

blade create dubbo delay --time 3000 --service com.example.HelloService --version 1.0.0

したがって、このモデルは、理解しやすい、実験的なシーンの非常にシンプルかつ明確な表現です。以下の実験シーンネイティブクラウドベースの定義モデル。

実験シーンクラウドネイティブのための

実装

ファイル

前述の実験モデルによれば、シーン内の混乱、Kubernetesリソースとして定義され、カスタムコントローラによって管理される、または直接ブレードYAMLによるコマンドの実行を実行するように構成されてもよいです。

ChaosBladeオペレータは、リソースコントローラを定義し、実行するために各ノードでchaosbladeツールポッドを展開する方法と混乱をdaemonsetう。chaosbladeツールが内部展開され、その上を行うことができるようなノード実験シーンのような異なる内部実装異なる実験的なシナリオでは、容器は、実験的に、シーン内、コントローラは、コンテナが行う目標パケットchaosbladeにコピーされます。

使用

必要なコンポーネントをインストールします。

経由でインストールChaosBladeオペレータ、アドレスダウンロードchaosbladeオペレータ-0.0.1.tgz、次のコマンドを使用してインストール:

helm install --namespace kube-system --name chaosblade-operator chaosblade-operator-0.0.1.tgz

コマンド空間に設置さKUBE-システム。ChaosBlade操作を開始した後、各ノードでchaosbladeツールポッドとchaosbladeオペレータポッドを展開。次のコマンドを使用してインストールした結果を表示します。

kubectl get pod -n kube-system -o wide | grep chaosblade

ファイル

実験を行いました

実装の2種類があります。

  • 一つは、実行kubectlを用いYAMLの方法を構成することによってです。
  • 別の用途は、直接コマンドchaosbladeブレードパッケージを実行することです。

80%以下の実験例のCPU負荷などのノードを指定します。

YAML設定

apiVersion: chaosblade.io/v1alpha1
kind: ChaosBlade
metadata:
  name: cpu-load
spec:
  experiments:
  - scope: node
    target: cpu
    action: fullload
    desc: "increase node cpu load by names"
    matchers:
    - name: names
      value:
      - "cn-hangzhou.192.168.0.205"
    - name: cpu-percent
      value:
      - "80"

示されているように、ファイルがchaosblade_cpu_load.yamlとして保存される設定した後、実験は以下のコマンドシナリオを用いて実施しました。

kubectl apply -f chaosblade_cpu_load.yaml

次のコマンドを使用して、各実験の実行状態を表示します。

kubectl get blade cpu-load -o json

見るより実験的な場面設定例を

ブレードコマンド実行モード

chaosbladeキットをダウンロードし、解凍を使用することができます。あるいは、上記の例では、ブレードコマンドを使用すると、次のとおりです。

blade create k8s node-cpu fullload --names cn-hangzhou.192.168.0.205 --cpu-percent 80 --kubeconfig ~/.kube/config

実験の結果を返しますbladeコマンドを使用して行います。

修正実験

実施例支持プロファイル例えば上記の60%のCPU負荷レギュレーションとしてYAMLシーン動的変更、80から60までの値のほんの値は、例えば、であることができます。

apiVersion: chaosblade.io/v1alpha1
kind: ChaosBlade
metadata:
  name: cpu-load
spec:
  experiments:
  - scope: node
    target: cpu
    action: load
    desc: "cpu load"
    flags:
    - name: cpu-percent
      value: "60"
    - name: ip
      value: 192.168.0.34

その後、使用kubeclt apply -f chaosblade_cpu_load.yaml更新を実行するコマンドを。

実験を停止します

実験は、以下の三つの方法によって停止することができます。

実験の停止リソース名によると、

例えば上記CPU負荷シナリオ、実験を停止し、次のコマンドを実行することができます。

kubectl delete chaosblade cpu-load

YAMLプロファイルによって停止

次のように上記の指定されたファイルを削除して良いYAMLを作成し、コマンドは次のとおりです。

kubectl delete -f chaosblade_cpu_load.yaml

ブレードコマンドで停止します

この方法で、次のコマンドを使用して停止するように作成された実験的なブレードの使用のみ:

blade destroy <UID>

あなたが忘れてしまった場合、ブレードの実装の結果は、コマンドリターンを作成され、あなたが照会するコマンドを作成し--typeブレードのステータスを使用することができます。

アンインストールchaosblade演算子

実行はhelm del --purge chaosblade-operator、すべての実験を停止作成したすべてのリソースを削除します、それをアンインストールします。

概要

混乱に基づいてChaosBlade実験モデルは、導入が簡単で、単純なリソース制御のKubernetesやさしい組み合わせは、制御実験を使用しています。エリアシナリオの実行の数を達成するための実験モデルに基づいて加算ChaosBladeでは、あなたが簡単に実験的なシーンを展開することができ、あなたは、付録の項目のリストを見ることができます。

コミュニティの構築

オープンソース以来ChaosBlade、参加し、関心や企業の多くを使用するために、ほぼ30以下の貢献者の合計は、どうもありがとうございました。歓迎より多くの人々が関与同時に、ChaosBladeは、より多くのシーンをカバーし、各企業は、安定した、ユニバーサルカオスエンジニアリングツールとなり、より強力になります。

寄付の形バグを挙げることができるには、その上の文書、補足的なユニットテスト、問題の議論に参加し、を書いて、コードを提出します。ChaosBladeは信じている:オープンソースの世界では、任意のヘルプが貢献です。

付録

次のように項目のリストは以下のとおりです。

「アリババクラウドネイティブマイクロチャネルパブリック番号(ID:Alicloudnative)フォーカスマイクロサービスで、サーバレス、コンテナ、サービスメッシュ及び他の技術分野、クラウドネイティブで人気の技術動向を中心に、クラウドネイティブの大規模な着陸の練習は、ほとんどがクラウドネイティブ開発を理解してください技術公衆番号。」

おすすめ

転載: www.cnblogs.com/alisystemsoftware/p/11799725.html