2020年5月20日水曜日

MACで複数サーバに別タブを開いて一括SSHする

同時に複数サーバにSSHする必要な時があります。その都度新しいターミナルを開いて一台ずつログインするのは手間です。

以下を使えば新しいタブを開いて自動的にSSHできます。

#!/bin/bash
 
# 一台目
osascript <<EOF
tell app "Terminal"
  tell application "System Events" to keystroke "t" using command down
end tell
tell application "Terminal"
  do script "ssh -oStrictHostKeyChecking=no -o ServerAliveInterval=30 -i ssh接続用キー ログインユーザー@サーバIP" in front window
end tell
EOF
 
# 二台目
osascript <<EOF
tell app "Terminal"
  tell application "System Events" to keystroke "t" using command down
end tell
tell application "Terminal"
  do script "ssh -oStrictHostKeyChecking=no -o ServerAliveInterval=30 -i ssh接続用キー ログインユーザー@サーバIP" in front window
end tell
EOF

解説

tell app “Terminal”
tell application “System Events” to keystroke “t” using command down
end tell

ターミナルで「⌘」+「t」を打つ。新しいタブを開くようになります。

 

do script “xxx”

開いたターミナルの中に、スクリプトを実行

-oStrictHostKeyChecking

初めてのサーバーに接続するとき、「Are you sure you want to continue connecting (yes/no)?」を聞かれるので、こちらで設定すると聞かれなくなります。

2020年5月17日日曜日

kubernetesのcronjobをすぐ実行する方法

方法1

一時実行用ジョブを作成

kubectl create job ジョブ名 --from=cronjob/元のcronjob名
例↓ 例えば元のcronjobの名前はlog_rotate、すぐ実行してほしい名前はonetime_job
kubectl create job onetime_job --from=cronjob/log_rotate

上記のコマンドで「onetime_job」というジョブが作成られてそしてすぐ実行されます。

方法2

ステップ1、cronjobの実行履歴を確認
kubectl get pod | grep cronjobの名前

上記のコマンドで実行済みのジョブ履歴を表示することができます。

ステップ2、実行履歴からイメージを取得
kubectl describe pod ステップ1で取得したpod名
ステップ3、テスト用PODを作成
kubectl run test --image=ステップ2で取得したイメージ名 --restart=Never --command sleep infinity
ステップ4、PODにログインして手動でジョブを実行
kubectl exec -it test bash
# ジョブを実行
ステップ5、最後テストPODを削除
kubectl delete pod test

2020年5月16日土曜日

「Solr cloud: No registered leader was found after waiting for 4000ms」の対処方法

Solr Cloudを使っています。設定変更をしてサーバを立ち上がったらなかなかステータスが「active」になってくれない。

以下のコマンドで動作を確認しみました。

solr healthcheck -c core_name -z zkhost:2181

冒頭に以下のエラーが表示されていました↓

No registered leader was found after waiting for 4000ms

ログに何か他の情報があるかなと思って探ってみましたが特に有力な情報が見つけませんでした。

更にネットでググったらそれも対して対処法を見つけませんでした。

ダメ元でサーバを全部シャットダウンして、一台だけを立ち上がってみたら無事に「active」になってくれました。残りのサーバも立ち上がってみたら無事に復活できました。

恐らく同時に複数台を立ち上がるとリーダーの選出がうまくできてないじゃないかなと思われます。

まず一台だけを立ち上がったら間違いなくリーダーなってくれるはずです。


他のもっといい方法があれば教えていただきたいです。