dnfに変わったらしい。install」でも動くんだけど、dnfへのリンクになってるだけなんだってさ。前はデバイス⇒GustAddtion選んでたと思うのですが、やってみるとエラー。何でかなと思ったらどうも既にCDが入ってる事になってるらしい。アクティビティ⇒ファイルでVBox_Guest~~みたいなのがあるので選択してソフトウェアの実行すればOK。ハマらずにウィンドのリサイズとかクリップボードの共有とかできるようになってる。ほいで、CentOS8はPython3がデフォになってるそうで。コマンドが「python3」みたいなので、うーん。いつも通り仮想環境作るか。したら色々触ってみましょかね。MariaDBとRedisをインストする。MariaDBMariaDBなんだけど普通にやるとまだCentOS8に対応してないよーって出る。mariadbMariaDBは10.4.8じゃないとCentOS8で動かせない様子。新しい分には別に良いか。RedisRedisは何か楽になった。もっかいpingで、PONGって出ればOKping両方ともインストールはなんか楽になりましたね。再設定とか最近?のMariaDBはインストールした後にセキュアインストールっていうのがある。ルートのパスワード設定とか対話形式でやってくれるので、ありがたや。rootのパスワード再設定とかもしてくれる。rootの再設定って昔はセーフモードで上げて~、あれこれのテーブルを直でUpdateして~みたいな感じだったので、コレできるとだいぶありがたや。nパスワード以外の質問は自分は基本nでやってる。ローカルで試してる程度だったら、特に消す必要もないので。昔のやり方より断然こっちの方が楽でよい。)2018年09月04日00:28カテゴリプログラムCentOS7+MariaDB+GaleraCluster+MaxScale+PythonAWS上のCentOS7でMariaDBをGaleraClusterでクラスタ構成して、MaxScaleを使ってPythonから呼ぶ。(って書いてて、俺何語だ書いてんだって感じになった。クラスタ構成のDBを使う必要が出てきたので、今まで話半分に聞いてたクラスタを真面目に調べた。クラスタ構成で、自分みたいなしがないSEには一個だけ腑に落ちない点があったんだけど、この点を明確に書いてるのってあんまないのよね。当たり前だろって話なんだろうけど。クラスタ構成のDBって、ノードが何個かあって、それぞれレプリケーション(複製?同期?)みたいな事してるイメージ。ほいで、マスタ落ちたらスレーブが昇格して~みたいな感じ。ノードが複数あるってことはサービスがそれぞれいるって事。どのノードにアプリ側からアクセスすればいいの?ノード落ちたら、設定ファイル手で書きかえるの?アホなの?って感じだった。まー自分がアホなんですけど。結論から言うと、クラスタ構成のDBを使う場合はアプリ側で何かしらの仕込み(orそれに代わるもの)が絶対に必要になる。具体的には下の感じの機能を持ったDBアクセスするためのモジュールが必要になる。復活したら登録リスト的何かに復活させるマスタとかスレーブを切り替えてるならその辺もクラスタ構成の何かを使う場合は必ず上記の様なものが必要。Webサーバで考えればロードバランサみたいなやつ。クラスタとかHA構成の話ってだいたい、クラスタそのものの機能ばっかりの話で、実際、具体的にどう使うか的な話があまり無いので、いっつも腑に落ちなかった。プロキシみたいな機能はどれなのって事かな。Djangoのアプリでやろうとして、きっとそういうモジュールがあるんだろうなと思ってたら公式にこんな問答があった。アプリ側で上述の機能を実装しとけって事らしい。思ったら、MariaDBの場合、上述のプロキシみたいな機能をMaxScaleというの使ってやれる。MariaDBはなかなかいい感じですね。使ってみて、機能的にも割とよかった。いう事で、CentOS7でMariaDBをGaleraClusterでクラスタ構成にして、MaxScaleのサービスを通してPythonから呼んで、アプリ側には変更を加えずにクラスタを使えるようにする。公式にもチュートリアルあるし、色々記事もあるんだけど、古かったりやり方書かれ過ぎてパニックなので、まとめ的にも。あと、実際にどう繋げばいいの?ってとこも。AWSで3つインスタンスを作る。同じVPCのサブネット内にインスタンス作って、プライベートIPでPING通るようにする。セキュリティで全てトラフィックを例えば「10.0.0.0/16」とかにしとけば行けると思う。これは全インスタンスでやっておく。rebootそしたら、最初のノードを作る。MariaDBは10.3。0#一つ目のノードを起動galera_new_clusterこれでとりあえず最初のノードが起動する。最初のノードは必ず最後の「galera_new_cluster」で上げないとダメっぽ。ここまでの状態で、「mysql」って打てば自分につながる。あとはmysqlのrootのパスワードとかの設定。やらなくても動くだろうけどとりあえず。#Rootのパスワードとかの設定#ちなみにこれは、最初の一個だけやれば他のノードは同期されてた。'wsrep_%';」でクラスタの設定が見れる。wsrep_local_state_commentがSynced、#wsrep_incoming_addressesに自分のアドレスが乗ってれば大丈夫らし。mariadb後は、他のノードも同様に↓の感じでセットアップ。mariadb」でサービスを上げる。ここまでで、クラスタ構成になる。'wsrep_%';」すれば「wsrep_incoming_addresses」に3つIPが表示されてるはず。次はMaxScaleのセットアップ。一か所で動かすけど、適当なノード(MariaDBが入ってるインスタンスとは別でもいい)で↓の感じ。maxscaleで、次にMariaDBにつないで、MaxSclae用のユーザを作る。'maxscale'@'%';#何か権限が↑じゃ足りないらしい。'maxscale'@'%';そしたら次は設定ファイル。Listener]type=listenerservice=CLIprotocol=maxscaledsocket=default#中身は↑#################Splitなんちゃらみたいなサービスとかリスナでやってるサンプルが多いですが、とりえず動かすなら↑で充分なのと、公式が上で書いてあるからそうした。アプリからつなぐときはリスナの「port=4306」につなげる必要あり。したら、MaxScaleのサービスを上げて確認する。maxscale#確認用⇒ノードが3つ出て、マスタとかスレーブとか確認できればOK。listenersそしらた、mysqlのクライアントが入ってるインスタンス(mysqlってコマンド打って動くインスタンス)で↓のコマンド。maxscaleこれで繋がれば、maxsclaeを通して各ノードにアクセス出来てる。次はPythonから呼ぶ。いっても↑のmaxscaleにつなげるやり方が分かってれば問題ないはず。print(row[0])cur.closeconn.closeこれだけだと、あまり違いが分からないけど、マスタのサービス落としたり、他のノードでテーブル作ってインサートしてみたいなことしてもちゃんと動いてる事がわかると思う。そいで、今一つ分かってない事が1個ある。見てるとクラスタは3ノードが最少構成で、3ノードの場合、ノードが残り1個になるとクエリを受け付け無くなるという習性がある。