読者です 読者をやめる 読者になる 読者になる

systemd を利用した mariadb galera cluster first node の起動の仕方

Getting Started with MariaDB Galera Cluster - MariaDB Knowledge Baseには、

On newer operating system using systemd, boostrap is done using the script galera_new_cluster.

と書いてある。

cat /usr/bin/galera_new_cluster
#!/bin/sh

# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.

VERSION="10.1.14"
COMPILATION_COMMENT="MariaDB Server"

systemctl set-environment _WSREP_NEW_CLUSTER='--wsrep-new-cluster' && \
    systemctl start ${1:-mariadb}

systemctl set-environment _WSREP_NEW_CLUSTER=''

mariadb gelera cluster 関連メモ

wsrep_sst_rsync でエラーが出る

 6月 29 16:35:09 mariadb2 mysqld[1654]: 2016-06-29 16:35:09 140587206440704 [ERROR] WSREP: Process completed with error: wsrep_sst_rsync --role 'joiner' --address '10.1.100.2' --datadir '/var/lib/mysql/'   --parent '1654'  '
 : 2 (No such file or directory)'

centos7 に which コマンドが入ってなかった。

yum install -y which

maxscale で master が選出されない

[root@db-proxy ~]#  maxadmin -p mariadb list  servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server             | Address         | Port  | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
server1            | 10.1.100.1      |  3306 |           0 | Running
server2            | 10.1.100.2      |  3306 |           0 | Running
server3            | 10.1.100.3      |  3306 |           0 | Running
-------------------+-----------------+-------+-------------+--------------------

ログには下記のように出ている。

2016-06-29 18:17:14   error  : Couldn't find suitable Master from 3 candidates.

設定ファイルの Monitor 部分のモジュール指定を "galeramon" に変更すると master が選出された。

[MySQL Monitor]
type=monitor
module=galeramon

nova get-password コマンドを活用する

みなさんは "nova get-password" コマンドを知っていますでしょうか。

僕は OpenStack 初心者なので、先日はじめて知りました。 公式のドキュメントを見ると、下記のように書かれています。

usage: nova get-password [<private-key>]

Get the admin password for a server.

なるほど、ユーザーパスワードを知ることが出来るのか! そう思って作成したインスタンスに "nova get-password" コマンドを使っても何も表示されません。

ということで詳しく調べてみました。

nova get-password の実行前に...

nova get-password は実は下記のような順序で動作をします。

  1. 対象のインスタンスの metadata からパスワードを取得
  2. コマンドにインスタンスのキーペアの秘密鍵が指定されていれば、平文で表示。そうでなければ暗号のまま表示

1 の metadata からパスワードを取得するためには、"nova get-password" の実行前に下記のようなアクションを起こす必要があります。

  1. インスタンス内部にて metadata から SSH 公開鍵を取得
  2. インスタンス内部から metadata の password へ 1.で取得した公開鍵を利用して暗号化したパスワードを HTTP POST する

... そもそも、metadata ってなんぞや。

metadata

OpenStack には至る所に Meta なデータが登場しますが、ここでの "metadata" とは nova のインスタンスの metadata です。

nova ではインスタンス内部で利用できる情報を metadata として提供します。例えば、以下の様な情報をインスタンス内部から取得できるのです。

このような仕組みは AWS でもあるみたいですね!(当たり前ですね!)

では、どうやってインスタンス内部から metadata を取得するのでしょうか。 方法としては簡単です。下記のように特定の URL にアクセスするだけです。

curl http://169.254.169.254/latest/meta-data

f:id:ryouta768:20160618210451p:plain

パスワードを POST する

ということで、実際にインスタンス内部から metadata を利用してパスワードを POST するのが以下のスクリプトです。 Script for setting an encrypted password on bootを fork して一部変更しました。

Script for setting an encrypted password on boot

nova get-password!

先ほどのスクリプトインスタンス内部で実行後, "nova get-password" を試します。

# 秘密鍵指定なし
$ nova get-password test
n6T7b1oKzBFP/qI/zAo6GollVrwP4HCYa9eRqGl7e7L5zo4W6gjFB+hxXGBPW7xqy54lM+3HIjYZ+heYaP0sDkDKFpn+h/S79ABeSeHYABXM972w8MJGeG7offzlicJPDxzQFnnt6r220GCaclsb/cwhHyU+Ff8M1uNyfo2W57aVWKqB5NzWda7X8OOrbaz1wa/ef6HtI8HWkRb0vgBbGQHlH7x2pj2oj5vKiD5Xx7vk7y+Nwauq0ViiLOxAc2LY0D5GU9oE1SBLz2ICcyYOqcmvDNB2WhV4Z8mqqZ+hokyCN/HB/r2H8F+STepVvfXKwytSTVl9/2rNiQxzQZvMzQ==
# 秘密鍵指定あり
$ nova get-password test test.pem
X2zNqigFoAScqT1N

やったぜ!

参考にした URL

CentOS7 へ Jenkins インストール

下記を簡単に試してみたメモ。

CentOS7へのJenkinsのインストール手順

インストール

java のインストール

# yum update
# yum install java-1.8.0-openjdk

RedHat Linux 向け Jenkins リポジトリの追加

# wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
# rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key

wget が無かったので、インストール

# yum install wget

Jenkins のインストール

# yum install jenkins
# chkconfig jenkins on

firewalld の設定

root@localhost ~]# firewall-cmd --list-all
public (default, active)
    interfaces: ens18
    sources:
    services: dhcpv6-client ssh
    ports:
    masquerade: no
    forward-ports:
    icmp-blocks:
    rich rules:

jenkins のデフォルトポートが開いていないので、開けます。

# firewall-cmd --add-port=8080/tcp --zone=public --permanent

Administrator password の入力

8080 にアクセスすると、"Unlock Jenkins" という画面が出てくるので、"/var/lib/jenkins/secrets/initialAdminPassword"にあるパスワードを入力する

plugin のインストール

おすすめ plugin をインストール

First Admin User 作成

admin user 作成

終わり。

本当は、pluginインストール, user 作成を自動化したい。

Ansible 化

jenkins role

ugokunodaroka

RouterBoard を救う

OpenWRT を入れた RouterBoard RB750GL に設定をしくじって接続出来なくなってしまった!

コンソールもないし、どうしようと困っていたところ、REST ボタンを押しながら port1 からのパケットを見ると BOOTP が!

調べてみると、Netinstall という ツールを使うことで RouterOS をインストールすることが出来るそう。やったぜ。

下記ページを参考にしながらスムーズに RouterOS のインストールが完了した。これでまた、OpenWRT がインストール出来る!やったね。

参考ページ

追伸

もう使えなくなったッと思って、何故か RTX1200 をポチったのは内緒。

python-keystoneclient を python2.6 で

以下のエラーが出た。

[twhs@twhs-iMac pyhon26(keystone_admin)]$ keystone token-get
Traceback (most recent call last):
  File "/home/twhs/swift-test/pyhon26/bin/keystone", line 7, in <module>
    from keystoneclient.shell import main
  File "/home/twhs/swift-test/pyhon26/lib/python2.6/site-packages/keystoneclient/shell.py", line 32, in <module>
    from keystoneclient.contrib.bootstrap import shell as shell_bootstrap
  File "/home/twhs/swift-test/pyhon26/lib/python2.6/site-packages/keystoneclient/contrib/bootstrap/shell.py", line 14, in <module>
    from keystoneclient.v2_0 import client
  File "/home/twhs/swift-test/pyhon26/lib/python2.6/site-packages/keystoneclient/v2_0/__init__.py", line 1, in <module>
    from keystoneclient.v2_0.client import Client  # noqa
  File "/home/twhs/swift-test/pyhon26/lib/python2.6/site-packages/keystoneclient/v2_0/client.py", line 19, in <module>
    from keystoneclient.auth.identity import v2 as v2_auth
  File "/home/twhs/swift-test/pyhon26/lib/python2.6/site-packages/keystoneclient/auth/__init__.py", line 16, in <module>
    from keystoneclient.auth.conf import *  # noqa
  File "/home/twhs/swift-test/pyhon26/lib/python2.6/site-packages/keystoneclient/auth/conf.py", line 13, in <module>
    from oslo_config import cfg
  File "/home/twhs/swift-test/pyhon26/lib/python2.6/site-packages/oslo_config/cfg.py", line 634, in <module>
    @functools.total_ordering
AttributeError: 'module' object has no attribute 'total_ordering'

結果として、"oslo_config" のバージョンが最新で、python2.6をサポートしていなかった。

3.1.0 の CHANGES に python2.6 のサポートを DROP したとある。

Drop python 2.6 support

pip で oslo_config のバージョンを 3.1.0 未満にしてコマンドは実行できるようになった。

Raspbian で HDMI モニターの電源をON/OFF

以下のコマンドでON/OFF出来る。

# 電源OFF
$ sudo /opt/vc/bin/tvservice -o
# 電源ON
$ sudo /opt/vc/bin/tvservice -p