gmt24

Debian LXC on Fedora 20

 article  Comments Off on Debian LXC on Fedora 20
Aug 162014
 

Debian wheezyをFedora 20上のContainerとして動かしてみました。

まずはrootファイルシステムとなるディレクトリを作成します。名前はdebian01としています。

[root@localhost ~]# mkdir -p /var/lib/libvirt/filesystems/debian01

debootstrapを入手して展開、実行します。
展開用にbinutilsに含まれるarコマンド、実行用にperlなどが必要になりますので、インストールします。

[root@localhost ~]# yum install binutils perl wget gnupg

debootstrap自体のインストール手順はD.3. Unix/Linux システムからの Debian GNU/Linux のインストール」の「D.3.2. debootstrap のインストール」を参照ください。
インストールしたdebootstrapを実行します。

[root@localhost ~]# /usr/sbin/debootstrap --arch amd64 stable /var/lib/libvirt/filesystems/debian01

Linux Containerとして起動します。

[root@localhost ~]# virt-install --connect lxc:// --name debian01 --ram 512 --filesystem /var/lib/libvirt/filesystems/debian01/,/

いったん止めます。

[root@localhost ~]# virsh -c lxc:// shutdown debian01

rootパスワードやコンソールログイン許可するttyデバイスを追加します。

[root@localhost ~]# chroot /var/lib/libvirt/filesystems/debian01 /bin/passwd root
[root@localhost ~]# echo "pts/0" >> /var/lib/libvirt/filesystems/debian01/etc/securetty

起動してコンソール接続します。

[root@localhost ~]# virsh -c lxc:// start --console debian01

これで先に設定したrootパスワードでコンソールログインできるはずです。

以下を参考にしました。
Launch secure LXC containers on Fedora 20 using SELinux and sVirt – major.io

CentOS 7 KVM guest on Fedora 20

 article  Comments Off on CentOS 7 KVM guest on Fedora 20
Aug 132014
 

Fedora 20にKVMゲストとしてCentOS 7をインストールしようとしたところ、768MBではメモリ不足になってしまいました。

[root@localhost ~]# virt-install --connect qemu:///system -n centos7 --memory 768 --disk /dev/vg00/centos7_root --graphics none -x 'console=tty0 console=ttyS0,115200n8 serial' -l http://mirror.centos.org/centos-7/7/os/x86_64/

“gzip invoked oom-killer”となって中断してしまいます。

[  OK  ] Started dracut initqueue hook.
         Starting dracut pre-mount hook...
[  OK  ] Started dracut pre-mount hook.
[  OK  ] Reached target Initrd Root File System.
         Starting Reload Configuration from the Real Root...
[  OK  ] Started Reload Configuration from the Real Root.
[  OK  ] Reached target Initrd File Systems.
         Starting dracut mount hook...
[   77.580372] EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: (null)
[  OK  ] Started dracut mount hook.
[  OK  ] Reached target Initrd Default Target.
[  100.166000] gzip invoked oom-killer: gfp_mask=0x200da, order=0, oom_score_adj=0
[  100.167946] gzip cpuset=/ mems_allowed=0
[  100.168981] CPU: 0 PID: 927 Comm: gzip Not tainted 3.10.0-123.el7.x86_64 #1
[  100.170716] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
[  100.172176]  ffff88002fad4fa0 00000000602dc3bc ffff8800123a3798 ffffffff815e19ba
[  100.174333]  ffff8800123a3828 ffffffff815dd02d ffffffff810b68f8 ffff88002f57d4b0
[  100.176493]  ffffffff00000202 ffffffff00000000 0000000000000000 ffffffff81102e03
[  100.178655] Call Trace:
[  100.179335]  [] dump_stack+0x19/0x1b
[  100.180646]  [] dump_header+0x8e/0x214

OOMですのでメモリ増やせば回避できます。

[root@localhost ~]# virt-install --connect qemu:///system -n centos7 --memory 1024 --disk /dev/vg00/centos7_root --graphics none -x 'console=tty0 console=ttyS0,115200n8 serial' -l http://mirror.centos.org/centos-7/7/os/x86_64/

にしても「1GBかー」と思ってたら公式にも必要メモリは最低1GBなのですね。
リリースノートの「第3章 能力および制限」にもちゃんと1GBと記載されていました。

CentOS 7のキーボードレイアウト変更

 article  Comments Off on CentOS 7のキーボードレイアウト変更
Jul 312014
 

Red Hat 7になって/etc/sysconfig/keyboardによる設定ではなくなりました。

仮想コンソールのキーボード設定はSystem Administrator’s Guideの1.2. Changing the Keyboard Layoutにあるように、localectlコマンドを使います。
今の設定を確認するにはstatusオプションを使います。

localectl status

指定可能なキーボードレイアウトはlist-keymapsオプションで確認できます。

localectl list-keymaps

例えばjp106キーボードに設定するにはset-keymapオプションを使って以下を実行します。

localectl set-keymap jp106

localectlコマンドで設定した結果は/etc/vconsole.confに保存されます(system-config-keyboardを使った場合も同様)。

ただ、この方法ですと物理コンソール(物理といってよいのかわかりませんが)のキーボードレイアウトは変わりません。
こちらは正確な情報が不明なのですが、kernelオプションで設定できるようなので、grub.cfgを変更してみました。
具体的には/etc/default/grubファイルのGRUB_CMDLINE_LINUXに指定されているvconsole.keymapを変更してgrub2-mkconfigを実行しています。

変更前

GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos/root crashkernel=auto  vconsole.keymap=us rhgb quiet"

変更後

GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos/root crashkernel=auto  vconsole.keymap=jp106 rhgb quiet"

そしてgrub2-mkconfig実行。

grub2-mkconfig -o /boot/grub2/grub.cfg

こうすることでkernelのコマンドラインオプションが変更され、初期の物理コンソールから指定したキーボードレイアウトを使用できるようになります。

ZabbixサーバーをHA化

 article  Comments Off on ZabbixサーバーをHA化
Jul 232014
 

CentOS 6.4で、repo.zabbix.comからzabbix-server-mysqlとzabbix-web-mysqlをインストールして稼働している状態から、PacemakerとDRBDを使ったHA化をおこなってみます。

まずはPacamakerの管理対象となるサービスを停止し、自動起動も無効化します。

for s in httpd zabbix-server mysqld; do
 service $s stop
 chkconfig $s off
done

クラスターパッケージ群を導入します。

yum install pacemaker cman pcs ccs resource-agents

DRBDはELrepoから導入します。

pcs property set stonith-enabled=false
pcs property set no-quorum-policy=ignore
pcs property set migration-threshold=1
pcs property set cluster-recheck-interval=5m

DRBDのリロース設定をおこないます。

pcs -f cfg-drbd resource create drbd0 ocf:linbit:drbd drbd_resource=r0
pcs -f cfg-drbd resource add_operation drbd0 start interval=0 timeout=240s
pcs -f cfg-drbd resource add_operation drbd0 promote interval=0 timeout=90s
pcs -f cfg-drbd resource add_operation drbd0 demote interval=0 timeout=90s
pcs -f cfg-drbd resource add_operation drbd0 noftify interval=0 timeout=90s
pcs -f cfg-drbd resource add_operation drbd0 stop interval=0 timeout=100s
pcs -f cfg-drbd resource add_operation drbd0 monitor interval=20s timeout=20s role=Slave
pcs -f cfg-drbd resource add_operation drbd0 monitor interval=10s timeout=20s role=Master
pcs -f cfg-drbd master drbd0-clone drbd0 master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
pcs push cfg-drbd

DRBD領域をマウントするファイルシステムリソース設定をおこないます(fs-data)。

pcs -f cfg-fs1 resource create fs-data Filesystem device=/dev/drbd/by-res/r0 directory=/data fstype=ext4 options=noatime
pcs -f cfg-fs1 resource add_operation fs-data start interval=0 timeout=60s
pcs -f cfg-fs1 resource add_operation fs-data stop interval=0 timeout=60s
pcs -f cfg-fs1 resource add_operation fs-data monitor interval=20s timeout=40s
pcs -f cfg-fs1 constraint colocation add fs-data drbd0-clone INFINITY with-rsc-role=Master
pcs -f cfg-fs1 constraint order promote drbd0-clone then start fs-data
pcs push cfg-fs1

MySQLデータベースをDRBD領域配下に移動します。

mv /var/lib/mysql /data/
mkdir /var/lib/mysql
chown mysql: /var/lib/mysql
chmod 755 /var/lib/mysql

MYSQLデータベース領域をマウントするファイルシステムリソース設定をおこないます(fs-mysql)。

pcs -f cfg-fs2 resource create fs-mysql Filesystem device=/data/mysql directory=/var/lib/mysql fstype=ext4 options=bind
pcs -f cfg-fs2 resource add_operation fs-mysql start interval=0 timeout=60s
pcs -f cfg-fs2 resource add_operation fs-mysql stop interval=0 timeout=60s
pcs -f cfg-fs2 resource add_operation fs-mysql monitor interval=20s timeout=40s

fs-dataとfs-mysqlリソースが同一ノードで動作するようにgroup設定を施したうえで反映させます。

pcs -f cfg-fs2 resource group add group0 fs-data fs-mysql
pcs push cfg-fs2

—–

pcs property set stonith-enabled=false
pcs property set no-quorum-policy=ignore
pcs property set migration-threshold=1
pcs property set cluster-recheck-interval=5m

Pacamakerの管理対象となるサービスを停止します。

for s in httpd zabbix-server mysqld; do
 service $s stop
 chkconfig $s off
done

DRBDのリロース設定をおこないます。

pcs -f cfg-drbd resource create drbd0 ocf:linbit:drbd drbd_resource=r0
pcs -f cfg-drbd resource add_operation drbd0 start interval=0 timeout=240s
pcs -f cfg-drbd resource add_operation drbd0 promote interval=0 timeout=90s
pcs -f cfg-drbd resource add_operation drbd0 demote interval=0 timeout=90s
pcs -f cfg-drbd resource add_operation drbd0 noftify interval=0 timeout=90s
pcs -f cfg-drbd resource add_operation drbd0 stop interval=0 timeout=100s
pcs -f cfg-drbd resource add_operation drbd0 monitor interval=20s timeout=20s role=Slave
pcs -f cfg-drbd resource add_operation drbd0 monitor interval=10s timeout=20s role=Master
pcs -f cfg-drbd master drbd0-clone drbd0 master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
pcs push cfg-drbd

DRBD領域をマウントするファイルシステムリソース設定をおこないます(fs-data)。

pcs -f cfg-fs1 resource create fs-data Filesystem device=/dev/drbd/by-res/r0 directory=/data fstype=ext4 options=noatime
pcs -f cfg-fs1 resource add_operation fs-data start interval=0 timeout=60s
pcs -f cfg-fs1 resource add_operation fs-data stop interval=0 timeout=60s
pcs -f cfg-fs1 resource add_operation fs-data monitor interval=20s timeout=40s
pcs -f cfg-fs1 constraint colocation add fs-data drbd0-clone INFINITY with-rsc-role=Master
pcs -f cfg-fs1 constraint order promote drbd0-clone then start fs-data
pcs push cfg-fs1

MySQLデータベースをDRBD領域配下に移動します。

mv /var/lib/mysql /data/
mkdir /var/lib/mysql
chown mysql: /var/lib/mysql
chmod 755 /var/lib/mysql

MYSQLデータベース領域をマウントするファイルシステムリソース設定をおこないます(fs-mysql)。

pcs -f cfg-fs2 resource create fs-mysql Filesystem device=/data/mysql directory=/var/lib/mysql fstype=ext4 options=bind
pcs -f cfg-fs2 resource add_operation fs-mysql start interval=0 timeout=60s
pcs -f cfg-fs2 resource add_operation fs-mysql stop interval=0 timeout=60s
pcs -f cfg-fs2 resource add_operation fs-mysql monitor interval=20s timeout=40s

fs-dataとfs-mysqlリソースが同一ノードで動作するようにgroup設定をおこないます。

pcs -f cfg-fs2 resource group add group0 fs-data fs-mysql
pcs push cfg-fs2

NetXMSお試し(1)

 article  Comments Off on NetXMSお試し(1)
Jan 062014
 

NetXMSという監視ツールを見つけまして試しに入れてみました。
スクリーンショットを見る限り洗練されていそうなのと、監視サーバーをWindowsで稼働させらるのも魅力的です。
OpenNMSもWindowsで稼働させることができますが、あちらはSNMPベースの監視が基本でエージェント監視方式ではありません。

タイトルに(1)と謳っていますが続編を書くかは未定です。

Debian用にはバイナリーパッケージが提供されていますので、そちらを利用します。
エージェントおよびサーバーは1台にまとめて稼働させます。

パッケージインストール

aptでインストールできるようsources.listを用意します。

# cat /etc/apt/sources.list.d/netxms.list
# NetXMS
deb http://www.netxms.org/apt squeeze main

エージェント用パッケージ、サーバー用パッケージを一式インストールします。

# apt-get update
# apt-get install netxms-base netxms-server netxms-agent

設定

エージェント用設定ファイルを用意します。

# cat /etc/nxagentd.conf
Servers = 127.0.0.1
ControlServers = 127.0.0.1
MasterServers = 127.0.0.1
LogFile = /var/log/netxms/nxagentd.log
FileStore = /var/lib/netxms/nxagentd

サーバー用設定ファイルを用意します。

# cat /etc/netxmsd.conf
DBDriver = sqlite.ddr
DBName   = /var/lib/netxms/sqlite.db
LogFile  = /var/log/netxms/netxmsd.log

ディレクトリおよびデータベース作成

ディレクトリを作成します。

# mkdir -p /var/log/netxms
# mkdir -p /var/lib/netxms/nxagentd

DBをSQLiteで作成します。

# nxdbmgr init /usr/share/netxms/sql/dbinit_sqlite.sql
# nxdbmgr check

起動

エージェントを起動します。

# systemctl start nxagentd.service

サーバーを起動します。

# systemctl start netxmsd.service

監視コンソールの起動

監視コンソールはWebアプリケーションで稼働するものとEclipseベースで稼働するものの2種類あります。
今回は手早くEclipseベースものをダウンロードページから入手して起動させます。Windows版の場合、圧縮ファイルを展開するとnxmc.exeというバイナリーがありますのでそちらを実行します。
起動するとサーバー名や認証方式を聞かれますので、
Server: netxmsdが起動しているサーバー(4701/tcpを使用します)
Login: admin
Authentication: Password
Password: netxms
を指定するとNetXMSサーバーに接続されます。

開始直後は監視項目はほとんど設定されていません。
Zabbixのように監視テンプレートが予め提供されているわけでもないようですので、ここから個々の監視項目を設定する必要がありそうです(テンプレート化は可能)。

virt-installでkvmゲストをインストール

 article  Comments Off on virt-installでkvmゲストをインストール
Jul 202013
 

かなり以前にvirt-installで仮想マシンをお手軽セットアップという記事を書きました。
前回はCentOS 5でxenゲストのインストールでしたが、今回はCentOS 6でkvmゲストです。

対話式でCentOSのインストーラーを起動する形式になりますのでコンソールが必要になりますが、グラフィカルな画面なしにシリアルコンソールを使ってインストールを実行します。

virt-install -n centos1 -r 512 --disk /var/lib/libvirt/images/centos1.img,size=8 --graphics none -x 'console=tty0 console=ttyS0,115200n8 serial' -l http://ftp.iij.ad.jp/pub/linux/centos/6/os/x86_64/

ちなみにシリアルコンソールを指定する-xオプション(–extra-args)を使用する場合、-lオプション(–location)が必須です。

インストーラーが起動されますので通常どおりインストールすれば完了。

/boot/grub/grub.confにもシリアルコンソールの設定が含まれるようになるので、次回起動時もシリアルコンソールを利用できます。

serial --unit=0 --speed=115200
terminal --timeout=5 serial console
title CentOS (2.6.32-358.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto console=ttyS0,115200n8 rd_LVM_LV=VolGroup/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM
        initrd /initramfs-2.6.32-358.el6.x86_64.img

接続時は

virsh console centos1

切断時は接続時のプロンプトに出るように ^] (Ctrl+^ Ctrl+])で抜けられます。

Zabbix server is not running: the information displayed may not be current

 article  Comments Off on Zabbix server is not running: the information displayed may not be current
Jul 162013
 

CentOS 6.4にrepo.zabbix.comからパッケージを導入して。
zabbix_serverプロセスは動いているし、10051ポートもLISTENしている。
/etc/zabbix/web/zabbix.conf.phpも間違いない。

$ZBX_SERVER                     = 'localhost';
$ZBX_SERVER_PORT                = '10051';

SELinux有効な環境下では(ちなみにtargetedポリシーを素のまま利用)

setsebool -P httpd_can_network_connect=true

を実施する必要があった。

Zabbix server is not running: the information displayed may not be current – ZABBIX Forums

Eclipse Gitでgithub.comにsshでPushできない

 article  Comments Off on Eclipse Gitでgithub.comにsshでPushできない
Jul 012013
 

Eclipseでgithub.comにPushしようと思ったら初回でエラーになりました。
メッセージダイアログを見ているとSSHのホスト鍵を受け入れるか否か(Yes/No)のところでエラーになっている模様です。

ssh://git@github.com:22: org.eclipse.jgit.transport.CredentialItem$YesNoType:  
The authenticity of host 'github.com' can't be established.

ここでYesを入力すればSSH接続が確立されてPushもできるようになるはずですが、入力ダイアログもYes/Noのボタンも出てこないので途方に暮れていたところ、Stack Overflowにもろ回答がありました。
egit – How to push a new project in Github from Eclipse? – Stack Overflow

Git Repository Exploringパースペクティブに切り替えて、Remotesを定義してやることできちんとPushできるようになりました。

Debian S/390 on Hercules

 article  Comments Off on Debian S/390 on Hercules
Jun 182013
 

Debian amd64 (wheezy)にHerculesを入れて動かしてみました。

手順はほぼ以下の記事のとおりになります。
Installing Debian under Hercules

変更点は

  • DASDは3390-9型(約8GB)をroot用に、3390(約900MB)をswap用に割り当て
  • インストーラーはs390x用を使用
  • IPアドレスは169.254.0.1と169.254.0.2を使用

したことぐらいです。ちなみに設定ファイルはこちら。

CPUSERIAL  000069        # CPU serial number
CPUMODEL   9672          # CPU model number
MAINSIZE   512           # Main storage size in megabytes
XPNDSIZE   0             # Expanded storage size in megabytes
CNSLPORT   3270          # TCP port number to which consoles connect
NUMCPU     1             # Number of CPUs
LOADPARM   0120....      # IPL parameter
OSTAILOR   LINUX         # OS tailoring
PANRATE    SLOW          # Panel refresh rate (SLOW, FAST)
ARCHMODE   ESAME         # Architecture mode ESA/390 or ESAME

# .-----------------------Device number
# |       .-----------------Device type
# |       |       .---------File name and parameters
# |       |       |
# V       V       V
#---      ----    --------------------
# console
001F      3270

# terminal
0009      3215

# reader
000C      3505    ./rdr/kernel.debian ./rdr/parmfile.debian ./rdr/initrd.debian autopad eof

# printer
000E      1403    ./prt/print00e.txt crlf

# dasd
0120      3390    ./dasd/LINUX.ROOT
0121      3390    ./dasd/LINUX.SWAP

# network                                 s390        realbox
0A00,0A01 CTCI    -n /dev/net/tun -t 1500 169.254.0.2 169.254.0.1

インストールは前述の手順のとおりですんなりいったのですが、リブートしてもsshできません。
コンソールからログインして確認してみると、ctc0がきちんとupしていないようです。

root@s390:~#
.ifconfig ctc0
ifconfig ctc0
ctc0      Link encap:Serial Line IP
          POINTOPOINT NOARP  MTU:32760  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

root@s390:~#

試しにifup ctc0をおこなってみると構文エラーがあるようです。

root@s390:~#
.ifup ctc0
ifup ctc0
/etc/network/interfaces:18: option with empty value
ifup: couldn't read interfaces file "/etc/network/interfaces"
root@s390:~#

18行目はdns-searchで、こちらの値が空は許されないようです。

root@s390:~#
.cat /etc/network/interfaces
cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto ctc0
iface ctc0 inet static
        address 169.254.0.2
        netmask 255.255.255.255
        network 0.0.0.0
        broadcast 255.255.255.255
        pointopoint 169.254.0.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 192.168.11.1
        dns-search
root@s390:~#

インストール時にDomain name指定を空にしたのが敗因のようです。
インストールし直すのも面倒なので、interfacesファイルからdns-searchの行を取り除いてしまいます。

root@s390:~#
.mv /etc/network/interfaces{,.orig}
mv /etc/network/interfaces{,.orig}
root@s390:~#
.grep -v dns-search /etc/network/interfaces.orig > /etc/network/interfaces
grep -v dns-search /etc/network/interfaces.orig > /etc/network/interfaces
root@s390:~#

すると無事ifupできるようになりました。

root@s390:~#
.ifup ctc0
ifup ctc0
   615.082310! net ctc0: Connected with remote side
root@s390:~#
.ifconfig ctc0
ifconfig ctc0
ctc0      Link encap:Serial Line IP
          inet addr:169.254.0.2  P-t-P:169.254.0.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP  MTU:32760  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

root@s390:~#

ping疎通ノードにMasterを強制

 article  Comments Off on ping疎通ノードにMasterを強制
May 302013
 

Master/Slaveセットのリソースにおいて、ネットワーク疎通がOKなノードのみがMasterになれるようにするために、以下に掲載されているlocation制約を設ける方法がありました。
DRBD HowTo 1.0 – ClusterLabs

上記はcrmコマンドで設定する手順なのですが、pcsコマンドでは同様のことを定義する方法がわかりません。
MLでも質問が出ていますが、明確な回答は出ていないようです。
pcs group colocation and ping rules | Linux-HA | Pacemaker

仕方ないので、crmコマンドで定義した際に生成される内容をXMLで用意して、直接cibadminで登録しています。

# cat location-ping.xml
<constraints>
  <rsc_location id="ms-drbd-0_master_on_connected_node" rsc="ms-drbd0">
    <rule boolean-op="or" id="ms-drbd-0_master_on_connected_node-rule" role="Master" score="-INFINITY">
      <expression attribute="pingd" id="ms-drbd-0_master_on_connected_node-expression" operation="not_defined"/>
      <expression attribute="pingd" id="ms-drbd-0_master_on_connected_node-expression-0" operation="lte" value="0"/>
    </rule>
  </rsc_location>
</constraints>
# cibadmin -U -x location-ping.xml
# pcs constraint all
Location Constraints:
  Resource: ms-drbd0
    Rule: pingd not_defined  (score:-INFINITY) (id:ms-drbd-0_master_on_connected_node)
    Rule: pingd lte 0 (score:-INFINITY) (id:ms-drbd-0_master_on_connected_node)
Ordering Constraints:
Colocation Constraints:
#