Zabbix のダッシュボードを変更、もしくは置き換えられないかと思い立ち、grafana を導入。
インストールについては、先人の方々の情報とおりにインストールすれば、難しいところはなかった。
(nginxやapacheを使用したリバースプロキシについては使っていません。。。)
グラフは Zabbix と遜色ない気がする。 見た目もクール。 なんとなくいい感じ。
hyper-V 上で OS インストールしようとしたときに画面下部にスクロールできず、詰んだ、と思った。。。
こんばんは。amegon です。 雑記です。
Windows 10 上に VirtualBox をインストールして仮想マシンをごりごり動かしていました。
でも、よく考えてみたら Windows 10 Pro はHyper-V が使える。
Hyper-V を使えば、Windows Update で OS が再起動しても自動で復旧できるやん、ということで移行してみました。
(VirtualBoxでも設定すればできますが、Windows にオートログインするとか面倒だったので。。、)
安易にインストール、有効化したが、VirtualBox の仮想マシンが起動しなくなって焦る。
クラスタ組んだりネットワーク経由で iSCSI でボリュームマウントしたりしていたので、VirtualBox <-> Hyper-V 間でつなげたら面白いな、とか思っていたのですが、早くも絶望。
この際、VirtualBox でスナップショット運用し、スナップショットを大事にとっておく運用をしていたので、フォルダ配下にある vdi を vhd に単純に変換、インポートしてもだめでした。
(まっさらなCentOS が立ち上がった。)
VirtualBox で移行したいスナップショットを選択し、クローンを実行。
クローンで作成された vdi を vhd に変換した。
仮想マシンを新規作成し、その後仮想ハードディスクの設定で先ほど作成した vdi を選択。
CPU や メモリ、ネットワークはぽちぽち設定。
仮想マシンを起動してみる。
しかし起動しない。
ググってみたら以下のページを発見。
参考にさせていただきました。
https://qiita.com/sankaku/items/26d72c1cf794fc1a3eb3
(このページほぼ全部手順ありですね。。。)
レスキューモード起動 -> 初期RAM 再作成 -> 再起動で無事起動しました。
VirtualBox の時は enp0s だったのが、Hyper-V では eth になってた。
/etc/sysconfig/network-scripts のファイル名、内容を修正。
計6つの仮想マシンを移行しましたが、上手くいきました。
ですが1点気になる点が。
仮想マシンに対して、別の物理PCから Ping を打って、冗長的な死活確認を行っているのですが、VirtualBox 時代に比べてどうも Ping 落ちが目立ちます。
仮想スイッチの出来は Oracle の方が良い??
今回の目標は、仮想マシンdb-p と仮想マシンdb-s をクラスタ組んで、仮想マシンstorage の mariadb に iscsi で接続する、というところまで想定です。
だいぶ殴り書きなので、分かる人だけ分かればというのと、コマンドメモくらいになればです。
(折を見てまとめなおしたい。。。)
yum install corosync pacemaker pcs mysql-server
# vi /etc/corosync/corosync.conf totem { version: 2 crypto_cipher: none crypto_hash: none interface{ ringnumber:0 bindnetaddr: 192.168.1.0 # ネットワークアドレス mcastport: 5405 ttl: 1 } transport: udpu } nodelist { node{ ring0_addr: db-primary # ホスト名1 nodeid: 1 } node{ ring0_addr: db-secondary # ホスト名2 nodeid: 2 } } logging { fileline: off to_syslog: yes to_logfile: yes logfile: /var/log/cluster/corosync.log debug: off timestamp: on logger_subsys { subsys: QUORUM debug: off } } quorum { provider: corosync_votequorum expected_votes: 2 }
※ 上の日本語のコメントは削除しないといけない。
# firewall-cmd --add-port=5405/udp --permanent # firewall-cmd --add-port=2224/tcp --permanent # systemctl enable corosync # systemctl enable pacemaker # systemctl enable pcsd
■ hosts に登録 (db両方)
# vi /etc/hosts 192.168.1.105 db-primary 192.168.1.106 db-secondary
dns があったら便利だねー。
■ hacluster のパスワード変更 (db両方)
# passwd hacluster hapassword
■ クラスタの認証
# pcs cluster auth db-primary db-secondary -u hacluster -p hapassword --force
■ ここでスナップショット作成
■ mariadb インストール (db両方)
yum -y install mariadb-server
■ mriadb の設定
# vi /etc/my.cnf [mysqld] log-bin=mariadb-bin server-id=1
# vi /etc/my.cnf [mysqld] log-bin=mariadb-bin server-id=2
■ レプリケーションユーザーの作成 (db-primary)
※ db-primary のみ
# systemctl start mariadb.service # mysql mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'slavepass'; mysql> GRANT SUPER,REPLICATION SLAVE,REPLICATION CLIENT,PROCESS ON *.* TO 'repl'@'localhost' IDENTIFIED BY 'slavepass'; mysql> FLUSH PRIVILEGES; mysql> quit;
■ DBを停止してデータベースファイル一式をホスト2にコピーします。 (db-primary)
# systemctl stop mariadb.service # ssh db-secondary rm -rf /var/lib/mysql # tar cf - -C /var/lib mysql | ssh db-secondary tar xpvf - -C /var/lib/
※ db-secondary のログインパスワードは都度入力
■ クラスターリソースの設定 (db-primary)
# pcs cluster standby db-secondary # pcs cluster cib mysql_repl # pcs -f mysql_repl resource create mysql ocf:heartbeat:mysql # pcs -f mysql_repl resource update mysql binary=/usr/bin/mysqld_safe # pcs -f mysql_repl resource update mysql datadir=/var/lib/mysql # pcs -f mysql_repl resource update mysql log=/var/log/mariadb/mariadb.log # pcs -f mysql_repl resource update mysql pid=/run/mariadb/mariadb.pid # pcs -f mysql_repl resource update mysql replication_user=repl # pcs -f mysql_repl resource update mysql replication_passwd=slavepass # pcs -f mysql_repl resource op add mysql start interval=0 timeout=120s # pcs -f mysql_repl resource op add mysql stop interval=0 timeout=120s # pcs -f mysql_repl resource op add mysql monitor interval=20s timeout=30s # pcs -f mysql_repl resource op add mysql monitor interval=10s role=Master timeout=30s # pcs -f mysql_repl resource op add mysql monitor interval=30s role=Slave timeout=30s # pcs -f mysql_repl resource op add mysql promote interval=0 timeout=120s # pcs -f mysql_repl resource op add mysql demote interval=0 timeout=120s # pcs -f mysql_repl resource op add mysql notify interval=0 timeout=90s # pcs cluster cib-push mysql_repl
■ クラスタリソース作成 & 開始 (db-primary)
# pcs resource master mysql-clone mysql master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true # pcs property set stonith-enabled=false # pcs resource enable mysql # pcs resource start mysql-clone ← いらない??? きっといらない。
ホスト1の起動確認後ホスト2を起動します。
# pcs cluster unstandby db-secondary
■ クラスタ切り替えテスト
# pcs cluster standby db-primary
# pcs cluster unstandby db-primary
※ Msater/Slave のどちらかがシャットダウンしてしまうと、クラスタが切れてしまう。 → どちらか単体での動作継続ができない。
■ 起動メモ
※ pacemaker でコントロールしているけど、systemctl で mariadb を実行できる。はて。
db-primary OS 起動 db-secondary OS 起動 db-primary で systemctl start mariadb db-secondary で systemctl start mariadb db-primary で pcs cluster standby db-secondary db-primary で pcs cluster unstandby db-secondary db-primary で pcs resource cleanup
※ standby 状態になっていると、db-primary、db-secondary 共に mariadb は起動している状態となっている。
■ 仮想IP の追加
http://kan3aa.hatenablog.com/entry/2015/06/05/135150
pcs resource create VIP ocf:heartbeat:IPaddr2 \ ip=192.168.1.107 cidr_netmask=24 op monitor interval=10s
とりあえず、上の操作だけでVIPは設定できたみたい。 先に iSCSI ターゲットの設定を進める。
■ iSCSI ターゲットの設定
※ まず、storage となる仮想マシンに /dev/sdb 用のディスクを追加。
↑ 大きめにサイズとっとく。
[root@storage ~]# cat /proc/partitions major minor #blocks name 8 0 52428800 sda 8 1 1048576 sda1 8 2 51379200 sda2 8 16 52428800 sdb 11 0 1048575 sr0 253 0 49274880 dm-0 253 1 2097152 dm-1 [root@storage ~]# [root@storage ~]# [root@storage ~]#
以降は以下のページにしたがって設定開始。
http://ossfan.net/setup/linux-28.html
※ iqn の設定 ルールがあるので従おうと思ったが、適当。
=== ルール ===
iqn.yyyy-mm.naming-authority:unique-name iqn : 先頭は iqn の3文字で固定です yyyy-mm : ドメインを取得した年月です。ossfan.netを取得したのは2011年2月なので、2011-02 となります。 naming-authority : 取得したドメインを逆にした形です。ossfan.net は net.ossfan となります。 unique-name : ドメイン内で一意になる名前です。今回は storage1 としました。
=== ここまで ===
今回は、以下とします。 iqn.2019-01.jp.ne.sample.amegon:storage
以下は db-primary、db-secondary 用の iqn 設定。 iqn.2019-01.jp.ne.sample.amegon:db-primary iqn.2019-01.jp.ne.sample.amegon:db-secondary
以下で、iSCSIのログイン → ディスクマウント → フォーマットを実施
[root@db-primary ~]# cat /proc/partitions major minor #blocks name 11 0 1048575 sr0 8 0 8388608 sda 8 1 1048576 sda1 8 2 7339008 sda2 253 0 6496256 dm-0 253 1 839680 dm-1 [root@db-primary ~]# [root@db-primary ~]# [root@db-primary ~]# [root@db-primary ~]# iscsiadm -m discovery -t st -p 192.168.1.110:3260 192.168.1.110:3260,1 iqn.2019-01.jp.ne.sample.amegon:storage [root@db-primary ~]# [root@db-primary ~]# [root@db-primary ~]# iscsiadm -m node -T iqn.2019-01.jp.ne.sample.amegon:storage -p 192.168.1.110:3260 -l Logging in to [iface: default, target: iqn.2019-01.jp.ne.sample.amegon:storage, portal: 192.168.1.110,3260] (multiple) Login to [iface: default, target: iqn.2019-01.jp.ne.sample.amegon:storage, portal: 192.168.1.110,3260] successful. [root@db-primary ~]# [root@db-primary ~]# [root@db-primary ~]# cat /proc/partitions major minor #blocks name 11 0 1048575 sr0 8 0 8388608 sda 8 1 1048576 sda1 8 2 7339008 sda2 253 0 6496256 dm-0 253 1 839680 dm-1 8 16 52424704 sdb [root@db-primary ~]# [root@db-primary ~]# [root@db-primary ~]# [root@db-primary ~]# fdisk -l Disk /dev/sda: 8589 MB, 8589934592 bytes, 16777216 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト Disk label type: dos ディスク識別子: 0x000be007 デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 16777215 7339008 8e Linux LVM Disk /dev/mapper/centos-root: 6652 MB, 6652166144 bytes, 12992512 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト Disk /dev/mapper/centos-swap: 859 MB, 859832320 bytes, 1679360 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト Disk /dev/sdb: 53.7 GB, 53682896896 bytes, 104849408 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 33550336 バイト [root@db-primary ~]# [root@db-primary ~]# [root@db-primary ~]# parted --script /dev/sdb "mklabel msdos" [root@db-primary ~]# [root@db-primary ~]# parted --script /dev/sdb "mkpart primary 0% 100%" [root@db-primary ~]# [root@db-primary ~]# [root@db-primary ~]# mkfs -t xfs /dev/sdb mkfs.xfs: /dev/sdb appears to contain a partition table (dos). mkfs.xfs: Use the -f option to force overwrite. [root@db-primary ~]# [root@db-primary ~]# [root@db-primary ~]# mkfs.xfs -s size=4096 /dev/sdb1 meta-data=/dev/sdb1 isize=512 agcount=4, agsize=3274353 blks = sectsz=4096 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=13097409, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=6395, version=2 = sectsz=4096 sunit=1 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@db-primary ~]# [root@db-primary ~]# [root@db-primary ~]# [root@db-primary ~]# cat /proc/partitions major minor #blocks name 11 0 1048575 sr0 8 0 8388608 sda 8 1 1048576 sda1 8 2 7339008 sda2 253 0 6496256 dm-0 253 1 839680 dm-1 8 16 52424704 sdb 8 17 52389636 sdb1 [root@db-primary ~]#
メモ ■ ディスクのフォーマット (db-primary のみ)
fdisk -l parted --script /dev/sdb "mklabel msdos" parted --script /dev/sdb "mkpart primary 0% 100%" mkfs -t xfs /dev/sdb mkfs.xfs -s size=4096 /dev/sdb1
■ マウント
mount /dev/sdb1 /mnt/test/
umount /mnt/test/
iscsiadm --mode node --targetname iqn.2019-01.jp.ne.sample.amegon:storage --logout
iscsiadm --mode node --op delete --targetname iqn.2019-01.jp.ne.sample.amegon:storage
iscsiadm --mode discovery --op delete --portal 192.168.1.110
■ pacemaker 用のファイル設定 (db-primary、db-secondary ともに)
yum -y install wget cd /usr/lib/ocf/resource.d/heartbeat/ wget https://raw.githubusercontent.com/ClusterLabs/resource-agents/master/heartbeat/iscsi --no-check-certificate chmod +x iscsi
■ pacemaker 設定 (db-primary のみ)
pcs resource delete VIP pcs resource delete mysql-clone pcs resource create db-vip ocf:heartbeat:IPaddr2 \ ip=192.168.1.107 cidr_netmask=24 op monitor interval=10s \ --group resource-group pcs resource create db-shared_device ocf:heartbeat:iscsi \ portal="192.168.1.110:3260" \ target="iqn.2019-01.jp.ne.sample.amegon:storage" \ op start on-fail=block \ op stop on-fail=block \ op monitor on-fail=restart \ --group resource-group pcs resource create db-shared_mount ocf:heartbeat:Filesystem \ device="/dev/sdb1" \ directory="/var/lib/mysql" \ fstype="xfs" \ op start on-fail=block \ op stop on-fail=block \ op monitor on-fail=restart \ --group resource-group pcs resource create mariadb ocf:heartbeat:mysql pcs resource update mariadb log=/var/lib/mysql/error.log pcs resource group add db-cluster db-vip pcs resource group add db-cluster db-shared_device pcs resource group add db-cluster db-shared_mount pcs resource group add db-cluster mariadb
いろいろとありまして、以下のような構成で動かしています。
Lenovo Thinkpad L470 (Windows 10 Pro)
Oracle VirtualBox (Hyper-V あったけど、なぜか使用しませんでした。)
(あとでもう少していねいに書こう。。。)
各仮想マシンは以下のような感じ
こんにちは。 横浜でサラリーマンをしています。
ブログという名のメモ書きをただつらつらとしていきたいと思います。
特に、会社で必要になりそうな技術的なネタ中心のメモや自分用のメモ書きになると思います。
インターネットって基本どこからでも見れるし書けるしで便利ですね。
会社で使用しています。 会社で必要な知識を織り交ぜながら、自宅に環境を構築していきたいと思います。 。。。いや、作るところは一旦終わっているので、構成やら作り方やらメモを残していきたいと思っています。
では、ぼちぼちで。