著者|シャオ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は信じている:オープンソースの世界では、任意のヘルプが貢献です。
付録
次のように項目のリストは以下のとおりです。
- ChaosBlade CLI(呼び出し玄関)
- ChaosBlade実験モデルの定義
- 基本的なリソースシーンアクチュエータ
- ドッカーシーンアクチュエータ
- Kubernetesシーンアクチュエータ
- Javaアプリケーション・シナリオアクチュエータ
- C ++アプリケーションシナリオアクチュエータ
「アリババクラウドネイティブマイクロチャネルパブリック番号(ID:Alicloudnative)フォーカスマイクロサービスで、サーバレス、コンテナ、サービスメッシュ及び他の技術分野、クラウドネイティブで人気の技術動向を中心に、クラウドネイティブの大規模な着陸の練習は、ほとんどがクラウドネイティブ開発を理解してください技術公衆番号。」