2017年4月29日土曜日

Job Arranger외부I/F jobarg_exec

Job Arranager의 jobnet을 외부에서 실행하는 방법이 없을까? 어떻게 하면 될지를 모르는 분을이 있습니다. 저번에 쓴 Job Arranger에서 ESXi의 사상호스트 자동 실행 https://naiggy.blogspot.jp/2017/04/job-arranger-esxi.html
을 어떻게 하면 Zabbix에서 실행을 시킬수 있는지 알아보도록 하겠습니다.

Job Arrnager의 Jobnet은 외부에서 실행시키는 것이 가능합니다.
명령어로는 jobarg_exec을 사용합니다.
Shell script에서 실행하는 경우에는
jobarg_exec -z 192.168.137.138 -U Admin -P zabbix -j JOBNET_9
써 넣습니다.
명령어의 자세한 내용은 일보어입니다만
https://www.jobarranger.info/jaz/operation-manual_3.2/10external-exec.html

를 참조해 주시길 바라겠습니다.

저의 경우를 설명드리면
-z은 Job Arranger의 호스트 IP입니다.
-U은 JOBNET를 작성한 유져입니다.
-P은 유져의 패스워드입니다.
-j은 실행할 JOBNET ID입니다.

이것을 실행하면
[root@localhost ~]# jobarg_exec -z 192.168.137.138 -U Admin -P zabbix -j JOBNET_9
jobarg_exec [2413]: Registry number :  [1600000000000000001]
[root@localhost ~]#

가상호스트가 실행되는 것이 확인이 가능하실 것입니다.

이상입니다.

Job Arranger에서 ESXi의 가상호스트 자동 실행

Zabbix에서 작동하고 있는지 감시하는 가상호스트가 만약에 정지해있다면, 가상호스트를 기동하지 않으면 안될 것입니다.  기동하는 방법으로는 vSphere에 로그인해서 파워온을 하거나? ESXi에 ssh접속해서 기동하지 않으면 안됩니다.
어떻게 하면 run boot같이 자동으로 호스트를 기동할수 있을까 생각해 보았습니다.
그래서, 알아낸것이 Job Arranger를 이용한 자동 실행이었습니다.
그방법을 여러분들께 소개해 보도록 하겠습니다.
Job Arrnager는 C로 만들어져서 Linux환경에 적합하다고 생각됩니다.

1.ESXi에 Job Arranger Agent를 인스톨

ESXi에는 rpm 명령어가 없어서 rpm으로 인스톨할수 없습니다. 그래서 RPM을 압축해제 하기위해 해제가 가능한 서버에서 jobarranger-agentd-3.2.0-1.el6.x86_64.rpm을 Download받어서 rpm2cpio jobarranger-agentd-3.2.0-1.el6.x86_64.rpm | cpio -idv
명령어로 압축을 해제를 합니다.
압축 해제하면 etc, usr, var라고 하는 폴더가 보일 것입니다. 그것을 하나의 zip파일로 만듭니다. ESXi호스트에  접속을 해서 /vmfs/volumes/datastore1 밑에 job 폴더를 작성합니다. 작성한 job폴더에 zip파일을 넣고 해동합니다.

참고1: ESXi 서버는 reboot를 하면 모든것이 새로 작성됩니다만, /vmfs/volumes/datastore*밑은 새로 넣지 않기때문에 임의적인 install은 여기에 넣는 것이 좋습니다.
참고2: job폴더는 여러분들의 환경에 맞게 변경하셔도 됩니다.

2.jobarg_agentd.conf파일 수정

해동한 zip파일안에서 jobarg_agentd.conf를 수정합니다.
저의 경우는
/vmfs/volumes/datastore1/job/etc/jobarranger에 있으므로 이것을 수정하겠습니다.
vi jobarg_agentd.conf

Hostname=esxi6
JaExtjobPath=/vmfs/volumes/datastore1/job/etc/jobarranger/extendedjob
TmpDir=/vmfs/volumes/datastore1/job/var/lib/jobarranger/tmp
JaLogFile=/vmfs/volumes/datastore1/job/var/log/jobarranger/jobarg_agentd.log
JaPidFile=/vmfs/volumes/datastore1/job/var/run/jobarranger/jobarg_agentd.pid
JaDatabaseFile=/vmfs/volumes/datastore1/job/var/lib/jobarranger/jobarg_agentd.db
JaExtjobPath=/vmfs/volumes/datastore1/job/etc/jobarranger/extendedjob

의 부분을 환경에 맞게 수정합니다.
저의 같은 PATH라면 이것을 붙이셔도 됩니다.
Hostname은 Zabbix에 등록한 호스트 이름을 써 넣습니다.

3.jobarg_start.sh작성

cd /vmfs/volumes/datastore1/job
에서 작업을 하겠습니다.
vi jobarg_start.sh
##JOB ARRANGER START SHELL
JOB_EXE=/vmfs/volumes/datastore1/job/usr/sbin/jobarg_agentd
JOB_CNF=/vmfs/volumes/datastore1/job/etc/jobarranger/jobarg_agentd.conf

cd `dirname $0`
./jobarg_stop.sh

${JOB_EXE} -c ${JOB_CNF}
exit $?

저의 경우는 간단하게 적어 놓았습니다.
중복체크 대신 stop처리를 넣었습니다.

4.jobarg_stop.sh작성

vi jobarg_stop.sh
cd `dirname $0`

JOB_PROCESSES=`ps -Tcjstv | grep jobarg_agentd.conf | grep -v grep | awk '{ print $1 }'`

for i in  $JOB_PROCESSES
do
  echo $i
  kill -9 $i
done
exit $?

저의 경우는 간단하게 적어 놓았습니다.
여러분들도 환경에 맞게 쓰시길 바라겠습니다.

5.실행권한

chmod 700 jobarg_start.sh jobarg_stop.sh

6. job arranger 실행

./jobarg_start.sh
로 실행합니다.

7.Process확인

https://naiggy.blogspot.jp/2017/04/esxi_13.html
에서 소개한것과 같이 확인을 해보시길 바라겠습니다.

[root@localhost:~] ps -Tcjstv | grep job
35227  35227  jobarg_agentd                  35227  User,Native    WAIT    UWAIT   0,1       0.26419   /vmfs/volumes/datastore1/job/usr/sbin/jobarg_agentd -c /vmfs/volumes/datastore1/job/etc/jobarranger/jobarg_agentd.conf
35282  35282  jobarg_agentd                  35282  User,Native    WAIT    USLP    0,1       2.359539  /vmfs/volumes/datastore1/job/usr/sbin/jobarg_agentd -c /vmfs/volumes/datastore1/job/etc/jobarranger/jobarg_agentd.conf
35283  35283  jobarg_agentd                  35283  User,Native    WAIT    KTCP    0,1       0.691     /vmfs/volumes/datastore1/job/usr/sbin/jobarg_agentd -c /vmfs/volumes/datastore1/job/etc/jobarranger/jobarg_agentd.conf
35818  35818  grep                           35818  User,Native    WAIT    UPIPER  0,1       0.0       grep job
[root@localhost:~]

기동을 확인했습니다.

8.esxi firewall을 열어놓습니다.ファイアウォールを開けます

https://naiggy.blogspot.jp/2017/04/esxi-firewall.html
참조해 주십시요.

9.Zabbixへホスト登録

Zabbix GUI에서 ESXi의 호스트를 등록합니다.
저의 경우는 호스트 명을 esxi6으로 하였습니다.
Zabbix의 action에 기동 script를 넣습니다.
https://naiggy.blogspot.jp/2017/04/job-arrangerifjobargexec_29.html
참조 바랍니다.

10.JobNet를 등록합니다.

JOB의 등록에 있는 실행란에
test1의 호스트를 실행하는 명령어 입니다.
RUN_HOST=`vim-cmd vmsvc/getallvms | grep test1 | awk '{ print $1 }'`
vim-cmd vmsvc/power.on ${RUN_HOST}






















이 JOB이 실행하면 자동으로 test1의 호스트에 파워온이 됩니다.

결론

Zabbix의 Template Virt VMware Guest: Power state아이템과 함께 쓰면 자동으로 호스트를 기동하는 것이 가능합니다.
반대로 이야기하면 정지하는 것도 가능하므로 이것을 참고로 사용하시길 바라겠습니다.

ESXi를 reboot하게되면 Job Arranger가 자동으로 실행되질 않습니다.
그래서,
vi /etc/rc.local.d/local.sh
/vmfs/volumes/datastore1/job/jobarg_start.sh
을 추가해 주십시요.
그러면, ESXi을 reboot해도 자동으로 job arranger가 기동될 것입니다.

이상입니다.

2017年4月28日金曜日

zeroedthick vs eagerzeroedthick

ESXiにてDiskを追加すると思うとzeroedthick(シック・プロビジョニング ) とeagerzeroedthick(シック・プロビジョニング )があります。
どう違うことでしょうか?
これはIBMのページい説明があります。
https://www.ibm.com/developerworks/jp/cloud/library/cl-provisionvm-vmware/
●シック・プロビジョニング (lazy zeroed) ― 簡単に説明するとStorageのサイズだけを確保して使いながら部分部分をフォーマットする仕組みです。

●シック・プロビジョニング (eager zeroed) ― 最初から使う準備まですることです。作成するのに時間がかかるものです。

それでは作り方を紹介します。
①zeroedthick作成
zeroedthickはデフォルト オプションです。
[root@localhost:/vmfs/volumes/58c6a2fd-43824507-ea95-000c2968d936/disk] vmkfstools -c 1G -d zeroedthick  data01.vmdk
Create: 100% done.
[root@localhost:/vmfs/volumes/58c6a2fd-43824507-ea95-000c2968d936/disk] ls -la
total 1049608
drwxr-xr-x    1 root     root           560 Apr 28 02:22 .
drwxr-xr-t    1 root     root          1960 Apr 28 01:46 ..
-rw-------    1 root     root     1073741824 Apr 28 02:22 data01-flat.vmdk
-rw-------    1 root     root           466 Apr 28 02:22 data01.vmdk
[root@localhost:/vmfs/volumes/58c6a2fd-43824507-ea95-000c2968d936/disk]
新しく作る場合は-cを入れてSizeを設定、zeroedthickを使う場合は-d次にしてファイル名を書いてください。

②eagerzeroedthick作成
eagerzeroedthickはCluster作業をするときに使うものです。他のシステムと共有するなら必ずeagerzeroedthickを入れて作成ください。サイズにより時間がかかります。
[root@localhost:/vmfs/volumes/58c6a2fd-43824507-ea95-000c2968d936/disk] vmkfstools -c 1G -d eagerzeroedthick  data01.vmdk
Creating disk 'data01.vmdk' and zeroing it out...
Create: 100% done.
[root@localhost:/vmfs/volumes/58c6a2fd-43824507-ea95-000c2968d936/disk] ls -lah
total 1049608
drwxr-xr-x    1 root     root         560 Apr 28 02:21 .
drwxr-xr-t    1 root     root        1.9K Apr 28 01:46 ..
-rw-------    1 root     root        1.0G Apr 28 02:21 data01-flat.vmdk
-rw-------    1 root     root         466 Apr 28 02:21 data01.vmdk
[root@localhost:/vmfs/volumes/58c6a2fd-43824507-ea95-000c2968d936/disk]

③変更
もし、既にzeroedthickで作成してeagerzeroedthickに変更したい場合は
[root@localhost:/vmfs/volumes/58c6a2fd-43824507-ea95-000c2968d936/disk] vmkfstools -k data01.vmdk
Eagerly zeroing: 100% done.
[root@localhost:/vmfs/volumes/58c6a2fd-43824507-ea95-000c2968d936/disk] 
にしてください。

④削除
[root@localhost:/vmfs/volumes/58c6a2fd-43824507-ea95-000c2968d936/disk] vmkfstools -U data01.vmdk
削除ください。

用度に合わせてDiskをフォーマットを決めてください。

以上です。








2017年4月24日月曜日

Job Arranger外部I/F jobarg_exec


Job Arranagerのjobnetを外部から実行することがないか?どうすればよりか考える人もいるかもしれないです。前回 Job ArrangerからESXiの仮想ホスト自動起動
https://naiggy.blogspot.jp/2017/04/job-arrangeresxi.html
どうすればZabbixから起動するか?説明します。

Job Arrangerのジョブネットは外部から実行することができます。
コマンドjobarg_execを利用します。
Shell scriptから実行する場合は
jobarg_exec -z 192.168.137.138 -U Admin -P zabbix -j JOBNET_9
にします。
コマンドの詳細内容は
http://xn--yck0c5b3804be7h.fitechforce.com/operation-manual_3.2/10external-exec.html
をご参照ください。

僕の場合を簡単に説明します。
-zはJob ArrangerのホストIPです。
-Uはジョブネットを作成したユーザーです。
-Pはユーザーのパスワードです。
-jは起動するジョブネットIDです。

これで実行ができました。
[root@localhost ~]# jobarg_exec -z 192.168.137.138 -U Admin -P zabbix -j JOBNET_9
jobarg_exec [2413]: Registry number :  [1600000000000000001]
[root@localhost ~]#

仮想ホストが起動ができることが確認できます。

以上です。

2017年4月23日日曜日

Job ArrangerからESXiの仮想ホスト自動起動

Zabbixから死活監視をして仮想ホストが死んでいる場合、仮想ホストを起動しなければならないです。起動方法はvSphereにログインしてホストを起動するか?ESXiにssh接続して起動するか?など人の手を借りて解決します。
どうすればrun boot見たいに自動でホストを起動するかを考えたところ登場したものがJobArrangerでありましたので、その起動方法を紹介して見ます。
JobArrangerはCで作られているのでLinux環境ではよいと思います。

1.ESXiにJob Arranger Agentをインストール

ESXiにはrpmコマンドがないのでrpmインストールができませんので他のLinuxサーバーからjobarranger-agentd-3.2.0-1.el6.x86_64.rpmをDownloadして
rpm2cpio jobarranger-agentd-3.2.0-1.el6.x86_64.rpm | cpio -idv
コマンドで解凍します。
解凍したらフォルダetc, usr, varを一つに纏めてzipファイルを作ります。
ESXiサーバの/vmfs/volumes/datastore1/ 下にjobフォルダを作成します。
作成したjobフォルダにzipファイルを入れ解凍します。

参考1:ESXiサーバは再起動しても/vmfs/volumes/datastore*の下は変わりませんので自由に使います。
参考2:jobフォルダはご自由に変更してもかまいません。

2.jobarg_agentd.confファイルの修正

解凍したzipファイルからjobarg_agentd.confを修正します。
僕の場合は
/vmfs/volumes/datastore1/job/etc/jobarrangerにありますのでこれを修正します。
vi jobarg_agentd.conf

Hostname=esxi6
JaExtjobPath=/vmfs/volumes/datastore1/job/etc/jobarranger/extendedjob
TmpDir=/vmfs/volumes/datastore1/job/var/lib/jobarranger/tmp
JaLogFile=/vmfs/volumes/datastore1/job/var/log/jobarranger/jobarg_agentd.log
JaPidFile=/vmfs/volumes/datastore1/job/var/run/jobarranger/jobarg_agentd.pid
JaDatabaseFile=/vmfs/volumes/datastore1/job/var/lib/jobarranger/jobarg_agentd.db
JaExtjobPath=/vmfs/volumes/datastore1/job/etc/jobarranger/extendedjob

の部分を環境に合わせて修正します。
僕と同じパスならばそのまま使ってください。
HostnameはZabbixへ登録する名を入れてください。

3.jobarg_start.sh作成

cd /vmfs/volumes/datastore1/job
ここから作業します。
vi jobarg_start.sh
##JOB ARRANGER START SHELL
JOB_EXE=/vmfs/volumes/datastore1/job/usr/sbin/jobarg_agentd
JOB_CNF=/vmfs/volumes/datastore1/job/etc/jobarranger/jobarg_agentd.conf

cd `dirname $0`
./jobarg_stop.sh

${JOB_EXE} -c ${JOB_CNF}
exit $?

僕の場合は簡単に書きました。
重複チェックよりは必ずreboot感じで作成しました。


4.jobarg_stop.sh作成

vi jobarg_stop.sh
cd `dirname $0`

JOB_PROCESSES=`ps -Tcjstv | grep jobarg_agentd.conf | grep -v grep | awk '{ print $1 }'`

for i in  $JOB_PROCESSES
do
  echo $i
  kill -9 $i
done
exit $?

僕の場合は簡単に書きました。
皆さんは環境に合わせて書いてください。

5.実行権限

chmod 700 jobarg_start.sh jobarg_stop.sh

6. job arranger 実行

./jobarg_start.sh
で実行します。

7.Process確認

https://naiggy.blogspot.jp/2017/04/esxi.html
で紹介したように確認お願いいたします。

[root@localhost:~] ps -Tcjstv | grep job
35227  35227  jobarg_agentd                  35227  User,Native    WAIT    UWAIT   0,1       0.26419   /vmfs/volumes/datastore1/job/usr/sbin/jobarg_agentd -c /vmfs/volumes/datastore1/job/etc/jobarranger/jobarg_agentd.conf
35282  35282  jobarg_agentd                  35282  User,Native    WAIT    USLP    0,1       2.359539  /vmfs/volumes/datastore1/job/usr/sbin/jobarg_agentd -c /vmfs/volumes/datastore1/job/etc/jobarranger/jobarg_agentd.conf
35283  35283  jobarg_agentd                  35283  User,Native    WAIT    KTCP    0,1       0.691     /vmfs/volumes/datastore1/job/usr/sbin/jobarg_agentd -c /vmfs/volumes/datastore1/job/etc/jobarranger/jobarg_agentd.conf
35818  35818  grep                           35818  User,Native    WAIT    UPIPER  0,1       0.0       grep job
[root@localhost:~]

起動はできました。

8.esxi ファイアウォールを開けます

https://naiggy.blogspot.jp/2017/04/esxi_22.html
参照ください。

9.Zabbixへホスト登録

Zabbix GUIからESXiのホストを登録します。
僕の場合はホスト名はesxi6になります。
Zabbixへactionを登録します。
actionの起動scriptは
https://naiggy.blogspot.jp/2017/04/job-arrangerifjobargexec.html
をご参照ください。

10.JobNetへ登録します

ジョブの登録の実行欄に
test1のホストを実行するコマンドです。
RUN_HOST=`vim-cmd vmsvc/getallvms | grep test1 | awk '{ print $1 }'`
vim-cmd vmsvc/power.on ${RUN_HOST}





















このジョブが実行されると自動でtest1のホストがパワーオンになります。

結論

ZabbixのTemplate Virt VMware Guest: Power stateアイテムと組み合わせで自動でホストを起動することができます。
反対にホストを停止することもできますので
これを見てご自由に使用してください。

ESXiをrebootするとJob Arrangerが自動起動にならないので
vi /etc/rc.local.d/local.sh
/vmfs/volumes/datastore1/job/jobarg_start.sh
を追記するとESXiをrebootしても自動にjob arrangerが起動されます。


以上です。

esxi firewall설정 방법

ESXi에서 새로운 app의 port를 여는 것은vSphere에서는 불가능합니다.
ESXi의 서버에 ssh로 접속해서 작업을 해야만 합니다.
그럼 ESXi 6.5에서 작업을 해보겠습니다.
요번에는 Job Arranger의 접속 포트를 열어 보겠습니다.
먼저 firewall의 리스트를 확인 합니다.

[root@localhost:~] esxcli network firewall ruleset list
Name                      Enabled
------------------------  -------
sshServer                    true
sshClient                   false
nfsClient                   false
nfs41Client                 false
dhcp                         true
dns                          true
snmp                         true
ntpClient                   false
CIMHttpServer                true
CIMHttpsServer               true
CIMSLP                       true
iSCSI                       false
vpxHeartbeats                true
updateManager                true
faultTolerance               true
webAccess                    true
vMotion                      true
vSphereClient                true
activeDirectoryAll          false
NFC                          true
HBR                          true
ftpClient                   false
httpClient                  false
gdbserver                   false
DVFilter                    false
DHCPv6                      false
DVSSync                      true
syslog                      false
IKED                        false
WOL                          true
vSPC                        false
remoteSerialPort            false
vprobeServer                false
rdt                          true
cmmds                        true
vsanvp                       true
rabbitmqproxy                true
ipfam                       false
vvold                       false
iofiltervp                  false
esxupdate                   false
vit                         false
vsanhealth-multicasttest    false
[root@localhost:~]

Enabled의미는 등록되어 있습니다는의미에서 true의 경우는 port기열려있다는 것이고, false는 열려있지 않다는 것입니다.
jobarranger는 등록이 안되어 있으므로 등록해 보겠습니다.

1.대상파일을 백업
cp /etc/vmware/firewall/service.xml /etc/vmware/firewall/service.xml.bak

2.권한을 변경
chmod 644 /etc/vmware/firewall/service.xml
chmod +t /etc/vmware/firewall/service.xml

3.service.xml에 파일 등록
파일의 마지막 부분에 </ConfigRoot>위에

  <!-- Job Arranger -->
   <service id='0042'>
        <id>jobarranger</id>
        <rule id='0000'>
           <direction>inbound</direction>
           <protocol>tcp</protocol>
           <porttype>dst</porttype>
           <port>10055</port>
        </rule>
        <rule id='0001'>
           <direction>outbound</direction>
           <protocol>tcp</protocol>
           <porttype>dst</porttype>
           <port>10061</port>
        </rule>
        <enabled>true</enabled>
        <required>true</required>
     </service>
을 붙여 넣슷ㅂ니다.
위의 내용은,
service id에는 유니크한 ID를 넣습니다. 마지막 번호에 1을 더해 써 넣습니다.
id에는 표시될 이름을 넣습니다.(예:jobarranger)
rule id에는 지금 부터 사용할 rule을 써 넣습니다.
    이 룰에는 inbound할지 outbound하지를 써 넣습니다.
    inbound와 outbound을 동시에 이용하려면 rule id가 2개 필요합니다.서로 다른 Port를 사용하려면 복수의 rule id가 필요하게 됩니다.하지만 중복은 허용 하지 않으므로 unique한 번호를 부여해 넣습니다.
direction에는 inbound 또는 outbound를 써 넣습니다.
protocol에는 tcp 또는 udp를 써 넣습니다.
porttype에는 dst를 써 넣습니다.
port은 사용할 port를 써 넣습니다.
enabled에는 추가한 내용이므로 true를 써 넣습니다.
required에는 추가한 내용이므로 true를 써 넣습니다.

4.원래의 권한으로 바꿈
chmod 444 /etc/vmware/firewall/service.xml

5.firewall 재시작
esxcli network firewall ruleset list

6.확인
[root@localhost:~] esxcli network firewall ruleset list
Name                      Enabled
------------------------  -------
sshServer                    true
sshClient                   false
nfsClient                   false
nfs41Client                 false
dhcp                         true
dns                          true
snmp                         true
ntpClient                   false
CIMHttpServer                true
CIMHttpsServer               true
CIMSLP                       true
iSCSI                       false
vpxHeartbeats                true
updateManager                true
faultTolerance               true
webAccess                    true
vMotion                      true
vSphereClient                true
activeDirectoryAll          false
NFC                          true
HBR                          true
ftpClient                   false
httpClient                  false
gdbserver                   false
DVFilter                    false
DHCPv6                      false
DVSSync                      true
syslog                      false
IKED                        false
WOL                          true
vSPC                        false
remoteSerialPort            false
vprobeServer                false
rdt                          true
cmmds                        true
vsanvp                       true
rabbitmqproxy                true
ipfam                       false
vvold                       false
iofiltervp                  false
esxupdate                   false
vit                         false
vsanhealth-multicasttest    false
jobarranger                  true
[root@localhost:~]
빨간 부분이 추가된 부분입니다.

7.ESXi의 reboot의 대응
firewall은 ESXi가 reboot되면 처음설정 값으로 돌아가는 현상이 있습니다.
그러므로, service.xml파일에 Port를 추가 해 놓아도 다시 인스톨 때의 service.xml파일로 돌아갑니다. 그것을 방지 하기 위해
/etc/rc.local.d/local.sh 파일에 추가를 합니다.
파일을 열어 마지막 부분의 exit 0의 위에 추가 합니다.
vi /etc/rc.local.d/local.sh
#Job Arranger START
cp /etc/vmware/firewall/service.xml /etc/vmware/firewall/service.xml.bak
chmod 644 /etc/vmware/firewall/service.xml
chmod +t /etc/vmware/firewall/service.xml
sed -i -e 's/<\/ConfigRoot>//g' /etc/vmware/firewall/service.xml
cat<<_EOT_>>/etc/vmware/firewall/service.xml
  <!-- Job Arranger -->
     <service id='0042'>
        <id>jobarranger</id>
        <rule id='0000'>
           <direction>inbound</direction>
           <protocol>tcp</protocol>
           <porttype>dst</porttype>
           <port>10055</port>
        </rule>
        <rule id='0001'>
           <direction>outbound</direction>
           <protocol>tcp</protocol>
           <porttype>dst</porttype>
           <port>10061</port>
        </rule>
        <enabled>true</enabled>
        <required>true</required>
     </service>
< /ConfigRoot>
_EOT_
chmod 444 /etc/vmware/firewall/service.xml
esxcli network firewall refresh
##Job Arranger END

이렇게 설정을 하고 reboot를 하면 문제 없이 port가 열려있는 갓을 알 수 있습니다.

Job Arranger을 ESXi에 인스톨 하는 방법을 알아보겠습니다.
http://naiggy.blogspot.com/2017/04/job-arrangeresxi.html
참조 바랍니다.

이상 입니다.

2017年4月22日土曜日

esxi ファイアウォール 設定

ESXiへ新しいアプリのPortを開けるのはvSphereではできません。
ESXiのサーバーにssh接続してから作業しなければならないです。

ESXi 6.5から作業をします。
今回はJob Arrangerの穴を開けて見ます。
ファイアウォールのリストを確認します。
[root@localhost:~] esxcli network firewall ruleset list
Name                      Enabled
------------------------  -------
sshServer                    true
sshClient                   false
nfsClient                   false
nfs41Client                 false
dhcp                         true
dns                          true
snmp                         true
ntpClient                   false
CIMHttpServer                true
CIMHttpsServer               true
CIMSLP                       true
iSCSI                       false
vpxHeartbeats                true
updateManager                true
faultTolerance               true
webAccess                    true
vMotion                      true
vSphereClient                true
activeDirectoryAll          false
NFC                          true
HBR                          true
ftpClient                   false
httpClient                  false
gdbserver                   false
DVFilter                    false
DHCPv6                      false
DVSSync                      true
syslog                      false
IKED                        false
WOL                          true
vSPC                        false
remoteSerialPort            false
vprobeServer                false
rdt                          true
cmmds                        true
vsanvp                       true
rabbitmqproxy                true
ipfam                       false
vvold                       false
iofiltervp                  false
esxupdate                   false
vit                         false
vsanhealth-multicasttest    false
[root@localhost:~]

Enabledの意味は登録はされていますがtrueは穴が開けている、falseは開けてないことです。
見た感じだとjobarrangerがないため登録して見ます。
1.対象になるファイルのバックアップ
cp /etc/vmware/firewall/service.xml /etc/vmware/firewall/service.xml.bak

2.権限変更
chmod 644 /etc/vmware/firewall/service.xml
chmod +t /etc/vmware/firewall/service.xml

3.service.xmlファイルに登録
最後の部分</ConfigRoot>の上に

  <!-- Job Arranger -->
   <service id='0042'>
        <id>jobarranger</id>
        <rule id='0000'>
           <direction>inbound</direction>
           <protocol>tcp</protocol>
           <porttype>dst</porttype>
           <port>10055</port>
        </rule>
        <rule id='0001'>
           <direction>outbound</direction>
           <protocol>tcp</protocol>
           <porttype>dst</porttype>
           <port>10061</port>
        </rule>
        <enabled>true</enabled>
        <required>true</required>
     </service>
貼り付けます。
内容を説明すると
service idはuniqueになります。最後の番後の1つ上の番号を書きます。
idは表示される名前です。(例:jobarranger)
rule idはこれから使用するルールを書きます。
    このルールとはinboundするかoutboundするかを書きます。
    inboundとoutboundを利用するならrule idが2個になるし、色々Portを使用するならrule idが複数になります。でも、uniqueな番号を使ってください。。
directionはinboundかoutboundを使ってください。
protocolはtcpかudpかを書きます。
porttypeはdstです。
portは開くportを書きます。
enabledは追加する内容ですのでtrueをします。
requiredは追加する内容ですのでtrueをします。

4.権限戻し
chmod 444 /etc/vmware/firewall/service.xml

5.firewall再起動
esxcli network firewall refresh

6.確認
[root@localhost:~] esxcli network firewall ruleset list
Name                      Enabled
------------------------  -------
sshServer                    true
sshClient                   false
nfsClient                   false
nfs41Client                 false
dhcp                         true
dns                          true
snmp                         true
ntpClient                   false
CIMHttpServer                true
CIMHttpsServer               true
CIMSLP                       true
iSCSI                       false
vpxHeartbeats                true
updateManager                true
faultTolerance               true
webAccess                    true
vMotion                      true
vSphereClient                true
activeDirectoryAll          false
NFC                          true
HBR                          true
ftpClient                   false
httpClient                  false
gdbserver                   false
DVFilter                    false
DHCPv6                      false
DVSSync                      true
syslog                      false
IKED                        false
WOL                          true
vSPC                        false
remoteSerialPort            false
vprobeServer                false
rdt                          true
cmmds                        true
vsanvp                       true
rabbitmqproxy                true
ipfam                       false
vvold                       false
iofiltervp                  false
esxupdate                   false
vit                         false
vsanhealth-multicasttest    false
jobarranger                  true
[root@localhost:~]
赤い部分が追加されていることがわかります。

7.ESXiの再起動の対応
ファイアウォールはESXiを再起動すると最初のところに戻りますのでいつでも開けられるように設定します。
/etc/rc.local.d/local.sh ファイルへ追記します。
最後のexit 0の上の部分
vi /etc/rc.local.d/local.sh
#Job Arranger START
cp /etc/vmware/firewall/service.xml /etc/vmware/firewall/service.xml.bak
chmod 644 /etc/vmware/firewall/service.xml
chmod +t /etc/vmware/firewall/service.xml
sed -i -e 's/<\/ConfigRoot>//g' /etc/vmware/firewall/service.xml
cat<<_EOT_>>/etc/vmware/firewall/service.xml
  <!-- Job Arranger -->
     <service id='0042'>
        <id>jobarranger</id>
        <rule id='0000'>
           <direction>inbound</direction>
           <protocol>tcp</protocol>
           <porttype>dst</porttype>
           <port>10055</port>
        </rule>
        <rule id='0001'>
           <direction>outbound</direction>
           <protocol>tcp</protocol>
           <porttype>dst</porttype>
           <port>10061</port>
        </rule>
        <enabled>true</enabled>
        <required>true</required>
     </service>
</ConfigRoot>
_EOT_
chmod 444 /etc/vmware/firewall/service.xml
esxcli network firewall refresh
##Job Arranger END

これで再起動対策は完了になります。
Job ArrangerをESXiにインストールして見ましょう。
http://naiggy.blogspot.com/2017/04/job-arrangeresxi.html
ご参考ください。

以上です。

Linux Disk늘리기 작업

본글은 CentOS7을 기준으로 하고 있습니다.
Disk추가에 대해서는
https://naiggy.blogspot.jp/search/label/Disk%20Add%20kr
참조해 주세요.

Disk추가와 늘리기는 틀리는 주의 해주시길 바랍니다.
늘리가 작업의 의미는 Volume group을 늘리는 것을 말합니다.

늘리는 방법을 적어보도록 하겟습니다.

1.vSphere Client에서Disk추가하고 Disk를 늘립니다.

전에 작성한 Disk추가를 참조해 주시길 바라겠습니다.


/mnt부분을 늘리겠습니다.

2.OS부분의 Disk늘림

vSphere clinet에서 Disk를 추가하고 나서는 OS부분에서 추가를 해주어야 합니다.
fdisk -l 명령어로 늘릴 부분이 추가되어 있는지 확인합니다.



















fdisk /dev/sdc 명령어를 시용하여 파티션을 추가합니다.
コマンド (m でヘルプ): n   (n은 new의 의미입니다.)
Select (default p): p (p은 primary의 의미입니다.)
コマンド (m でヘルプ): w  (w은 write의 의미입니다.)

##Physical volume을 생성합니다.
[root@test1 ~]# pvcreate /dev/sdc1 
  Physical volume "/dev/sdc1" successfully created.

##기존의 Volume group을 늘립니다.
[root@test1 ~]# vgextend  VgPark /dev/sdc1
  Volume group "VgPark" successfully extended

##logical volume을 늘립니다.
[root@test1 ~]# lvextend -l +100%FREE /dev/VgPark/LvPark 
  Size of logical volume VgPark/LvPark changed from 2.00 GiB (511 extents) to 3.99 GiB (1022 extents).
  Logical volume VgPark/LvPark successfully resized.
[root@test1 ~]# xfs_growfs /dev/VgPark/LvPark 
meta-data=/dev/mapper/VgPark-LvPark isize=512    agcount=4, agsize=130816 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=523264, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 523264 to 1046528
[root@test1 ~]# 


3.확인


df -h명령어를 써서 늘어 났는지를 확인합니다.

2017年4月17日月曜日

Linux Disk拡張作成

本書はCentOS7を基準にします。
Disk追加に関しては
https://naiggy.blogspot.com/search/label/Disk%20Add%20jp
書いています。
拡張の意味はVolume groupを拡張することです。

拡張手順は

1.vSphere ClientからDisk追加からDiskを拡張

前回書いたDisk追加をご参考ください。


/mntを拡張します。

2.OSからDisk拡張


fdisk -lから確認します。



















fdisk /dev/sdcコマンドを利用してパーティションを追加します。
コマンド (m でヘルプ): n   (nはnewの意味です)
Select (default p): p (pはprimaryの意味です)
コマンド (m でヘルプ): w  (wはwriteの意味です)

##Physical volumeを生成します。
[root@test1 ~]# pvcreate /dev/sdc1 
  Physical volume "/dev/sdc1" successfully created.

##既存のVolume groupを拡張します。
[root@test1 ~]# vgextend  VgPark /dev/sdc1
  Volume group "VgPark" successfully extended

##logical volumeを拡張します。
[root@test1 ~]# lvextend -l +100%FREE /dev/VgPark/LvPark 
  Size of logical volume VgPark/LvPark changed from 2.00 GiB (511 extents) to 3.99 GiB (1022 extents).
  Logical volume VgPark/LvPark successfully resized.
[root@test1 ~]# xfs_growfs /dev/VgPark/LvPark 
meta-data=/dev/mapper/VgPark-LvPark isize=512    agcount=4, agsize=130816 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=523264, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 523264 to 1046528
[root@test1 ~]# 


3.確認


df -hで確認します。

2017年4月15日土曜日

REPEATABLE READ란 무엇인가?

Transaction 분리 레벨에 REPEATABLE READ라고 있습니다.
REPEATABLE READ은, 같은 Transaction안에서는 반듯이 같은 값을 가지고 온다는 설정입니다.
MySQL은 REPEATABLE READ을 Default로 하고 있습니다.
REPEATABLE READ가 어떻게 동작하는지 알아보도록 하겠습니다.


왼쪽을 트랜잭션 t1이라고 하겠습니다.

오른쪽을 트랜잭션 t2라고 하겠습니다.
t1과 t2에 서로 begin을 하겠습니다. 그리고 t1에서 insert하고 commit를 하고, t2에서 확인을 해보겠습니다. 샐행 시간을 잘봐 주세요.
t2에서 begin을 하고 select " from test;를 해도 t1에서 입력한 값이 보이질 않습니다.t2 begin을 commit하고 나서 select를 하면 t1에서 입력한 값이 보입니다.
update도 같은 트랜젝션에서는 같은 값이 보입니다.
일괄성읽기 전용이라고 할수 있습니다. 이것을 REPEATABLE READ라고 하는 것입니다.

PostgreSQL가 Oracle은 READ COMMITTED을 사용하고 있어서 서로다른 트랜젝션에서 commit를 하게 되면 다른 트랜젝션에서도 참조가 됩니다.
왜, MySQL은 REPEATABLE READ을 Default로 사용하는지 그렇다면 어디서 이것을 쓰는지 알수 있을 까요?
저도 왜?MySQL이 REPEATABLE READ을 Default로 사용하는지는 모름니다만, 어디에 사용해야하는지는 알고 있어 설명을 드리도록 하겠습니다.
예) 트랜젝션(t1)에서는 시간 테이블에 1초에 하나씩 테이터를 Insert합니다.
     시간 테이블을 보고 8시 정각에 실행되는 스케줄이 5개 있다고 합시다.
     트랜젝션(t2)에서는 1건씩 보면서 처리는 하는데 처리시간이 1초 건린다고 하면
     이 처리는 1건만 끝나고, 다음 처리는 1초가 지났으므로 처리가 안될 것입니다.
    이럴때, 사용하는 것이 REPEATABLE READ입니다.
    t2에서 commit만 하지 않는다면 5건이 끝날때까지 t2에서 읽는 시간은 8시이기 때문에 전부 처리가 가능합니다.

어떤 시스템을 만들때 사양을 잘 이해하고, 트랜젝션에 대해서도 이해를 하고 있다면 정말로 훌륭한 시스템을 만들수 있다고 생각합니다. 아키텍쳐, 모델러 등은 반듯이 각 시스템의 특성을 알고 설계를 하시면 좋겠습니다.

이상입니다.

トランザクション分離レベルREPEATABLE READについて

トランザクション分離レベルREPEATABLE READについて、
REPEATABLE READとは同じトランザクション内では必ず同じ値を表す設定です。
MySQLはこのレベルをDefaultに使用しています。
REPEATABLE READがどのように動作するか確認しましょう。


左をトランザクションt1と言います。
右をトランザクションt2と言います。

t1とt2でお互いにbeginを起こしてt1にてInsert, commitをしてt2にて見えるかを確認しました。実行時間を見てください。
t2ではbeginをしてからはselect * from test;をしてもt1で入力した値が見えません。t2 beginを完了した後にselectしたら値が見えました。
updateも同じトランザクションでは同じ値が見えます。
一活性読み取り専用です。これを REPEATABLE READと言います。

PostgreSQLとOracleをREAD COMMITTEDを使用していますので異なるトランザクションでcommitすると他のトランザクションでは見えます。
なぜ、MySQLはREPEATABLE READをDefaultに利用しているし、これはいつ使うものでしょうか?
僕もなぜMySQLはREPEATABLE READをDefaultにしているかわかりません。
しかし、いつ使うかはわかります。
例) トランザクション(t1)が時間テーブルの値が1秒ことに変更します。
   時間テーブルの値を見て8時00分00秒に動くスケジュールを5件組みました。
   トランザクション(t2)がを1件処理するのに1秒かかります。
   スケジュールを読みながら1件ずつ実行したら
   1件処理後1秒かかりましたので時間テーブルの値を見ると8時00分01秒になります
   ので次のスケジュールは実行できません。
   このとき使うトランザクション分離レベルREPEATABLE READです。
   トランザクション(t2)がcommitしてないと全部同じ8時00分00秒で実行ができます。

システムを作るときに仕様を理解したうえでトランザクション分離レベルを設定するとよいシステムができると思います。アーキテクチャー、データモデラーなどは必ずシステムの特性を理解して上で設計をしましょう。

以上です。



2017年4月13日木曜日

ESXi에서 프로세스 확인 방법

ESXi에서 프로세스를 확인하기 위해, ps 명령어를 이용하여 확인할수 있습니다.
그러나, ps 명령어의 옵션을 몰라서 필요한 정보를 보지 몰할때가 있습니다.
오늘은 ps명령어로 정보를 볼수 있는 방법을 설명 해보려 합니다.

ps 명령어를 보면
[root@localhost:~] ps --help
ps
    -C           Display only cartels
    -P           Display PCID
    -T           Display used time
    -c           Display verbose command line
    -g           Display session ID and process group
    -i           Display summary information
    -j           Display GID
    -n           Display nChildren (only with --tree)
    -N           Display nThreads  (only with --tree)
    -s           Display state
    -t           Display type
    -u           Display only userworlds
    -U [N]       Display [only] userspace ID
    -v           Display non truncated values
    -Z           Display the security domain
    -z           Display zombie cartels
    -J or --tree Display userworlds in a tree layout
[root@localhost:~]
가 출력 됩니다.

이것을 조합하여
ps -Tcjstv 명령어를 실행하면 원하는 정보를 얻을 수 있습니다.
예를 들어 sshd의 process의 pid를 확인해 보겠습니다.
[root@localhost:~] ps -Tcjstv | grep sshd
35745  35745  sshd                           35745  User,Native    WAIT    UPOL    0,1       0.117159  sshd -i
36172  36172  grep                           36172  User,Native    WAIT    UPIPER  0,1       0.0       grep sshd
[root@localhost:~]


여기서 process를 kill하면 그프로세스가 없어지는 것을 볼수 있습니다.
kill -9 35745를 해보세요.。

이것을 언제 사용할지는,
여러분들이 ESXi의 백업을 위해 ghettoVCB를 사용하는 경우가 있습니다.
이것이 문제 없이 끝나면 되는데 가끔은 중간에 프로세스가 움직이지 않을 때가 있습니다.
그때, process를 죽일때 사용하면 정말로 좋습니다.

그럼 이상입니다.

ESXiにてプロセス確認

ESXiにてプロセスを確認するために、psコマンドを利用して確認をします。しかし、Optionがわからなくどうすればよく情報を取れるか気になったことがあります。
今日はPSコマンドで情報を取る方法を紹介します。

ps コマンドをを見ると
[root@localhost:~] ps --help
ps
    -C           Display only cartels
    -P           Display PCID
    -T           Display used time
    -c           Display verbose command line
    -g           Display session ID and process group
    -i           Display summary information
    -j           Display GID
    -n           Display nChildren (only with --tree)
    -N           Display nThreads  (only with --tree)
    -s           Display state
    -t           Display type
    -u           Display only userworlds
    -U [N]       Display [only] userspace ID
    -v           Display non truncated values
    -Z           Display the security domain
    -z           Display zombie cartels
    -J or --tree Display userworlds in a tree layout
[root@localhost:~]
になります。

そこを組み合わせして
ps -Tcjstvコマンドを実行すると色んな情報が見えます。
例えば sshdの実行プロセスのPIDを調査して見ます。
[root@localhost:~] ps -Tcjstv | grep sshd
35745  35745  sshd                           35745  User,Native    WAIT    UPOL    0,1       0.117159  sshd -i
36172  36172  grep                           36172  User,Native    WAIT    UPIPER  0,1       0.0       grep sshd
[root@localhost:~]

ここでProcessをkillするとプロセスがなくなります。
kill -9 35745して見ては。。

これをいつ使うかはghettoVCBを利用するときにたまに、ゾンビになりますので
そのときに使うと便利です。

以上です。

2017年4月12日水曜日

ESXi의 HOST를 강제 종료하기

일반적으로는 EXSi의 호스트를 강제종료하기위해서는 전원 power off를 선택하여 종료하나, 가끔은 이것이 말을 안들을때가 있습니다. Power off를 해도 응답이 없는 경우가 있어서 이걸 어떻게 하면 한번에 종료 할 수 있는지를 조사한 결과를 소개해 보려고 합니다.

ESXi에 ssh로 접속합니다.
[root@localhost:~] esxcli vm process list
test1
   World ID: 35331
   Process ID: 0
   VMX Cartel ID: 35330
   UUID: 56 4d 11 5a 33 05 74 09-42 1e e2 b4 81 2a b6 05
   Display Name: test1
   Config File: /vmfs/volumes/58c6a2fd-43824507-ea95-000c2968d936/test1/test1.vmx

test2
   World ID: 36062
   Process ID: 0
   VMX Cartel ID: 36061
   UUID: 56 4d 28 49 b1 5d 09 1f-ba 63 3e 7c 73 87 1f c6
   Display Name: test2
   Config File: /vmfs/volumes/58c6a2fd-43824507-ea95-000c2968d936/test2/test2.vmx
[root@localhost:~]

실행중인 가상호스트의 리스트를 확인합니다.
강제종료할 호스트의 World ID을 이용하여 정지시킵니다.
[root@localhost:~] esxcli vm process kill --type=force --world-id=35331
[root@localhost:~] esxcli vm process list
test2
   World ID: 36062
   Process ID: 0
   VMX Cartel ID: 36061
   UUID: 56 4d 28 49 b1 5d 09 1f-ba 63 3e 7c 73 87 1f c6
   Display Name: test2
   Config File: /vmfs/volumes/58c6a2fd-43824507-ea95-000c2968d936/test2/test2.vmx
[root@localhost:~]
명령어로는 esxcli vm process kill --type=force --world-id=35331를 실행합니다.
type에는 soft,hard,force가 있습니만, 저는 force를 사용하였습니다.
world-id에는 list에서 보이는 숫자를 입력합니다.

이렇게 입력하고 실행을 하면 호스트가 정지되는 것이 보일것입니다.
이상입니다.

ESXiのHOST強制停止

一般的にESXiのHOST強制停止するなら電源パワーオフを考えていますが重い処理、または外部ファイルをLinkなどがある場合は電源パワーオフがちょっと時間がかかります。または電源パワーオフしても電源パワーオフができない場合があります。
なぜか、時間がかかるかわからないですが一気に停止する方法があのでそれを紹介します。

ESXiにsshで接続します。
[root@localhost:~] esxcli vm process list
test1
   World ID: 35331
   Process ID: 0
   VMX Cartel ID: 35330
   UUID: 56 4d 11 5a 33 05 74 09-42 1e e2 b4 81 2a b6 05
   Display Name: test1
   Config File: /vmfs/volumes/58c6a2fd-43824507-ea95-000c2968d936/test1/test1.vmx

test2
   World ID: 36062
   Process ID: 0
   VMX Cartel ID: 36061
   UUID: 56 4d 28 49 b1 5d 09 1f-ba 63 3e 7c 73 87 1f c6
   Display Name: test2
   Config File: /vmfs/volumes/58c6a2fd-43824507-ea95-000c2968d936/test2/test2.vmx
[root@localhost:~]

動作中の仮想ホストのリストが表示されます。
強制停止したホストのWorld IDを利用して停止します。
[root@localhost:~] esxcli vm process kill --type=force --world-id=35331
[root@localhost:~] esxcli vm process list
test2
   World ID: 36062
   Process ID: 0
   VMX Cartel ID: 36061
   UUID: 56 4d 28 49 b1 5d 09 1f-ba 63 3e 7c 73 87 1f c6
   Display Name: test2
   Config File: /vmfs/volumes/58c6a2fd-43824507-ea95-000c2968d936/test2/test2.vmx
[root@localhost:~]
コマンドはesxcli vm process kill --type=force --world-id=35331を発行しました。
typeにはsoft,hard,forceありますが僕の場合はforce を利用しています。
world-idにはlistで見えた数字を入れます。
そうすると一気に停止することがわかると思います。

以上です。


2017年4月11日火曜日

MySQL에 DBLINK만들기

Server version: 10.1.21-MariaDB MariaDB Server을 기준으로 합니다.

DBLink를 만들 database를 작성합니다.
MariaDB [mysql]> create database parkdb;

parkdb에 Zabbix에 있는 table을 dblink하겠습니다.
engines을 먼저 확인합니다.
MariaDB [mysql]> show engines;
+--------------------+---------+-
| Engine             | Support |
+--------------------+---------+-
| MRG_MyISAM         | YES     |
| CSV                | YES     |
| Aria               | YES     |
| MyISAM             | YES     |
| MEMORY             | YES     |
| InnoDB             | DEFAULT |
| SEQUENCE           | YES     |
| PERFORMANCE_SCHEMA | YES     |
+--------------------+---------+-
8 rows in set (0.00 sec)

MariaDB [mysql]>

FEDERATED은 Default설정이 되어 있지 않으므로 인스톨 합니다.

①FEDERATED 인스톨

MariaDB [mysql]> install plugin federated soname 'ha_federated.so';
Query OK, 0 rows affected (0.03 sec)
MariaDB [mysql]> show engines;
+--------------------+---------+
| Engine             | Support |
+--------------------+---------+
| MRG_MyISAM         | YES     |
| CSV                | YES     |
| Aria               | YES     |
| MyISAM             | YES     |
| MEMORY             | YES     |
| InnoDB             | DEFAULT |
| SEQUENCE           | YES     |
| FEDERATED          | YES     |
| PERFORMANCE_SCHEMA | YES     |
+--------------------+---------+
9 rows in set (0.00 sec)

②DBLink작성

MariaDB [mysql]> CREATE SERVER dblink
    -> FOREIGN DATA WRAPPER mysql
    -> OPTIONS (USER 'zabbix', PASSWORD 'zabbix' , HOST '127.0.0.1', PORT 3306, DATABASE 'zabbix');
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> 

Database zabbix에 접속할수 있는 유져를 등록합니다.

③dblink대상이 될 TABLE을 작성합니다.

[root@localhost ~]# mysql -uzabbix zabbix -pzabbix
MariaDB [zabbix]> CREATE TABLE test_table (
    ->     id     INT(20) NOT NULL AUTO_INCREMENT,
    ->     name   VARCHAR(32) NOT NULL DEFAULT '',
    ->     other  INT(20) NOT NULL DEFAULT '0',
    ->     PRIMARY KEY  (id),
    ->     INDEX name (name),
    ->     INDEX other_key (other)
    -> );
Query OK, 0 rows affected (0.04 sec)

④DBLink Table을 작성합니다.

[root@localhost ~]# mysql -uzabbix parkdb -pzabbix
MariaDB [parkdb]> CREATE TABLE test_table (
    ->     id     INT(20) NOT NULL AUTO_INCREMENT,
    ->     name   VARCHAR(32) NOT NULL DEFAULT '',
    ->     other  INT(20) NOT NULL DEFAULT '0',
    ->     PRIMARY KEY  (id),
    ->     INDEX name (name),
    ->     INDEX other_key (other)
    -> )
    -> ENGINE=FEDERATED
    -> DEFAULT CHARSET=utf8
    -> CONNECTION='dblink/test_table';
Query OK, 0 rows affected (0.00 sec)

MariaDB [parkdb]> 
    -> CONNECTION='dblink/test_table';부분을 주의 해 주시길 바랍니다.
  ②번에 DBLINK작성에 등록한 이름으로 table을 생성합니다.

⑤확인

Zabbix DATABASE에 Insert합니다.
MariaDB [zabbix]> insert into test_table values (1,'park',0);
Query OK, 1 row affected (0.01 sec)

MariaDB [zabbix]> 

parkd DATABASE에서 select합니다.
MariaDB [parkdb]> select * from test_table;
+----+------+-------+
| id | name | other |
+----+------+-------+
|  1 | park |     0 |
+----+------+-------+
1 row in set (0.01 sec)
parkd DATABASE에 Insert힙니다.
MariaDB [parkdb]> insert into test_table values (2,'uri',0);
Query OK, 1 row affected (0.00 sec)

MariaDB [parkdb]> 

Zabbix DATABASE에서 Select합니다.
MariaDB [zabbix]> select * from test_table;
+----+------+-------+
| id | name | other |
+----+------+-------+
|  1 | park |     0 |
|  2 | uri  |     0 |
+----+------+-------+
2 rows in set (0.00 sec)

MariaDB [zabbix]> 


이상입니다.

MySQLのDBLINK

Server version: 10.1.21-MariaDB MariaDB Serverを基準にします。

DBLinkを入れるdatabaseを作成します。
MariaDB [mysql]> create database parkdb;

parkdbにZabbixにあるtableをDBLinkします。
enginesを確認します。
MariaDB [mysql]> show engines;
+--------------------+---------+-
| Engine             | Support |
+--------------------+---------+-
| MRG_MyISAM         | YES     |
| CSV                | YES     |
| Aria               | YES     |
| MyISAM             | YES     |
| MEMORY             | YES     |
| InnoDB             | DEFAULT |
| SEQUENCE           | YES     |
| PERFORMANCE_SCHEMA | YES     |
+--------------------+---------+-
8 rows in set (0.00 sec)

MariaDB [mysql]>

FEDERATEDは Defaultではないです。
ですのでインストールが必要です。

①FEDERATED インストール

MariaDB [mysql]> install plugin federated soname 'ha_federated.so';
Query OK, 0 rows affected (0.03 sec)
MariaDB [mysql]> show engines;
+--------------------+---------+
| Engine             | Support |
+--------------------+---------+
| MRG_MyISAM         | YES     |
| CSV                | YES     |
| Aria               | YES     |
| MyISAM             | YES     |
| MEMORY             | YES     |
| InnoDB             | DEFAULT |
| SEQUENCE           | YES     |
| FEDERATED          | YES     |
| PERFORMANCE_SCHEMA | YES     |
+--------------------+---------+
9 rows in set (0.00 sec)

②DBLink作成

MariaDB [mysql]> CREATE SERVER dblink
    -> FOREIGN DATA WRAPPER mysql
    -> OPTIONS (USER 'zabbix', PASSWORD 'zabbix' , HOST '127.0.0.1', PORT 3306, DATABASE 'zabbix');
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> 

Database zabbixへ接続ができるユーザーを書きます。

③dblink対象のテーブル作成

[root@localhost ~]# mysql -uzabbix zabbix -pzabbix
MariaDB [zabbix]> CREATE TABLE test_table (
    ->     id     INT(20) NOT NULL AUTO_INCREMENT,
    ->     name   VARCHAR(32) NOT NULL DEFAULT '',
    ->     other  INT(20) NOT NULL DEFAULT '0',
    ->     PRIMARY KEY  (id),
    ->     INDEX name (name),
    ->     INDEX other_key (other)
    -> );
Query OK, 0 rows affected (0.04 sec)

④DBLinkテーブル作成

[root@localhost ~]# mysql -uzabbix parkdb -pzabbix
MariaDB [parkdb]> CREATE TABLE test_table (
    ->     id     INT(20) NOT NULL AUTO_INCREMENT,
    ->     name   VARCHAR(32) NOT NULL DEFAULT '',
    ->     other  INT(20) NOT NULL DEFAULT '0',
    ->     PRIMARY KEY  (id),
    ->     INDEX name (name),
    ->     INDEX other_key (other)
    -> )
    -> ENGINE=FEDERATED
    -> DEFAULT CHARSET=utf8
    -> CONNECTION='dblink/test_table';
Query OK, 0 rows affected (0.00 sec)

MariaDB [parkdb]> 

⑤確認

Zabbix DATABASEへInsertする。
MariaDB [zabbix]> insert into test_table values (1,'park',0);
Query OK, 1 row affected (0.01 sec)

MariaDB [zabbix]> 

parkd DATABASEからselectする。
MariaDB [parkdb]> select * from test_table;
+----+------+-------+
| id | name | other |
+----+------+-------+
|  1 | park |     0 |
+----+------+-------+
1 row in set (0.01 sec)
parkd DATABASEへInsertする。
MariaDB [parkdb]> insert into test_table values (2,'uri',0);
Query OK, 1 row affected (0.00 sec)

MariaDB [parkdb]> 

Zabbix DATABASEからSelectする。
MariaDB [zabbix]> select * from test_table;
+----+------+-------+
| id | name | other |
+----+------+-------+
|  1 | park |     0 |
|  2 | uri  |     0 |
+----+------+-------+
2 rows in set (0.00 sec)

MariaDB [zabbix]> 


以上です。

2017年4月9日日曜日

Linux Diskが急になくなると error

追加したDiskを削除してからOSをrebootすると
Welcome to emergency mode! After logging in, type "journalctl -xb" to view
system logs, "systemctl reboot" to reboot, "systemctl default" to try again
to boot into default mode.
Give root password for maintenance
(or type Control-D to continue):

このエラーが起きます。
ここでPointは
journalctl -xbとsystemctl rebootとsystemctl defaultになります。
CentOS7のinitに該当するsystemctlからおきることです。
解消方法は

rootでログインします。
その後
fstabに追加した部分を削除します。
[root@test1 ~]# vi /etc/fstab
##/dev/mapper/VgPark-LvPark /mnt                   xfs     defaults        0 0

rebootしてみてください。

以上です。

2017年4月8日土曜日

Linux에 Disk추가하는 방법

이글은 CentOS7을 기준으로 하고 있습니다.
ESXi에 있는 CentOS에 Disk 볼륨을 넓히는 것과 추가 하는 것은 잘 모르는 경우가 있습니다. Disk의 볼륨을 넓히는 것은 resize하는 것이고, 추가하는 것은 새롭게 볼륨을 만드는 것입니다. 이것에 대해서 자세하게 적어보려고 합니다.

1.vSphere Client에서 Disk추가

밑에와 같이 나옴니다.
여기서도 죄송하게 일본어로 나오는 점 양해해 주시길 바랍니다.
클릭의 위치는 같으므로 참고해 주시길 바랍니다.



제일위에 있는 새로운 디스크(Create a new virtual disk)를 클릭하고 다음을 클릭합니다.
만약에 ESXi에 새롭게 만든 디스크가 있을 경우는 두번째에 있는 
기존디스크를 선택하여 새롭게 만든 디스크를 선택해 주세요.
기존 디스크에 대해서는 Oracle RAC를 설명할때 설명드리도록 하겠습니다.


새로운 디스크이므로 두번째있는 Eager Zeroed를 선택합니다.
다음을 클릭을 합니다.


仮想デバイス ノード(SCSI) 있는 곳에 SCSI(1:0)를 선택합니다.
이번에 resize가 아니고 add이기 때문입니다.

이렇게 하면 디스크가 추가된것을 알수 있습니다.
디스크 사이즈에 따라서 시간이 오래 걸립니다. vSphere밑에
타스크 status가 100%될때 가지 기다려 주시면 됩니다.

2.OS에서 Disk추가 하는 방법



df 명령어로 확인하면 사이즈를 확인 할수 있습니다.
fdisk -l 명령어 로 현제의 상태를 확인할 수 있습니다.

여기서 부터 추가를 해보겠습니다.

색깔이 틀린부분이 새롭게 추가한 부분입니다.
이것을 파티션에 추가 하겠습니다.

①파티션을 추가

[root@test1 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x999fb263.

コマンド (m でヘルプ): n  
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
パーティション番号 (1-4, default 1): 1
最初 sector (2048-20971519, 初期値 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, 初期値 20971519): 20971519
Partition 1 of type Linux and of size 10 GiB is set

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。
[root@test1 ~]# 

fdisk -l로 확인 화면입니다.
색칠한 부분이 위에 나와있지 않은 새롭게 추가된 파티션 화면입니다.

 ②물리적 볼륨 작성

[root@test1 ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
[root@test1 ~]# 

③볼륨 그룹을 작성

[root@test1 ~]# vgcreate VgPark /dev/sdb1
  Volume group "VgPark" successfully created
[root@test1 ~]# 

④Logical Volume 작성

[root@test1 ~]# lvcreate -n LvPark -l 100%FREE VgPark
  Logical volume "LvPark" created.
[root@test1 ~]# 
확인
[root@test1 ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/VgPark/LvPark
  LV Name                LvPark
  VG Name                VgPark
  LV UUID                L4Jmqt-JrLW-ae1Y-1UpD-6EHV-pGjm-zk0czh
  LV Write Access        read/write
  LV Creation host, time test1, 2017-04-06 21:41:03 +0900
  LV Status              available
  # open                 0
  LV Size                10.00 GiB
  Current LE             2559
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
   
  --- Logical volume ---
  LV Path                /dev/cl/swap
  LV Name                swap
  VG Name                cl
  LV UUID                v2D5GC-oEVG-Hp4n-VrQN-CWKg-Jexv-he33ep
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2017-03-13 22:58:45 +0900
  LV Status              available
  # open                 2
  LV Size                1.00 GiB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1
   
  --- Logical volume ---
  LV Path                /dev/cl/root
  LV Name                root
  VG Name                cl
  LV UUID                2MLMGn-myim-eAVy-mgMf-s9iG-21Mt-RvaG25
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2017-03-13 22:58:46 +0900
  LV Status              available
  # open                 1
  LV Size                8.00 GiB
  Current LE             2047
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0
   
[root@test1 ~]# 

 ⑤Disk Format

[root@test1 ~]# mkfs.xfs /dev/VgPark/LvPark
meta-data=/dev/VgPark/LvPark     isize=512    agcount=4, agsize=655104 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2620416, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@test1 ~]#

⑥Disk Mount

[root@test1 ~]# mount /dev/VgPark/LvPark /mnt
확인

이것으로 Disk추가는 완료되었습니다.
그러나, 이상태라면 reboot를 할경우 mount가 안되어 사용을 못합니다.
reboot를 해도 사용할수있게 fstab파일을 수정하겠습니다.

⑦fstab파일 수정

마지막 부분에 추가를 합니다.
[root@test1 ~]# vi /etc/fstab 
/dev/mapper/VgPark-LvPark /mnt                   xfs     defaults        0 0

새롭게 추가한 디스크를 df 명령어로 확인된 /dev/mapper/VgPark-LvPark 를 추가합니다.

확인방법

Disk추가를 했습니다.
이상입니다.