mysqlのSSL通信

mysql8.0をインストールし、レプリケーションを行っていたのだが

再起動するたびに、手動で接続しなければならないので、

SSL通信にしてみた。

検索でいろいろググってみたが、結局のところ初めから設定や証明書などは設定されていたので

CHANGE MASTER TO

MASTER_SSL = 1;

とするだけで動作しました。

マスター側の証明書とかをスレーブ側にコピーして、それをスレーブに設定する記載が

結構見受けられましたが、上記だけで動作しました。

各々のSSL設定は初期設定に含まれていたようで

show global variables like ‘%ssl%’;

+————————————-+—————–+

| Variable_name                       | Value           |

+————————————-+—————–+

| have_openssl                        | YES             |

| have_ssl                            | YES             |

| performance_schema_show_processlist | OFF             |

| ssl_ca                              | ca.pem          |

| ssl_capath                          |                 |

| ssl_cert                            | server-cert.pem |

| ssl_cipher                          |                 |

| ssl_crl                             |                 |

| ssl_crlpath                         |                 |

| ssl_fips_mode                       | OFF             |

| ssl_key                             | server-key.pem  |

+————————————-+—————–+

SSL関係はこんな感じが初めから入っていました。

証明書自体は、/var/db/mysqlの中に作成されていました。

mysql レプリケーション

bhyveを入れてからサーバで仮想環境を作りまくって遊んでいるのだが、

仮想環境が多くなりすぎてCPUのコア数が全然足りない。

ある程度余裕がないとbhyveがこけるのでマイクラ用のサーバなどは起動できなくなってしまった。

その中で今回は、mysqlのレプリケーションを行ってみた。

設定自体は結構単純で

1.マスターにレプリケーション用のアカウント作成

2.スレーブ側にマスターに情報を入れる。

3.スレーブ開始

で終わった。レプリケーション自体の設定は初めからほぼ入っていた。

1件困ったのがスレーブからマスターに1回接続しないといけないこと

回避方法はわかったが、面倒だから放置中

参考:

https://yoku0825.blogspot.com/2018/10/mysql-80cachingsha2password-ssl.html

双方向レプリケーションとかは面倒そうなのでしなかった。

で、設定終わってしばらく動かしていると

CPU使用率に結構な差が出ていた

1.bhyveload+FreeBSD-R12.2

2.uefi+FreeBSD-R13

の構成なのだが、1のが明らかにCPUを食っている。

1がマスターなのでCPUを多く食うのは当然なのだが、かなりの差が出ていたので

マスタースレーブを入れ替えてみたら、

2の構成のが1の構成よりCPU使用が半分で済んでいた。

mysqlのレプリケーションをやってみて思ったのは、

まだまだレプリケーションの最適化がないことだった。

双方向レプリケーションに関しては、もう少し楽になるといいなと思う。

まあ、自宅サーバじゃレプリケーションいらないのですが

FreeBSD 13.0Releaseが出たので、

サーバ機を交換してみました。

いくつか変更してみたい部分があったので、試してみました。

・bhyveでuefiを組み込んでなかったため、VNCができなくWindowsとかを入れられなかった。

Loaderをbhyveloadで入れていたのだがこれだとVNCが使用できない。

・syslogからrsyslogへ変更

bhyveでいくつか仮想サーバを立てているのだがそのログを集めるのにTCP通信できるrsyslogに変更

・起動領域や、よく使うデータをSSDに変更

いままでzfsでHDDにSSDのキャッシュを使用していたが、ISCSI領域とかできるだけ早い方がいいため、

SSDにいれることにした。正直そんなに早さは気にならないけど、どうせならということで。

・qmailからpostfixへ変更

Let’sEncryptで証明書が取れるようになったので、メールも暗号化しようかと思いpostfixに変更。

いくつか詰まったこと

・bhyveでVNCをするのに、Loaderをuefiにしないとならない。

・nfsの設定で、Firewall設定のためPortとかをできるだけ節約したかったが、

nfsV4での設定は、rc.confにnfsv4_server_enableというのが別枠でありそちらの方も設定しなくてはならなかった。

また、exportsファイルの設定もV4だけ別形式での書き方になる。

・fstabでのnfsv4等のオプション設定

192.168.1.1:/data /data      nfs     rw,nfsv4,port=2049      0       0

といった形になる。rwは読み書きを書くのだと思っていたら、オプションを書く欄だったようだ。

・nfsdの起動

私のところでは、なぜかnfsdがしょっぱな正常起動しない。

なので、/usr/local/etc/rc.dでnfsdをrestartさせている。

・ctldの起動

これもnfsdと同じく正常に起動しないため、/usr/local/etc/rc.dで起動している。

・postfixでのメールでの暗号化情報の表示

postfixを入れ、証明書を入れ、サーバ間で暗号化してくれるものだと思い、メールを送信してみるも暗号化されていないように見えた。

いままでCentosでpostfixを入れていたが、オプションでsmtpd_tls_received_headerがあり、これがyesになっていただけだった。

単にデフォルト設定が違うだけだった。

よく使ったコマンド

zfs import

zfs import –R /backup –F ID

zfsで古いルートディレクトリを/backupに一時的に連結する。

bhyveで仮想サーバを立てているのだが

bhyveでzvolの仮想サーバを立てて

マイクラ用にjavaを入れようとしたら

容量が足りずに困ってしまった。

その際に、容量増加を行ったのでその手順をメモ

1.仮想サーバを落とす。

2.zfs get volsize  (tank/bhyve/minecraft/disk0)で、サイズ容量のチェック

3.zfs set volsize=40G (tank/bhyve/minecraft/disk0)で、サイズ容量を増加させる。

4.仮想サーバを起動する。

5.gpart recover (vtbd0)で、メタデータの更新

6.gpart resize –i 2 (vtbd0)で、パーティション2を最大値まで増やす。

7.zpool online –e (tank) (vtbd0)で、zfsの認識容量を増やす。

で、拡張することに成功しました。

zfs楽しいです。スナップショットで仮想サーバをすぐにやり直しできるし。

仮想サーバのデフォルトを作成し、すぐにコピーで複製できるし。

参考

http://april.fool.jp/blogs/2018/12/22/3159/

https://griffonworks.net/nikki/archive/4457.php

http://blog.alaif.net/2012/06/freebsd-gpt.html

FreeBSDが12.2RELEASEが出たので

仮想環境においてあるWebサーバとDBサーバを更新しました。

更新というか新しく入れたのだが。

いままでは、Wordpressとpostgresqlでの運用であったが

新しいWordpressではpostgresqlが動くかどうかわからないのでMysqlでの運用に変えた。

他にもいろいろ詰まったところメモ

FreeBSDのbhyveを使用し、
仮想サーバにインストールしていたが
パーティションを1つにしたかったので
shellでgpartを使用し、パーティションを切っていたのだが
普段であれば、dmsgを使用しディスクを判別していたが
なぜか出てこず。1度マニュアル操作で最初に出てくるのを見て判別した。

FreeBSDでportsを使用し、postfixをインストール
転送設定をしたのだが、ローカルからmailコマンドでメールを送ると
@以降がpostfixで設定したのが反映されない。そのせいで転送にも失敗する。(hostnameのため)
2時間くらい迷って、sendmailで動いてるようだと思い、最終的に、/etc/mail/mailer.confを書き換えて
postfixからメールを送れるようになった。

FreeBSDで、firewallの設定を行っていたのだが
起動スクリプトでは、全部閉じる設定を行い。
その後ユーザーの起動スクリプトの中で必要ポートを開く設定を行っていたのだが
なぜかSyslogがログサーバにデータを送らない。
どうも起動時に送れるかどうかを調べているのかもしれない。
起動スクリプトで細かい設定を入れると動くようになった。

サーバでちょろちょろメモ

・qmail+tcpserver+courierといった構成だったのだが、いまのportsでは、tcpserverとcourierが同時に入れられないらしく、tcpserver+dovecot2となりました。

・外部から特定ポートだけを他のサーバに転送したい場合、「natd –n fxp0 –redirect_port tcp xxx.xxx.xxx.xxx 80 80」とかするとそのポートだけリダイレクトしてくれます。

・bhyveの仮想環境で、起動すると本体の時刻=PCの時刻となるようで、「/etc/wall_cmos_clock」ファイルの有無でPC時刻の状態認識を変えると時刻が合う。

・portsでqmailを入れると起動スクリプトがおかしいのかqmailがうまく動かないので起動スクリプトの修正が必要。command_argsの近くに¥’が2つついているがMaildirではあるとうまく動かない。

サーバの構成変更

サーバの構成変更をしました。

CPU:Athlon X2 BE-2350

MEMORY:2GB

から

CPU:i5 4690K

MEMORY:32GB

に変更しました。

CPUに関してはさほど重要では無かったのですが、

zfsを使ってみたいと思ったので、MEMORYの増設が必須となり、

いまさら、DDRのメモリーを買うよりは、メインを買い直して、そのお下がりを使おうと

いうことでメインのお下がりです。

サーバなので消費電力が低い方がいいのですが、

いまのCPUは、負荷かけなければ、そこまで消費電力を食わないので

いざとなったときに、性能出せるようになった方がいいと思いました。

 

で、構成組み替えて、起動とかしてみたら、HDDが1台壊れてました。

まあ、例のよく壊れると有名なSeagateの3TBなのですが、BIOSで3000GBのはずが、

4.1GBとか認識されてました。

なので、HDDを購入してからOS入れ直しかなと思います。

gmirrorとか構成壊れても、日々のログで表示されてないので、なんかチェックしようかと

何回も、raid壊れていてなかなか気がつかないことが多くて、構成変えたときによくトラブってます。

FreeBSDでzfsを使用する。

FreeBSDをそろそろ入れ直ししようかと思っていろいろ調べています。

とりあえず、zfsにしてみようかと思い、VMwareで実験してとりあえず、決定メモ

10.3Releaseでの実験で、11Release出たら入れ替えようとしてるので、このままいけるかは不明。

#gpart create –s GPT ada0

HDDをGPTパーティションとする。

#gpart add –a 4k –s 512k –t freebsd-boot –l boot0 ada0

起動用のパーティションを切る。

#gpart add –a 4k –t freebsd-zfs –l sys0 ada0

残りのパーティションをzfs用に切る。

#gpart bootcode –b /boot/pmbr –p /boot/gptzfsboot –i 1 ada0

起動用のパーティションに、起動用イメージの書き込み

#gpart set –a active ada0

起動用にHDDをセットする。

#zpool create –o altroot=/mnt –m none –f tank ada0p2

zfs用に切ってあるパーティションでzpoolを作成する。

(ここを最後ada0としてしまって起動しない何故だ~と考え込みました。)

(FreeBSD10.3では、/mntにルートを置いておくと、そこ起点でインストールをその後行ってくれるそうです。)

#zfs create –o mountpoint=/ tank/ROOT

zfsにルートのマウント地点を作成。(上でaltrootしてあるので、その下にできるようです。)

(上でマウントしても、下でマウントを設定してもいいようです。上だといろいろ作成するときに起点/mntになるので

楽になります。)

#zpool set bootfs=tank/ROOT tank

ここまででパーティション切り終了。

他のところでは他にもいろいろしてあるが、よくわからないので放置でいけた。

で、最後で/etc/rc.confにzfs_enable=”YES”を追加する。

自分は、パーティションをいろいろ切るのはめんどくさいからいやなので、

ルートだけで済ませたいのでまとめました。切るのは後からでもできますし。

後実際に運用してHDD壊れた場合、シリアルNOをみるコマンド

#diskinfo –v /dev/ada0

シリアル番号でzpool上に表示させている人もいるみたいだけど、HDDそんなにあるわけでもないし。

そこまでしないでもいいかと思い、一応シリアルNOだけはみるコマンドだけは覚えておこう。

自分もやってしまった。

ファーストサーバの事故をみて危ないなとか思っていたら

自分のサーバもおかしくなりました。

FreeBSD8で、atacontrolを使ってraid1を組んでいました。

で、エラーが発生し、RAID1が崩れた状態でした。

HDD1(master)、HDD2(Slave)、HDD3(Backup)

と言う構成で、HDD2のSlave設定が切れました。

1.まず他のPCに接続し、Formatをかけて正常動作することを確認。

2.atacontrolを使用し、もう1回RAID1の設定->なぜかエラーで成功せず。

3.atacontrolを使用してraidを組むと再設定できない人がそこそこいることを

Webで見つけて、atacontrolからgmirrorに変更することにしました。

4.atacontrolの設定を削除

5.再起動すると途中で止まって動かず。fstabの設定変更が必要だが起動できない。

6.HDD2、HDD3の順で接続し、HDD2にFreeBSD7をインストールする。

7.インストールの途中でfdiskを扱ったからか、HDD3のデータがまっさらになる。orzパーティションとか変えてないはずなのに。

8.ここで、HDD1を接続、HDD2からマウントしようとするができず。

9.HDD2、HDD1、HDD3接続して、HDD2にFreeBSD8をインストールする。

10.なぜか、HDD1がまっさらになる。orz

11.ここでデータ全部消えてしまった。Fdiskを使うと全部まっさらにしてしまうのか?

12.昔はずしたHDD4(1年以上前の状態)からデータをコピーすることにする。

13.Fdiskが鬼門だとわかったのでいつもLabelのみでmountするようにした。

14.HDD2(起動)、HDD1、HDD4でFreeBSD8をHDD2にインストール

15.rsyncをPackageでインストールする。

16.rsyncを使用し、HDD4->HDD2にコピーしてみる。(エラーでうまくいかず)

失敗しているファイルがシステム領域なため、システム領域がおかしいのかと思う。

17.HDD2、HDD3、HDD4にしてrsyncを使用し、HDD4->HDD3にコピー成功

18.HDD1、HDD2(起動可能)、HDD3にして、HDD1にFreeBSD8をインストールrsyncをpackageでインストール。

19.HDD3->HDD2(起動可能)にrsyncを使用してコピー(失敗)

20.ここで1日目作業終了。

 

可能性として、

a.rsyncをpackageでインストールしたので、i386でコンパイルされてるためエラーが起こったのかも?

そもそも単なるコピーだからそんなにエラー起こるわけがないと思っているのだが、なぜかエラーでとまっている。

 

明日は、FreeBSD8のDVDイメージを取ってきて、rsyncをportsでインストールする。