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が無料で、リクエストは数秒以内に処理されます。



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



All Articles