Hatena::ブログ(Diary)

kuroの覚え書き

[Vmax] [Macintosh/PC] [Network] [Make] [science] [Programing]

注:個人的覚え書きであり、いかなる内容も保証されるものではありません。
(ツッコミは歓迎しますが、全てに応えられるとも限りませんのであしからず。)

2018-09-22

[] Safari12でプラグインが使えなくなったときWEB認証のVPNをどうやって使うか

どうやらSafariがバージョンアップし、adobe flash player以外のプラグインがことごとく使用不能になったらしい。

そこで困ったのが大学のサーバへのVPN接続。

webからVPN接続のための認証を行っていたのに、mac_sslvpnが使えなくなって接続できなくなった。

そういえば接続が成立するとBIG-IPなんちゃら〜という表示が出ていたことを思い出し、WEBを検索。

スタンドアロンのVPNクライアントソフトウェア(接続ツール)というものがあるらしく、

一応App storeにも登録されたソフトウェアがあった。

https://itunes.apple.com/us/app/f5access/id1243219105?mt=12

これを起動し、Manage VPN Configurationsを開く。

いつもメールで送られてくる接続情報のリンクをサーバとして登録

ID・パスワードは都度変わるので空欄のままでよい

Connect to [作成した接続名]というところをクリックしてID・パスワードを入力。

無事接続。

2018-08-31

[][] NFSとNISがポートを取り合い

あるとき再起動したあと、NISクライアントがuserを受け付けてくれなくなり、ちょっと途方に暮れる。

NISサーバがどういうわけか起動していないので再起動してみたが、エラーが出て起動してくれない。

systemd[1]: Starting NIS/YP (Network Information Service) Server...
ypserv[3798]: ypserv: can not bind UDP: Address already in use
systemd[1]: ypserv.service: main process exited, code=exited, status=1/FAILURE
systemd[1]: Failed to start NIS/YP (Network Information Service) Server.
systemd[1]: Unit ypserv.service entered failed state.
systemd[1]: ypserv.service failed.

このように言われる。ypserv: can not bind UDP: Address already in useここが怪しいよな。

で、

# lsof -i
COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rpcbind    775     rpc    6u  IPv4   9606      0t0  UDP *:sunrpc 
rpcbind    775     rpc    7u  IPv4   9607      0t0  UDP *:944 
rpcbind    775     rpc    8u  IPv4   9608      0t0  TCP *:sunrpc (LISTEN)
rpcbind    775     rpc    9u  IPv6   9609      0t0  UDP *:sunrpc 
rpcbind    775     rpc   10u  IPv6   9610      0t0  UDP *:944 
rpcbind    775     rpc   11u  IPv6   9611      0t0  TCP *:sunrpc (LISTEN)
avahi-dae  796   avahi   12u  IPv4   8051      0t0  UDP *:mdns 
avahi-dae  796   avahi   13u  IPv4   8052      0t0  UDP *:40829 
chronyd    915  chrony    1u  IPv4  18064      0t0  UDP localhost:323 
chronyd    915  chrony    2u  IPv6  18065      0t0  UDP localhost:323 
flask     1286  rnaseq    3u  IPv4  37148      0t0  TCP mn-rx1330m3:commplex-main (LISTEN)
rpc.ypxfr 1288    root    4u  IPv4  25503      0t0  UDP *:945 
rpc.ypxfr 1288    root    5u  IPv4  25506      0t0  TCP *:945 (LISTEN)
sshd      1292    root    3u  IPv4  26903      0t0  TCP *:ssh (LISTEN)
sshd      1292    root    4u  IPv6  26905      0t0  TCP *:ssh (LISTEN)
cupsd     1297    root    9u  IPv6  21293      0t0  TCP localhost:ipp (LISTEN)
cupsd     1297    root   12u  IPv4  21294      0t0  TCP localhost:ipp (LISTEN)
(以下略)

なんかポート944と945がrpcbindで使われている。どうしてまたわざわざ競合するのだ。

NISはポートを変動させると聞いていたので

/etc/sysconfig/network

# Created by anaconda
NISDOMAIN=nis

YPSERV_ARGS="-p 944"
YPXFRD_ARGS="-p 945"

という感じに固定していたのだ。これをしないとfirewallを抜けれないので。

nfsの方はserviceとしてfirewallに設定しておけるので、変動しても構わないのに。

というわけで、一旦rpcbindをstopしてからypservをstartし、rpcbindをもう一度startしてやることで回避できた。

しかし、これはまた起こる可能性がある事象だし、どうにかならんのかな。

2018-08-29

[][]PXE bootでTeraStationが繋がらない

CentOS7でPXEサーバを立ててディスクレスブートを試しているのだが、どうにもNASのTeraStationがマウントできない。

マシンスペックが異なるがHDDでブートしているノードからはNFSで普通にマウントできているのだが。

どうしても

mount.nfs: timeout set for Wed Aug 29 13:10:35 2018
mount.nfs: trying text-based options 'vers=4.1,addr=192.168.0.100,clientaddr=192.168.0.10'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'vers=4.0,addr=192.168.0.100,clientaddr=192.168.0.10'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'addr=192.168.0.100'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 192.168.0.100 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 192.168.0.100 prog 100005 vers 3 prot UDP port 36182
mount.nfs: mount(2): Protocol not supported
mount.nfs: Protocol not supported

こんな感じにエラーが出る。

といってNFSが全く使えていないわけでもなく、/homeや /usr/localはヘッドノードのディレクトリをマウントできている。

何が違うかというと、ヘッドノードの方はvers=4.1ですんなりマウントできているところがTeraStationはどうやらversion3しか搭載していないようで、他のノードからもvers=3でマウントが成立している。

NFS ver3がPXEブートではだめなのかなということでSMB(CIFS)でのマウントを試すべく、

# yum install -y cifs-utils samba-client

と必要なものをインストールしてみるも

# mount -t cifs //192.168.0.100/home /mnt/nfs
Password for root@//192.168.0.100/home:  (no echo) 
mount error: cifs filesystem not supported by the system
mount error(19): No such device
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

と、こちらもcifsがサポートされていないとすげなくエラー。

cifsを別のノードにインストールして同じようにマウントをしてみるとちゃんとマウントされるので、やはりPXEブートだけの問題のようだ。カーネルのバージョンも同じなんだけど、普通にインストーラでインストールしたわけではないのでモジュール等がちゃんと入っていないんだろうかね。

なんか面倒くさくなってきたので、HDD入れて起動することにする。

2018-08-24

[][] PXEブートのまとめ

PRIMERGY RX200をネットワークブートでディスクレス運用するまとめ。

まず、クライアント側でPXEブートに使うネットワークポートを確認し、BIOSでPXE enableに設定する。PRIMERGYの場合デフォルトで1つのポートだけPXE対応に設定されているはず。(2つ両方とも対応はできる)

クライアント側の準備はひとまずこれだけ。

サーバ側ですることは

DHCPサーバとTFTPサーバをインストールして起動する

ポートを開放する

起動イメージとroot領域を用意する

の3点。


PXEサーバのアドレスを192.168.1.1

クライアントのアドレスは192.168.1.100以降をDHCPで取得とする


まずはtftpサーバのインストール、設定、起動

# yum -y install syslinux xinetd sftp-server

# mkdir /var/lib/tftpboot/pxelinux.cfg

# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

# nano /etc/xinetd.d/tftp

# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no                                      #yes→noに書き換え
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

# systemctl start xinetd

# systemctl enable xinetd



次にdhcpサーバのインストール、設定、起動

# yum -y install dhcp

# nano /etc/dhcp/dhcpd.conf


# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
option domain-name-servers      192.168.1.1;
default-lease-time 600;
max-lease-time 7200;
authoritative;
subnet 192.168.1.0 netmask 255.255.255.0 {
        range dynamic-bootp 192.168.1.100 192.168.1.254;
        option subnet-mask 255.255.255.0;
        option broadcast-address 192.168.1.255;
        option routers 192.168.1.1;
        option domain-name-servers 10.0.1.1;
        default-lease-time 600;
        max-lease-time 7200;
        filename "pxelinux.0";
        next-server 192.168.1.1;
}

# systemctl start dhcpd

# systemctl enable dhcpd


ポートを開ける

# firewall-cmd --add-service=dhcp --permanent

success

# firewall-cmd --reload

success


最後に起動イメージのインストールと諸々の設定

# yum -y install dracut-network nfs-utils

# mkdir -p /var/lib/tftpboot/centos7/root/

# yum groups -y install "minimal" --releasever=7 --installroot=/var/lib/tftpboot/centos7/root/


# python3 -c 'import crypt,getpass; print(crypt.crypt(getpass.getpass(), crypt.mksalt(crypt.METHOD_SHA512)))'

password:

と出るのでパスワードを入力すると

$6$Nt5Jxt9.........................

と長々とした文字が出るのでこれをコピーし、

# nano /var/lib/tftpboot/centos7/root/shadow

root:$6$Nt5Jxt9.........................:16372:0:99999:7:::

入力したパスワードでクライアントのrootにログインできる。


# wget -P /var/lib/tftpboot/centos7/ http://mirror.centos.org/centos/7/os/x86_64/images/pxeboot/vmlinuz http://mirror.centos.org/centos/7/os/x86_64/images/pxeboot/initrd.img

# nano /var/lib/tftpboot/pxelinux.cfg/default

default centos7

label centos7
    kernel centos7/vmlinuz
    append initrd=centos7/initrd.img root=nfs:192.168.1.1:/var/lib/tftpboot/centos7/root rw selinux=0

# nano /etc/exports

/var/lib/tftpboot/centos7/root 192.168.1.0/24(rw,no_root_squash)

# systemctl start rpcbind nfs-server

# systemctl enable rpcbind nfs-server

# nano /var/lib/tftpboot/centos7/root/etc/fstab

none    /tmp        tmpfs   defaults   0 0
tmpfs   /dev/shm    tmpfs   defaults   0 0
sysfs   /sys        sysfs   defaults   0 0
proc    /proc       proc    defaults   0 0

2018-07-21

[]XEON覚書

富士通 PRIMERGY RX200S6 xeon E56xx (Nehalem もしくはWestmere)

同世代のNEC→Expres5800/R120a-1 xeon E55xx, Expres5800/R120b-1 xeon E55xx, E56xx

富士通 PRIMERGY RX200S7 xeon E5-26xx (Sandy Bridge)

同世代のNEC→Expres5800/R120d-1 xeon E5-24xx, Expres5800/R120e-1 xeon E5-24xx,Expres5800/R120f-1 xeon E5-26xx

2018-07-14

[][] TORQUEつづき

どうもちゃんと動いていないような気がしてならないので、いろいろテストしてみる。

$ echo "sleep 30" | qsub -l nodes=1:ppn=8

こういうふうにジョブを投げると

$ qstat -t
Job ID                    Name             User            Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
97.HostA                  STDIN            rnaseq                 0 R batch

こんなふうに走る。

このコマンドを6個くらい連打すると

$ qstat -t
Job ID                    Name             User            Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
98.HostA                  STDIN            rnaseq                 0 R batch          
99.HostA                  STDIN            rnaseq                 0 R batch          
100.HostA                 STDIN            rnaseq                 0 R batch          
101.HostA                 STDIN            rnaseq                 0 R batch          
102.HostA                 STDIN            rnaseq                 0 R batch          
103.HostA                 STDIN            rnaseq                 0 Q batch 

このように5ジョブがR、1ジョブがQとなった。

-l nodes=1:ppn=8

としているので1ジョブで1ノードの8CPUを専有しているため、8/16/16の3ノードで5ジョブが走ったわけだ。

つまりちゃんとジョブ管理できているね。

$ echo "sleep 30" | qsub -l nodes=2:ppn=16

こんなふうに投げると2ノードを専有するため1ジョブしか走れなくなり

$ qstat -t
Job ID                    Name             User            Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
107.HostA                 STDIN            rnaseq                 0 R batch          
108.HostA                 STDIN            rnaseq                 0 Q batch

こうなる。

先日の動作試験ではHostAでしか動作しなかったのだが、スクリプトの書き方に問題があったのかもしれない。


TORQUEの場合、どうもどのノードで処理するかの指定が効かないし、実際にどのノードで走っているのかはわからないようだ。今のシステムのように計算ノードでCPUの種類や構成が違っている場合、指定ができたほうが割り振りが効率的にできそうな気もするのだが。

2018-07-12

[][] TORQUEとopenMPIをインストール

TORQUEのインストールは以前やった通り。3ノードがstatus: freeで認識された。

せっかくなのでmpiも入れてベンチマークなどもしてみたいのだが。

# yum install -y openmpi openmpi-devel

すべてのノードにインストール

使用するユーザ(root以外)についてPATHを足しておく。

export PATH=$PATH:/usr/lib64/openmpi/bin

インストール自体は簡単に終了したが、使い方が今ひとつわからない。

TORQUEのほうもqsubでアレイジョブを投げて見てもどうやらヘッドノードにしかジョブが割り振られない。なにかおかしいな。

2018-07-11

[]WOLの設定/NFSでマウントしたままシャットダウンしようとすると固まる

使用しないときの計算ノードを止めておこうと思う。かといって計算するときにわざわざサーバルームまで行くのは面倒だし、遠隔地から作業できないし、ということでwake on LANを試してみる。

起こしたいサーバに

# yum install ethtool

とソフトウェアをいれ(今回はすでに入っていた)

# ethtool -s ens1f0 wol g

と起動

# nano /etc/sysconfig/network-scripts/ifcfg-ens1f0

ETHTOOL_OPTS="wol g"

と追記しておけばそれだけでOK

LANにつながっているポートのMACアドレスを

# ip addr

で確認して

ヘッドノードから

$ ether-wake <MACアドレス>

としてやると無事に起きてくることを確認。

さて、一旦計算ノードをシャットダウンしようとして、いっこうに電源が落ちず、やむなく強制終了してしまったのだが、どうも原因はNFSにあるようだ。NFSでマウントしたディスクをきちんとアンマウントする前にネットが切断されてしまうことでアンマウントができず、シャットダウンもできないということになっている模様。シャットダウンシーケンスで、まず確実にアンマウントされるとこを確認すればよいのだが、具体的にどうすべきかわからないので、とにかくまずrootでumount -a として一通りアンマウントしてから、shutdown -h nowすれば良さそうだ。

あと、起動時にNFSで/homeと/usr/localをマウントしているのだが、/homeだけ自動でマウントしてくれない。正しくアンマウントできなかったことにリンクしているのかもしれない。これも面倒だけど起動時に一旦rootでログインしてmount -aをやってやることで、とりあえずは問題はないのだが。

wol起動スクリプト

#!/bin/sh
ether-wake <MACアドレス>

同様にシャットダウンスクリプトも

#!/bin/sh
ssh root@<ip addr> umount -a
ssh root@<ip addr> shutdown -h now

こうしとくか?


追記

起動時にNFSのマウントに失敗する

https://qa.atmarkit.co.jp/q/380

解決策1:bgオプションを入れる

解決策2:クライアントの/etc/init.d/netfsにsleep 1などwaitを入れる。

2018-07-10

[]NFS/NISによるユーザの共通化

ディスクレスについてはまだちょっとハードルが高いので、とりあえず各サーバにRAID1でディスクを配置してシステムをインストールした。そのままではそれぞれのサーバにソフトウェアをインストールしたり使い勝手がイマイチなのでNFSでヘッドノードのディレクトリをマウントし、NISでユーザを一元管理することにした。

NISの設定方法は

https://www.server-world.info/query?os=CentOS_7&p=nis&f=1

こちらを参照。

これでようやく3台のサーバの20コア40スレッドが同じユーザの同じディレクトリで使えるようになったわけだ。

また普段、特に計算をバリバリさせていないときは2台は電源を落としておいて問題ないのでいろいろ都合が良いね。

次はTorqueのインストールだな。まあユーザーはほぼ私一人なんでジョブ管理は自分で個別にやってもいいんだけど。あっちこっちログインするのはややこしくて面倒だしな。

[][] php MARIADB phpmyadminのインストール

前にもやったが、記憶が曖昧になっているため、整理。

まずはphpのインストールから。

# yum install epel-release
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# yum install --enablerepo=remi,remi-php70 php php-mbstring php-devel php-pdo php-gd php-mysqlnd

# nano /etc/php.ini

;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

date.timezone = "Asia/Tokyo"
[mbstring]
; language for internal character representation.
; This affects mb_send_mail() and mbstring.detect_order.
; http://php.net/mbstring.language
mbstring.language = Japanese

; Use of this INI entry is deprecated, use global internal_encoding instead.
; internal/script encoding.
; Some encoding cannot work as internal encoding. (e.g. SJIS, BIG5, ISO-2022-*)
; If empty, default_charset or internal_encoding or iconv.internal_encoding is $
; The precedence is: default_charset < internal_encoding < iconv.internal_encod$
mbstring.internal_encoding = UTF-8

; Use of this INI entry is deprecated, use global input_encoding instead.
; http input encoding.
; mbstring.encoding_traslation = On is needed to use this setting.
; If empty, default_charset or input_encoding or mbstring.input is used.
; The precedence is: default_charset < intput_encoding < mbsting.http_input
; http://php.net/mbstring.http-input
mbstring.http_input = pass

; Use of this INI entry is deprecated, use global output_encoding instead.
; http output encoding.
; mb_output_handler must be registered as output buffer to function.
; If empty, default_charset or output_encoding or mbstring.http_output is used.
; The precedence is: default_charset < output_encoding < mbstring.http_output
; To use an output encoding conversion, mbstring's output handler must be set
; otherwise output encoding conversion cannot be performed.
; http://php.net/mbstring.http-output
mbstring.http_output = pass

; enable automatic encoding translation according to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
;       portable libs/applications.
; http://php.net/mbstring.encoding-translation
mbstring.encoding_translation = Off

; automatic encoding detection order.
; "auto" detect order is changed according to mbstring.language
; http://php.net/mbstring.detect-order
mbstring.detect_order = auto

; substitute_character used when character cannot be converted
; one from another
; http://php.net/mbstring.substitute-character
mbstring.substitute_character = none;

; overload(replace) single byte functions by mbstring functions.
; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
; etc. Possible values are 0,1,2,4 or combination of them.
; For example, 7 for overload everything.
; 0: No overload
; 1: Overload mail() function
; 2: Overload str*() functions
; 4: Overload ereg*() functions
; http://php.net/mbstring.func-overload
mbstring.func_overload = 0

; enable strict encoding detection.
; Default: Off
mbstring.strict_detection = Off

; This directive specifies the regex pattern of content types for which mb_outp$
; is activated.
; Default: mbstring.http_output_conv_mimetype=^(text/|application/xhtml\+xml)
mbstring.http_output_conv_mimetype=
# systemctl restart httpd

続いてMARIADBのインストール

# yum install mariadb mariadb-server
# systemctl start mariadb.service
# systemctl enable mariadb.service

# nano /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
character-set-server=utf8

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
# mysql_secure_installation

rootのパスワードを作成しておくのと、あとの質問はすべてデフォルトで(Y)

# /usr/bin/mysql -u root -p

パスは通しておいたほうが良い。起動できることを確認

最後にphpmyadminのインストール

# wget https://files.phpmyadmin.net/phpMyAdmin/4.8.2/phpMyAdmin-4.8.2-all-languages.zip
# unzip phpMyAdmin-4.8.2-all-languages.zip
# mv phpMyAdmin-4.8.2-all-languages /var/www/html/phpmyadmin
# chown -R apache /var/www/html/phpmyadmin

これでIPアドレス/phpmyadminにアクセスすればOK

2018-07-09

[]AirMac extremeのtime capsuleをCentos7にマウントする

sudo mount.cifs //192.168.xxx.xxx/<Disk名> ~/airmac(マウントポイント) -o sec=ntlm,password=xxxxxxxxxxx

これでマウントOK

[]ディスクレスブート再び

ヘッドノードも入ったことだし、古いサーバーはディスクレスにしてやることで安定動作&消費電力の節約を図りたい。流石に5年以上使ったSASの15krpmディスクなんていつ壊れてもおかしくないので。実際1個壊れかけていたし。

ということでヘッドノードにdhcpd, tftpd, nfsdを立ててPXEディスクレスブートを目指す。

これまでに2台のうち1台ディスクレスという構成では試していた。今回も同じように設定していって、ディスクレスブートできるところまでは確認した。しかし、2台をディスクレスにして起動させてみたところ2台が同じ領域に書き込みをすることになってどうやらまずいらしい。さて、クライアントを複数立てるにはどうしたらいいんだろうか?

http://d.hatena.ne.jp/adsaria/20080129

ここにヒントはありそうな感じ。