Chef Server 11への移行

画像 EPAMプライベートクラウドの一部として、最初にChef Server 10を使用して仮想マシンを自動構成しました。
サポートされる役割のリストは60マークを超えており、単純なクラスターソリューションと複雑なクラスターソリューションの両方が含まれています。
サーバークライアントの数が750に増加すると、パフォーマンスが大幅に低下することがわかりました。
Chef Server 10がインストールされている仮想マシンのパワーを増やすことはお勧めできませんでしたし、とにかく小さくはありませんでした(2xIntel®Xeon®CPU L5640 @ 2.27GHzおよび8GbのRAM)。
chef-solrおよびchef-expanderのチューニングによる操作も、望ましいパフォーマンスの向上をもたらしませんでした。

そして、Chef 10からChef 11に移行することが決定されました。
Opscode.comによると、より高速で、拡張が容易で、構成と管理が簡単です。

そのため、まず、Ubuntu12.04用のChef Server 11のクイックインストールガイド。

#    wget -O chef-server-11.deb https://opscode-omnitruck-release.s3.amazonaws.com/ubuntu/12.04/x86_64/chef-server_11.0.6-1.ubuntu.12.04_amd64.deb sudo dpkg -i chef-server-11.deb #   sudo chef-server-ctl reconfigure #,     sudo chef-server-ctl test 

サーバーをインストールして実行したら、管理者権限を持つユーザーを作成する必要があります。
ユーザーのホームフォルダーに.chefディレクトリを作成し、必要なキーをコピーします。
 mkdir ~/.chef cp /etc/chef-server/admin.pem ~/.chef cp /etc/chef-server/chef-validator.pem ~/.chef 

knifeの構成ファイルのセットアップを開始します。
 knife configure -i #   -  cat ~/.chef/khife.rb log_level :info log_location STDOUT node_name 'chefuser' client_key '/home/chefuser/.chef/chefuser.pem' validation_client_name 'chef-validator' validation_key '/home/chefuser/.chef/chef-validator.pem' chef_server_url 'https://192.168.0.1' syntax_check_cache_path '/home/chefuser/.chef/syntax_check_cache' 

Chef 10を使用したデータ転送。

最初に、ナイフの有用性を拡大するために、ナイフエッセンシャルをインストールする必要があります
 /opt/chef-server/embedded/bin/gem install knife-essentials 

中継点として使用するディレクトリを作成します。 そして、その中にナイフ構成ファイル用のフォルダーを作成します。
 mkdir -p ~/transfer/.chef 

Chef 10とChef 11に別々のナイフ設定ファイルを作成します
/home/chefuser/transfer/.chef/knife-chef10.rb
transfer_repo = File.expand_path( '..'、File.dirname(__ FILE__))
chef_server_url " chef-10.example.com:4000 "
node_name 'chef-webui'
client_key "#{transfer_repo} /。chef / chef-webui.pem"
repo_mode「すべて」
versioned_cookbooks true
chef_repo_path transfer_repo
cookbook_path nil

/home/chefuser/transfer/.chef/knife-chef11.rb
transfer_repo = File.expand_path( '..'、File.dirname(__ FILE__))
chef_server_url " chef-11.example.com "
node_name 'admin'
client_key "#{transfer_repo} /。chef / admin.pem"
repo_mode「すべて」
versioned_cookbooks true
chef_repo_path transfer_repo
cookbook_path nil

webui.pemをChef Server 10から/home/chefuser/transfer/.chef/chef-webui.pemにコピーし、
/home/chefuser/.chef/chefuser.pem in /home/chefuser/transfer/.chef/admin.pem

これが準備できたら、ノード、クライアント、ロールなどに関する情報をダウンロードしてみることができます。
 /opt/chef-server/embedded/bin/knife download -c .chef/knife-chef10.rb / #    /nodes /clients /roles /cookbooks  ..   . ls transfer/ clients cookbooks data_bags environments nodes roles users 

同様に、個々のノードまたはクライアントに関する情報をダウンロードできます。
例:
 /opt/chef-server/embedded/bin/knife download -c .chef/knife-chef10.rb /nodes/server1.json 

Chef Server 11へのデータのアップロードを開始する前に、両方のサーバーに同じクライアント名またはノードがないことを確認することをお勧めします。 そうしないと、それらに関する情報が消去される場合があります。

次のようにデータをダウンロードします
 /opt/chef-server/embedded/bin/knife upload -c .chef/knife-chef11.rb / 

1つのノード、クライアントなどでアップロードすることもできます。

顧客をChef 10からChef 11に切り替えます。

これは、おそらく移行の最も興味深い段階です。
DNS名をchef_server_urlとして使用した場合、問題はありません。 新しいサーバーに再割り当てするだけです。
しかし、この場合のように、一意であり、別のマシンに割り当てることができない仮想マシンの名前を使用した場合は、それについて考える必要があります。
この質問は、単純なCookieを作成することで決定しました。その目的は、chef_server_urlの値を目的の値に変更し、chef-clientを再起動することでした。
そのような実装に興味がある人は、CookieをGitHubに投稿します。

画像 結果 :Chef 11への移行後、パフォーマンスが向上することがありました。 以前のサーバーは常に「スワップの寸前」にあり、最大2分間、ロールのリストに対する単純なリクエストを処理できました。 クライアントの数が同じ現在のサーバーでは、3 GBのRAMが無料で、リクエストは数秒以内に処理されます。

誰か質問があれば-コメントを書いて、喜んで答えます。

Source: https://habr.com/ru/post/J195934/


All Articles