記事のディレクトリ
A、SaltStackプロフィール
SaltStackサーバインフラストラクチャは、構成管理、リモート実行、監視、および他の機能と、集中管理プラットフォームです。
SaltStackは、分散型リモート実行システムでは、我々は、リモート・ノードのビジネスに応じて何百万人、文書の配布、データ収集サーバ、オペレーティングシステムの基盤とパッケージ管理の数十に集中管理を設定することができます。
1.1 SaltStackコンポーネント
C / Sモードを使用してSaltStackは、塩マスターは、塩の手下そのクライアントサーバ側です。
- 塩マスター:センタ管理システム。このシステムは、管理対象システム上で実行されている塩の手先にコマンドや設定を送信するために使用されます。
- 塩手下:システムの管理。システムは、それが塩マスターからのコマンドおよびコンフィギュレーションを受けて、塩手先を運営しています。
1.2 SaltStack原則
マスターと手先の間の通信のためのZeroMQメッセージキューによって。第一の接触終了後の手先マスターライン、過去に自分のパブのキーの後、塩キー-Lコマンドによるマスタ端末は手先キーを受け入れるために、キーの手先が表示されます場合は、マスターと手先が信頼を持っています。マスターはの「*」cmd.run「稼働時間」我々は、塩を実行すると、このようcmd.runとして、実行手先原因任意の命令を送信し、タスクマッチング手先ができ、マスター、手先の実行モジュールの機能まで送られ、その結果を返します。マスタポートモニタ4505および4506、REPシステム4506に対応し、メッセージを送信するために使用ZMQのPUBシステムに4505相当のメッセージを受信します。
- コマンドは、リモート・システムに送信され、パラレルシリアルに伝達されません。
- セキュアな暗号化プロトコルを使用します
- それは、単純なプログラミング・インタフェースを提供します
- リモートでの制御システムのより詳細な領域がシステムに複数のホスト名の対象になることができるように、実行するだけでなく、システムのプロパティを通じて
ZeroMQ
ZeroMQは、マルチスレッドネットワークメッセージキューライブラリ基づいて、複数のトランスポートプロトコルを横切るそのソケット型接続処理フレーム、基礎となるルーティングのも抽象的詳細は、ソケットを提供します。
ZeroMQネットワーク通信は、アプリケーション層とスケーラブルレイヤである、(TCP / IPの分割に応じて)輸送層との間に、システムの分散に分散、並行して実行することができる、新たな層です。
1.3 SaltStackの利点
- Python言語を使用して、かなり軽量
- PUB-SUBパターンを使用して通信層はそれを非常に高速になり、ZeroMQを達成しました
- オープンソースは、Pythonで独自のモジュールを書くことができます
二、SaltStackの展開と秘密鍵認証プロセス
ホストの設定
ホスト(IP) | サービス |
---|---|
物理マシン(172.25.2.250) | |
SERVER1(172.25.2.1) | 塩マスター |
SERVER2(172.25.2.2) | 塩、手先 |
server3の(172.25.2.3) | 塩、手先 |
2.1 SaltStackの展開
1、YUMのsaltstackソースを作成
物理マシン上でディレクトリ関連のパッケージは私がsaltstackを見つけ、デフォルトのhttpdサービスの配布ディレクトリにコピーされ、サードパーティのリポジトリを作成しています。
Server1で、文書の作成をポイントし、 SERVER2とサーバー3に送信。
2、Server1でインストールの塩マスター: yumの塩マスターをインストールそして、サービスを開始します。
3、およびポート4505と4506を監視し、ネットツールlsofをインストールします。
- 4505:(publish_port)はsaltstackニュースの出版システムであります
- 4506:saltstackクライアントとサーバーの通信ポートに(ret_port)。
4、SERVER2とserver3の上インストールの塩手先:yumを-y塩手先をインストール
更改/etc/salt/minion文件,写入masterip,开启服务:systemctl start salt-minion
- 这里要指向salt-master服务器,可以是IP,也可以是域名,也可以是主机名,不过主机名就要写/etc/hosts了,如果用的是内部DNS服务器的话可以用主机名或者域名的形式。
5、此时,我们可以 在master端(server1)上,查看到所有minion-key:salt-key -L,并接受:salt-key -A
salt-key -L ##查看所有minion-key
salt-key -a <key-name> ##接受某个minion-key
salt-key -d <key-name> ##删除某个minion-key
salt-key -A ##接受所有的minion-key
salt-key -D ##删除所有的minion-key
第一次客户端的证书在未验证Unaccepted Keys:的下面,通过此证书的验证,再次查看出现在了Accepted Keys:下面表示已经通过了验证,可以建立通信了
6、此时,端口4505和4506,已经监控到了server2和server3
查看进程,安装python-setproctitle,查看python端口情况,每个进程的功能是啥
2.2 SaltStack秘钥认证过程
- md5sum命令用于生成和校验文件的md5值。md5sum逐位对文件内容进行校验。与文件名无关,也就是文件内容相同,其md5值相同。 在网络传输、设备之间转存、复制大文件等时,可能会出现传输前后数据不一致的情况。那么校验文件的完整性是很重要的。
当初始化安装 minion 启动服务后
- minion端会在/etc/salt/pki/minion下自动生成公钥、私钥和在/etc/salt/的一个ID值,,然后将公钥发送给master,minion服务会将以ID值命名的公钥发送给 master ,直到接受为止;
- master通过salt-key -a认证完毕后,会将minion 端发送来的,以ID值命名的公钥存放在
/etc/salt/pki/master/minions
目录中,此时认证通信已完成; - 認証が完了し、マスターしたら、それはミニオンへの公開鍵を送信し、/etc/salt/pki/minion/minion_master.pubとして保存されます
。1、ミニオン側が生成しますへの鍵:/etc/salt/pki/minion/minion
2、マスター側の認証 公開鍵保存されている:/etc/salt/pki/master/minions/
これは子分がサービスを有効にし、マスター端末に公開鍵を送信し、マスター認証が完了した後に、公共の手先がに保存されている送信し、第一秘書生成された鍵ペアを説明し/etc/salt/pki/master/minions
たディレクトリ
3、マスター自身の公開鍵 :/etc/salt/pki/master/
4、手先マスター公開鍵終わり に保存/etc/salt/pki/minion/
これは、マスター認証が完了した後、手先にその公開鍵を送信し、/etc/salt/pki/minion/minion_master.pubとして保存されます、説明します
5、minion_idデフォルトでは、手先の側に保存され/etc/salt/
、リスト内のキーが認定することはできません拒否されたマスター表示端末で、その結果、手先のエンド鍵ペアの不一致が発生した場合など。まあ、まず、マスター端末にIDを削除し、キー文書(minion_master.pub、minion.pem、minion.pub)の後、削除手先の終わり、最後にサービスを再起動します