プロキシ環境下でElasticsearchのプラグインがどうしてもインストールできない
おはこんばんにちわ、ビショップです。
あまりの忙しさとネタのなさに久々の更新。
また今度記事に書こうと思うのですが、Amazon Linux 2023にWikiツールのGROWIをインストールしています。公式ですとdocker-composeによるインストールを推奨していますが、どうしても弊社のプロキシ環境下において、Elasticsearchのプラグインがインストールできないという現象に当たりました。ES_JAVA_OPTSといった環境変数等の設定も試してみましたが、どうしてもうまくいかない。
ということで、やむを得ず、レガシーではありますがCentOSでのインストール方法を参考に各ツールを個別にインストールして構築しました。
環境
- Amazon Linux 2023
- Elasticsearch 8.x
とはいえ、個別のインストールを実行しても、結局Elasticsearchのelasticsearch-pluginコマンドを使用してのプラグインのインストールができず、結局オフラインインストールをすることになりました。残念。
今回インストールするプラグインは、次の2つです。
- analysis-kuromoji
- analysis-icu
とりあえず公式にあるダウンロード用のリンクを使ってダウンロードします。
今回は2つともtmpフォルダにダウンロードします。
wget -P /tmp https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-kuromoji/analysis-kuromoji-8.12.0.zip wget -P /tmp https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-icu/analysis-icu-8.12.0.zip
その後、ダウンロードしたzipファイルを指定して、elasticsearch-pluginコマンドを実行します。ファイルを指定する際には、file://で/tmpフォルダ内のzipファイルを指定します。elasticsearchのフォルダ構成は何も考えずにインストールした場合です。
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install file:///tmp/analysis-kuromoji-8.12.0.zip sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install file:///tmp/analysis-icu-8.12.0.zip
特にエラーが発生しなければ成功です。
elasticsearchを再起動して反映しましょう。
docker-composeでコンテナを起動した後に、コンテナに保存先をマウントしてオフラインインストールもできるような気がしますが、また今度試してみたいですね。
【AWS】 費用節約のためEC2を夜間停止する2023年4月版【備忘録】
おはこんばんにちは、ビショップです。
AWS、高いですよね。毎月の費用に辟易しております。やべぇ、たっけぇってなる前に、昼間しか使わないものは夜間とか土日は停止しておきましょう。Webのサービスはなんでもそうですが、AWSもちょいちょい管理コンソールの画面とか表現が変わるので、直近、2023年4月現在の管理コンソールでの設定方法を備忘録にしておきます。
手順は下記のように進めます。
使用する画面はこの2つです。
- IAM Management Console
- Amazon EventBridge
以前はLambdaとか使ってましたが、今はEventBridgeだけでちゃちゃっとできます。
今回は、「平日(月曜~金曜)の朝8時に起動、夕方18時に停止」というスケジュールにして、土日と平日夜間は停止、昼間のみ利用するように組んで行きます。
設定開始
ロールを作る
自動停止と自動起動を行うためのロールを作成します。
IAM ManagementConsoleから、「アクセス管理」→「ロール」でロールの管理画面を開きます。画面右上の「ロールを作成」
カスタム信頼ポリシー
ロール作成の画面に移るので、まずは信頼されたエンティティタイプで、「カスタム信頼ポリシー」を選択します。
すると、すぐ下のポリシーがJSON形式で記述するものに変わります。
ので、下記のように編集します。Seviceだけ追加すればいいと思います。その後、次へ。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "scheduler.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
許可ポリシー
続いて、「許可を追加」画面になります。
検索等を活用して、下記どちらかのポリシーを追加します。どっちでも大丈夫です。
- AmazonEC2FullAccess
- AmazonSSMAutomationRole
こんな感じでポリシー左側のチェックを入れて、「次へ」
ロールの作成完了
ロール名の設定と、諸々の確認画面になるので分かりやすい名前をつけて、画面下部の「ロールを作成」ボタンを押して作成を完了しましょう。今回の名前は適当に「Auto_stop_start_role」としました。
メッセージが表示され、ロールの一覧に表示されていれば成功です。
自動停止スケジュールを作る
続いて、スケジュールを作っていきます。停止と開始はそれぞれでスケジュールを作ります。まずは停止のスケジュールを作りましょう。別にどっちからでもいいんですけど。
EventBridgeの「スケジューラ」→「スケジュール」と遷移し、「スケジュールを作成」します。
スケジュールの設定
最初にスケジュールの名前を設定しますが、割愛します。適当にわかり易い名前をつけましょう。そのすぐに下にスケジュールを具体的に設定する部分があります。Linuxのcron式で記述します。こんな感じに設定しましょう。
これで月曜から金曜の間、毎日18時になったら処理が実行されます。ちなみに、ちゃんと日本時間なので、タイムゾーンを気にする必要はないです。たぶん最近そうなった。
すぐ下にトリガー日が表示されるので、それを見てスケジュールが問題ないか確認しましょう。「フレックスタイム」はとりあえずオフで。
他は特に設定する必要はないのでそのまま「次へ」
ターゲットの選択
次にスケジュールによって起動する処理とそのターゲットを指定します。先に停止したいEC2のインスタンスIDをコピーしておきましょう。「すべてのAPI」を選択して、検索を駆使してAmazonEC2の「StopInstances」を発見、クリックして選択します。
すぐ下のウィンドウで、停止したいインスタンスをJSONで記述します。ダブルクォーテーションでくくって、カンマ区切りで複数記述できます。いい感じに書けたら「次へ」
ロールの設定
他の設定画面に移ります。画面下の方のアクセス許可で、最初に作成したロールを設定します。「既存のロールを使用」を選択して、プルダウンリストで先程作成したロールを探しましょう。
スケジュールの作成完了
その後はスケジュールの確認と作成完了になります。表示されている内容を確認して問題なければ完了しましょう。
自動開始スケジュールを作る
停止と同じように作る
基本の作成方法は自動停止スケジュールと同じです。
開始スケジュールのcron式のサンプルを一応おいておきます。
ターゲットは、AmazonEC2の「StartInstances」を選択して、インスタンスIDをJSONに記述していきます。
動作確認
ここまでで一通りの設定は完了です。
あとは時間になって、指定したインスタンスが問題なく停止すること、次の日ちゃんと起動していることを確認します。
注意事項
インスタンスの「停止保護」が有効になっていると自動的に停止しません。一応確認しておきましょう。
まとめ
EC2インスタンスの費用は起動時間がほぼすべてみたいなもんです。本番環境のサービスであろうとも夜中は利用できなくていいサービスもいっぱいあると思います。起動と停止をうまく活用していい感じに節約しましょう。
【RHEL9】パスワード認証のrootでSSH接続できない
おはこんばんにちは、ビショップです。
最近は1か月ごとに備忘録ばっかり書いてる。
AWS EC2のインスタンス起動時に選択できるRHELがいつのまにか9になってた。今回は特に気にせずにそのままRHEL9で新しくインスタンスを起動しましたが、タイトル通り、rootでのSSH接続でハマりました。そもそも論は置いておきます。
最初はコマンドプロンプトから公開鍵を指定して接続、/etc/ssh/sshd_configで下記を変更しました。
# To disable tunneled clear text passwords, change to no here! PasswordAuthentication yes #コメントアウトを外す #PermitEmptyPasswords no # たぶん一番下の行 #PasswordAuthentication no #コメントアウトする
PasswordAuthenticationを有効にした感じですね。RHEL8までならこれで
systemctl restart sshd.service
を実行すればパスワードを使ってrootでログインできました。(パスワードは設定してね)
が、どうにもうまくいかない。調べてみると、少し追加で設定が必要のようです。
RHEL9からは
- /etc/ssh/sshd_config.dの下に「01-permitrootlogin.conf」というファイルを作る。
- 01-permitrootlogin.confに「PermitRootLogin yes」を追記する。
- sshd.serviceを再起動する。
直接/etc/ssh/sshd_configのPermitRootLoginをyesにしても動くと思いますが、confファイル作った方がいいんじゃないですかね。RHEL9のインストール時に「パスワードによるroot SSHログインを許可」みたいな設定が出来るんですが、そちらでもconfファイルが追加され、sshdが起動する際にincludeされる形となってると思います。
普通の人はちゃんと公開鍵使いましょうね。そんな難しいものじゃないから。
AWSのRHELでdnfすると「このシステムは、エンタイトルメントサーバーに登録されていません」とエラーになる
おはこんばんにちは、ビショップです。
備忘録。
タイトルのように、AWS EC2で構築したRHELでdnfすると「このシステムは、エンタイトルメントサーバに登録されていません。」と表示され、エラーになります。EC2のRHEL AMIにはアップデート等を受けるサブスクリプションが含まれているはずなので、特に問題ないはずです。ということで、このエラーが表示されないように設定を変更します。
/etc/yum/pluginconf.d/subscription-manager.conf を編集します。
vim /etc/yum/pluginconf.d/subscription-manager.conf
[main] # 1になっているところを0にする #enabled=1 enabled=0
これでエラーが表示されなくなりました。
【DBeaver】プロキシ経由でのドライバダウンロード
おはこんばんにちは、ビショップです。
備忘録。
DBeaverでは必要に応じて各DBエンジン用のドライバを自動でダウンロードしてくれます。ただ、弊社のようにプロキシ環境だとちゃんとダウンロードできません。ということでプロキシ設定をしましょう。いつも聞かれるたびに、どこだったっけ?ってなるのでメモ。
まずは設定を開きます。(ウィンドウ > 設定)
左側のドリルダウンメニューから「接続」→「ドライバ」と選択します。
ドライバの設定画面になるので、HTTPプロキシ(ダウンロード用)となっているところにプロキシサーバの情報を登録しましょう。
これでプロキシ環境でもドライバをダウンロードできるようになります。
分かりにくいところで、設定の「一般」に「ネットワーク接続」の設定がありますが、これはダウンロードとなんら関係がないので注意が必要ですね。
MySQLクライアントを選ぶ【3選】
おはこんばんにちは、ビショップです。
久々すぎて。ずっとブログを書こうと思ってたんですが、忙しくてねぇ。向いてないかも。
最近MySQLのクライアントを変えようかな~と思って色々探していました。
まぁ有名なものもあるんでなんですが、良い感じのものを3つ選びました。この中から一つに絞り込もうと思ってるんですが、まだ決めあぐねています。
これから比較していく人の参考になればいいかなと思います。まとまってるようでまとまってないので感覚としてみてほしい。DBエンジンについて少し言及していますが、基本はMySQLのクライアントとして選定しているので注意してください。
日本語で使えるもの、Windowsでも使えるものだけを対象にしてます。Macユーザはラーメンブログでも読んでろ。
Navicat for MySQL
PremiumSoftから提供されているNavicatのMySQL専用版です。
良いところ
・ 使いやすい。ほとんどの作業をGUIで完結できる。
・ サーバ間のマイグレーションもコピペ感覚で出来る。
・ 最新版の見た目が今時。
・ ER図の作成機能がある。
・ データ生成機能がある。
・ 日本語対応は当然完璧
良くないところ
・ 有償。
お金出してもらえるなら迷わずこちらを使えば良いでしょう。詳しい機能は製品サイトを確認してください。お金をたくさん出してもらえる人たちはNavicat Premiumを買いましょう。MySQL以外も使えるので全部賄える。Enterprise版とStandard版の違いはよく分かりません。Standardしか使ったことない。
今使ってるちょっと古いバージョンは時々謎のエラー吐くのが気になる。
HeidiSQL
「ハイジエスキューエル」が正しい読み方でしょうかね。
良いところ
・ MySQL以外にPostgreSQL、Microsoft SQL Serverも対応。
・ モダンな見た目で、丁寧な色使いでテーブルプロパティや表示されたデータなどが非常に分かりやすく表現されている。
・ ほとんどの作業をGUIで完結することが可能。
・ かなりいい感じに日本語対応。
・ SQLの履歴が表示されてる。
・ 圧倒的に軽い。
良くないところ
・ テーブルプロパティが複数タブで開けない?プロパティの比較とかやりづらい。
とってもバランスいいと思います。初心者とかこれからいっぱい触るよ~って人はHeidiSQLが良いかも?
DBeaver
なんて読むのが正解?特にD。「ディービーバー」「デービーバー」って呼んでます。今一番熱いDBクライアントですよね。
良いところ
・ MySQL以外のDBエンジンも豊富に対応。
・ JDBCドライバを自動的にダウンロードしてくれる。
・ 見た目も良き。
・ 日本語にもかなり対応。
・ ER図を勝手に作ってくれる。
・ ER図を使ってデータのリレーションを追える。
・ 重いSQLが終わったことを通知してくれる。
良くないところ
・ 一部英語のまま。
かなり機能も多く、いろいろ使い方をまとめてる方もたくさんいるので、困ることもなさそうです。使い方自体もそんなに癖を感じることもなく、使いづらさもそこまでないですね。データ表示時は件数が多いとハングアップするときがあります。DBのことをある程度理解してるならDBeaverが良さげです。
まとめ
どれを使っても良いところ悪いところがあります。後は好みなんでしょうね~。DBeaverがなんとなくもう一息って感じがします。もう少し軽くなったらDBeaver一択って感じになりそう。Googleトレンドで比較しても圧倒的にDBeaverが人気ですね。同じ土俵にはならないんで、比較するのは良くないかもしれんけど。データやテーブルプロパティの見やすさだけで言ったらHeidiSQLはマジで最強。直感的に分かりやすいのいい感じですね~。まぁお金出せるなら迷わずNavicat選んどけって感じです(2022年9月現在)
Aurora MySQLのデフォルトcharacter_setを変更する
おはこんばんにちは、ビショップです。
ググれば出てきますが、備忘録のために自分のブログにも書いておきます。
Aurora MySQL 5.7 です。
何も考えずに立てたDBのcharacter_setがlatin1になってて、システムから登録したデータが文字化けして困りました。テスト環境だったんで良かった。こちらをちゃんとutf8に変更します。
DBクラスター用のパラメータグループを作ります。
「character_set」でパラメータを検索して出てきたパラメータを良しなに変更します。
出てくるパラメータは下記6つだと思います。
character_set_client
character_set_connection
character_set_database
character_set_filesystem
character_set_results
character_set_server
特に、普通にAurora MySQLでDBを作ると、character_set_databaseとcharacter_set_serverがlatin1とかになってたりします。うちのように普通はシステムの日本語文字コードにはutf8とか使ってるでしょうから文字化けします。この2つはちゃんと指定しましょう。
サーバ立ててMySQL立てるときってmy.cnfに何も考えずにdefault_character_set書いてたんで、なんか抜け落ちてました。