CUBE SUGAR CONTAINER

技術系のこと書きます。

CentOS7

CentOS7 で不要になった古いカーネルを削除する

CentOS7 のカーネルは定期的にアップデートされるけど、何もしないとアップデート後も古いカーネルはそのままディスク上に残っている。 古いカーネルが残ること自体は、新しいカーネルで何か問題があったときに古いバージョンに戻すことができるのでむしろ良…

Galera Cluster の書き込みノードはひとつに制限した方が良さそう

Galera Cluster は MySQL/MariaDB をマルチマスタ構成で冗長化するためのアプリケーション。 マルチマスタなので、本来はどのノードに対しても書き込みを行うことができる。 ただ、後述する理由からどうやら書き込みに使うノードはひとつに制限した方が良さ…

インターネットと疎通がないマシンに Python パッケージをインストールする

たまにインターネットと疎通がないマシンをデプロイしなきゃいけないこともあると思う。 今回は、そんな時にどうやって Python のパッケージを対象ホストにインストールすればいいかについて書く。 要約を先に書いておくと、まず OS のパッケージシステムを…

sudo 時に root のパスワードを使う

sudo は一般ユーザが一時的に root 権限を得るためのコマンドだけど、デフォルトでは実行したユーザのパスワードを要求する場合がある。 ただ、実際には root のパスワードを要求させたいシチュエーションも多くありそう。 今回はそれを実現する方法を試して…

Ansible: Dynamic Inventory を使ってみる

通常の Inventory は ini 形式を拡張したテキストファイルで、中には Ansible で管理したいホストと変数の情報が書き込まれている。 しかし、これだとホストの台数や名前などが動的に変化するシチュエーションでメンテナンスが難しい。 あとは、ホストの情報…

Python: mod_wsgi のログを rsyslog と logrotate でローテーションする

今回は mod_wsgi で動作させた WSGI アプリケーションのログを syslog で飛ばして、それを rsyslog で受信して logrotate でローテーションさせてみる。 尚、Apache httpd 本体のログを syslog で飛ばす方法は以下を参照のこと。 blog.amedama.jp 検証用の環…

Apache httpd のログを rsyslog と logrotate でローテーションする

今回は Apache httpd のログを syslog 経由で rsyslog に送った上で、そのログを logrotate でローテーションさせてみる。 このやり方であればログをローテートする際に httpd を再起動する必要がないためサービス停止が発生しない。 環境には CentOS7 を使…

CentOS7 に後から GUI (X Window System) を追加する

CentOS7 を Minimal なんかでインストールした後にやっぱり GUI が欲しくなることもある。 デスクトップ環境が欲しい場合 デスクトップ環境が必要な場合は yum groupinstall で "GNOME Desktop" をインストールする。 $ sudo yum -y groupinstall "GNOME Des…

Ansible: notify と handlers の使い方について調べた

今回は Ansible の Playbook で使える notify と handlers の使い方について調べてみる。 このふたつはペアになっていて、タスクに notify を書いておくと、そのタスクで状態に変更があった場合にそれと対応する handlers が実行される仕組みになっている。 …

インターネットと疎通がないマシンに yum で RPM をインストールする

たまにインターネットとは直接疎通のないマシンをデプロイしなきゃいけないことがあるんだけど、今回はそんなときどうすれば yum で RPM をインストールできるかというお話。 検証環境には CentOS7 を使った。 基本的には CentOS6 でも動作するはず。 $ cat …

MariaDB のデータを mysqldump でバックアップ・リストアする

MySQL (MariaDB) のデータをバックアップ・リストアする方法には色々なやり方があるみたい。 今回は、その中でも最もオーソドックスな mysqldump を使う方法を試してみる。 また、mysqldump はその時点でのデータベースの内容を全て書き出すフルバックアップ…

MariaDB Galera Cluster - Known Limitations について調べた

MariaDB Galera Cluster は MariaDB を同期レプリケーション型のマルチマスタ構成で冗長化するためのアプリケーションだ。 マスタ・スレーブ構成のようにフォールバック用のスクリプトを自分で用意する必要もないし、マルチマスタ構成なのでクラスタを構成す…

Docker v1.8 から RHEL/CentOS6 はサポート外になった

表題の通り Docker バージョン 1.8 から RHEL/CentOS6 はサポート外になった。 今後は Docker を使いたい場合 RHEL/CentOS7 を使う必要がある。 もうちょっと詳しく調べてみる 以下のチケットが Docker バージョン 1.8 のリリースされるちょっと前に話題にな…

rsync で効率的にファイルを同期する

rsync はファイルを別のディレクトリやリモートのホストと同期させるためのプログラムだ。 例えば rsync の代わりに cp コマンドを使った場合、宛先の状態に関わらず全てのファイルがコピーされてしまう。 それに対し rsync では、宛先の状態を確認して異な…

RCS (Revision Control System) を使ってファイルをバージョン管理する

RCS (Revision Control System) は大昔に使われていたバージョン管理システムだ。 21 世紀にもなって何で RCS なんかとも思うんだけど、恐竜が生きていた頃に作られたシステムの中には今でもファイルを RCS で管理しているものももしかすると残っていたりす…

sysbench を使って MySQL をベンチマークする

MySQL の設定や構成またはバージョンの違いによるパフォーマンスの変化を調べるにはベンチマークツールが必要になる。 今回は sysbench というツールを使って MySQL のパフォーマンスを測ってみよう。 検証環境には CentOS7 を使った。 $ cat /etc/redhat-re…

MariaDB Galera Cluster を CentOS7 で使ってみる

MySQL (MariaDB) の冗長化には Master-Slave 構成を組んだり MySQL Cluster を使ったりと色々ある。 その中で Galera Cluster は同期レプリケーションを用いたマルチマスタ型のクラスタが組むやり方だ。 今回はこの MariaDB Galera Cluster を CentOS7 で組…

HAProxy のログを rsyslog と logrotate でローテーションする

今回は RDB サーバや HTTP サーバを冗長化する際にロードバランサと共に用いられることが多い HAProxy のログを rsyslog と logrotate を使ってローテーションする際の設定について書く。 検証用の環境には CentOS7 を使った。 $ cat /etc/redhat-release Ce…

keepalived のログを rsyslog と logrotate でローテーションする

今回はホストの冗長化するのに使う keepalived のログを rsyslog と logrotate を使ってローテーションさせる方法について書く。 検証環境には CentOS7 を使った。 $ cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core) $ uname -r 3.10.0-229.1…

xinetd を使ってホストの状態を監視する

xinetd はスーパーサーバと呼ばれるプログラムで、あるポートに対してアクセスがあった際に設定ファイルを元にして特定のサービスを起動することができる。 以前はプログラムを常駐させないことでメモリの節約などに使うことが主な用途だったようだが、メモ…

ログローテーション機能のないプログラムのログを logrotate でローテートする

ログローテーションを実現するには二つのやり方がある。 一つ目はログを出力するアプリケーション側でローテーションの機能を作りこむやり方で、もう一つは今回扱う logrotate のように別のプログラムを使うやり方だ。 今回は Python で書かれたログローテー…

Python: mod_wsgi の組み込みモードとデーモンモードについて

Python で Web アプリケーションを開発する場合、WSGI という仕様に沿った形で作られているとアプリケーションのポータビリティが向上する。 WSGI の仕様に沿っているアプリケーションは、異なる実装の WSGI サーバであっても動作させることができるためだ。…