2017年10月29日日曜日

nagios 4のインストール方法

1)以下、パッケージのインストールを行う。



yum -y install httpd php php-mbstring php-pear php-mysql mariadb-server mariadb
yum -y install gcc glibc glibc-common gd gd-devel make net-snmp openssl-devel xinetd unzip

2)ユーザとグループを作成する。



useradd nagios
groupadd nagcmd
usermod -a -G nagcmd nagios
usermod -G nagcmd apache
3)次に、以下のコマンドでNagiosCoreをインストールする。










cd
tar xzvf nagios-*.tar.gz
cd nagios-*
./configure --with-command-group=nagcmd
make all
make install
make install-commandmode
make install-init
make install-config
make install-webconf
4)NagiosCoreのインストールが完了した。

■□NagiosPluginインストール■□
1)NagiosPluginをインストールする。





cd
tar xvf nagios-plugins-*.tar.gz
cd nagios-plugins-*
./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl
make && make install
2)他サーバの監視で必要なNRPEについてもインストールする。








cd
tar xvf nrpe-*.tar.gz
cd nrpe-*
./configure --enable-command-args --with-nagios-user=nagios --with-nagios-group=nagios --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/x86_64-linux-gnu
make all
make install
make install-xinetd
make install-daemon-config

nmtuiコマンド

centos7ではネットワークの変更するのに"nmtui"コマンドを使うことにより
グラフィカルな表示で編集できて便利。

<メモ>
nmcli c  :現在のネットワークの状態を確認できる。
ip a        :全体のインターフェースを表示できる。

ローカルからリモートにコピーするコマンド(SCPコマンド)


<ローカルからリモートにコピーするコマンド>

# scp コピーしたいローカルのファイルパス ユーザ名@リモートのホスト名:保存したいパス

コマンド例:
# scp /local/test.txt user@remoteHost:/home/user/tmp/

DNSサーバー構築の検証メモ

□■DNSサーバー構築の検証メモ□■


1)インストールを行う
$ yum -y install bind bind-chroot


2)chrootを稼働させる(内向きでは、不要ですが、外部向けを想定しての稼働)
$ /usr/libexec/setup-named-chroot.sh /var/named/chroot on


3)以下、
named.confを編集する

# vi /var/named/chroot/etc/named.conf
--------/var/named/chroot/etc/named.conf---------------------------------------------------------------------


/* 内部セグメントを定義 */
acl "dpstest-network" {
       192.168.1.0/24;
};


options {
       #listen-on port 53 { 127.0.0.1; };
       listen-on-v6 port 53 { ::1; } ; //IPv6は使用しません
       version         "unknown";
       directory       "/var/named";
       dump-file       "/var/named/data/cache_dump.db";
       statistics-file "/var/named/data/named_stats.txt";
       memstatistics-file "/var/named/data/named_mem_stats.txt";
       allow-query     { localhost; test001-network; }; //内部セグメントからの問い合わせのみ許可します


       /*
        - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
        - If you are building a RECURSIVE (caching) DNS server, you need to enable
          recursion.
        - If your recursive DNS server has a public IP address, you MUST enable access
          control to limit queries to your legitimate users. Failing to do so will
          cause your server to become part of large scale DNS amplification
          attacks. Implementing BCP38 within your network would greatly
          reduce such attack surface
       */
       recursion yes; // インターネットに接続するので、フルサービスリゾルバ(キャッシュサーバ)としても動作させます


       /* DNSSECは無効にします */
       dnssec-enable no;
       dnssec-validation no;
       //dnssec-lookaside auto;
       managed-keys-directory "/var/named/dynamic";


       /* Path to ISC DLV key */
       bindkeys-file "/etc/named.iscdlv.key";


       /* 自分自身で名前解決出来ない場合は、上位のDNSサーバー(自宅ルーター)にフォワードします */
       forwarders {
               192.168.1.1;
       };
       forward only;


       pid-file "/run/named/named.pid";
       session-keyfile "/run/named/session.key";
};


logging {
       channel default_debug {
               file "data/named.run";
               severity dynamic;
       };
       category lame-servers { null; }; //追加(error (connection refused) resolvingというエラーログの出力抑止)
};


view "internal" {
       /* 最上部で定義したローカルネットワークを、内部問い合わせとして定義します */
       match-clients { localhost; test001-network; };
       match-destinations { localhost; test001-network; };


       zone "." IN {
               type hint;
               file "named.ca";
       };


       /* 正引きゾーン */
       zone "test001.local" IN {
               type master;
               file "test001.local.lan";
       };


       /* 逆引きゾーン */
       zone "1.168.192.in-addr.arpa" {
               type master;
               file "1.168.192.in-addr.arpa.rev";
       };


       include "/etc/named.rfc1912.zones"; //localhostなどの定義
       include "/etc/named.root.key";
};


/* 内部むけDNSなので、外部向けのViewはコメントアウト
view "internal" {
       match-clients { any; };
       match-destinations { any; };
       recursion no;
};
*/


-----------------------------------------------------------------------------------------------


4)以下、編集を行う。

# vi /var/named/chroot/var/named/test001.local.lan
-----------/var/named/chroot/var/named/test001.local.lan-----------------------
$TTL 3600
@                IN      SOA test001.local. root.test001.local. (
                        2015121701 ; serial
                        3600       ; refresh 1hr
                        900        ; retry 15min
                        604800     ; expire 1w
                        86400      ; min 24hr
)


                 IN      NS     natdns.test001.local.
natdns            IN      A      192.168.1.25
Xymon            IN      A      192.168.1.20
Xymon            IN      MX 10  Xymon.test001.local.
------------------------------------------------------------------------------------------------


※上記、postfixの設定をする前提で、MXレコードを追加している!


5)以下、編集を行う
# vi 
/var/named/chroot/var/named/1.168.192.in-addr.arpa.rev
-----/var/named/chroot/var/named/1.168.192.in-addr.arpa.rev----------------
$TTL 3600
@                IN      SOA test001.local. root.test001.local. (
                        2015121701 ; serial
                        3600       ; refresh 1hr
                        900        ; retry 15min
                        604800     ; expire 1w
                        86400      ; min 24hr
)


                IN      NS     natdns.test001.local.
3               IN      PTR   Xymon.test001.local.
---------------------------------------------------------------------------------------------------


■□firewallの設定■□


1)サービスを有効にする。
systemctl start firewalld
systemctl enable firewalld


2)firewallの設定を行う
firewall-cmd --list-all
firewall-cmd --list-services --zone=public  --permanent
firewall-cmd --add-service=dns --zone=public --permanent
firewall-cmd --list-services --zone=public  --permanent


3)設定を適応させる
firewall-cmd --reload


4)DNSのサービス有効にする。
systemctl start named-chroot
systemctl enable named-chroot



<メモ>
named-chrootのサービスが起動できなくなり
ゾーンファイル(test001.local.lan)の編集したい場合
"/var/named"配下のファイルになるので注意すること!


<問題点>
逆引きができない

# 例えば、192.168.1.23とか。。。

<参照先:DNSの設定>
http://qiita.com/ToraLin/items/ae251b187d18de7684eb


<参照先:MXレコード>
http://d.hatena.ne.jp/Kmusiclife/20111118/1321583301

MySQL router 動作テストサンプル

<?php
$user = "app";
$pass = "Pass_1234";
//$dbname = "world";
$hostname = "localhost";

$conn = mysqli_connect($hostname, $user, $pass);
if ($conn == false) {
print("データベース接続は失敗しました。" );
exit;
}

$sql = "create database db_001;";
$res = $conn->query($sql);
if ( $res == FALSE ){
print "SQL 実行は失敗しました。";
exit;
}

$sql = "drop database db_001;";
$res = $conn->query($sql);

print "MySQLアクセスは成功しました。";

?>

redis セッション 動作テストサンプル

<?php
session_start();
echo "session id:".session_id()."<br/>";
if(isset($_SESSION['test'])){
$_SESSION['test'] = $_SESSION['test'] +1;
}
else{
$_SESSION['test']=1;
}
echo $_SESSION['test'];
?>

ロードバランサーの導入方法



































1)レポジトリーを追加する

# vi /etc/yum.repos.d/nginx.repo
-----/etc/yum.repos.d/nginx.repo ----------
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0

enabled=1

2)nginxのインストールを行う。
# yum -y install nginx

3)サービスの起動を行う
# systemctl enable nginx
# systemctl start nginx


■□Nginxのコンフィグ設定■□

1)以下、設定を行う

# vi /etc/nginx/nginx.conf
--------/etc/nginx/nginx.conf -----------------------------------------------------------
user  nginx;

①loadblancerのプロセスの数を記載する。
 worker_processes  4;               

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  128;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;         #使わないので無効化にする

    keepalive_timeout  65;              #keepalibveの設定値を記載します。

    #gzip  on;              #使わないので無効化にする

    proxy_redirect                         off;
    proxy_set_header Host                  $host;
    proxy_set_header X-Real-IP              $remote_addr;
    proxy_set_header X-Forwarded-Host       $host;
    proxy_set_header X-Forwarded-Server     $host;
    proxy_set_header X-Forwarded-For        $proxy_add_x_forwarded_for;

    proxy_connect_timeout 180s;
    proxy_read_timeout    180s;
    proxy_send_timeout    180s;

②webサーバのIPアドレスを入力します。
    upstream backends {
      server 192.168.1.101:80;
      server 192.168.1.102:80;
      server 192.168.1.103:80;
    }

③SSL証明書の設定を記載します。
    server {
        listen 443 ssl;
        ssl_certificate /etc/nginx/server.crt;              #SSL証明書の設定を記載します。
        ssl_certificate_key /etc/nginx/server.key;     # SSL証明書の設定を記載します。
        server_name localhost;

④ロードバランサーのヘルスチェックを以下に記載します。
        location / {
            proxy_pass http://backends; 
            proxy_next_upstream error timeout;
            proxy_next_upstream_tries 0;
            proxy_next_upstream_timeout 0;
            proxy_connect_timeout 2s;
            proxy_send_timeout 2s;
            proxy_read_timeout 2s;        
            }
}

 include /etc/nginx/conf.d/*.conf;          
}
------------------------------------------------------------------------------------------------------------


■□Pacemaker+Corosyncの導入手順■□


ロードバランサー同士で、冗長構成にしたいので
Pacemaker/Corosyncの導入を行ってみる。


1)pacemaker-repoを入手する
# yum -y install http://iij.dl.sourceforge.jp/linux-ha/63398/pacemaker-repo-1.1.12-1.1.el7.x86_64.rpm

2)リポジトリの設定を行う
# yum -y install yum-utils
# yum -y install yum-plugin-priorities ansible
# yum-config-manager --setopt=linux-ha-ja-pacemaker.priority=10 --save

3) Pacemakerのインストールを行います。
yum -y install pacemaker-all

4) /etc/corosync/corosync.conf.exampleを複製する
# cp corosync.conf.example corosync.conf 


5)corosync.confの編集を行います。

# vi /etc/corosync/corosync.conf
-------/etc/corosync/corosync.conf--------------
①以下の内容に合わせる。
totem {
        version: 2
        crypto_cipher: none
        crypto_hash: none
rrp_mode: active       

interface {
                ringnumber: 0
                bindnetaddr: 192.168.11.0
                mcastaddr: 239.255.1.1
                mcastport: 5405
                ttl: 1
        }
interface {
                ringnumber: 1
                bindnetaddr: 192.168.1.0
                mcastaddr: 239.255.2.1
                mcastport: 5407
                ttl: 1
        } 
}

quorum {
        provider: corosync_votequorum
        expected_votes: 2
        two_node: 1
} 
--------------------------------------------------------

※rrp_mode: activeは、追加必須

※ringnumber/ mcastaddr/ mcastportは、重複させない!
①bindnetaddr:192.168.11.0
②bindnetaddr:192.168.1.0
①フロントエンド側
②バッグエンド側


6)以下、Pacemaker+ corosyncのサービスの起動を行う。

# systemctl enable corosync 
# systemctl start corosync 
# systemctl enable pacemaker
# systemctl start pacemaker



□■Peacemakerの設定□■
1)# crmと入力
2)# configureを入力
3)以下の設定を行う。
————————————————————————————
crm(live)configure# property stonith-enabled="false"
crm(live)configure# property start-failure-is-fatal="false"
crm(live)configure# rsc_defaults migration-threshold="5"
crm(live)configure# rsc_defaults resource-stickiness="INFINITY"
crm(live)configure# rsc_defaults failure-timeout="3600s"
crm(live)configure# verify
crm(live)configure# commit
crm(live)configure# quit
――――――――――――――――――――――――――――

◇メモ
※commitで失敗になる場合、corosyncとPeacemakerのサービスを再起動すると成功する。

□■ロードバランサー1の設定□■
以下の手順で、VIPの追加を行う。

1)VIPの追加を行う(192.168.11.10用)
# crm configure primitive vip ocf:heartbeat:IPaddr2 params ip="192.168.11.10" nic="team0" cidr_netmask="24" op monitor interval="10s"

2)VIPの追加を行う(192.168.1.10用)
# crm configure primitive vip2 ocf:heartbeat:IPaddr2 params ip="192.168.1.10" nic="team1" cidr_netmask="24" op monitor interval="10s" 

※ロードバランサーの両系で設定しないこと

□■firewallの設定□■
1)以下のポート番号を開放させること。
# firewall-cmd --permanent --zone public --add-port 443/tcp
# firewall-cmd --zone=public --add-port=5405/udp –permanent
# firewall-cmd --zone=public --add-port=5407/udp --permanent
# firewall-cmd --zone=public --add-port=5405/tcp –permanent
# firewall-cmd --zone=public --add-port=5407/tcp --permanent
# firewall-cmd --permanent --add-service=high-availability
# firewall-cmd –reload

2)firewallのサービスを更新させる

# systemctl restart firewalld




Lambda + SSM Run Commandで、数十台のEC2のuserdata結果を一括確認する

コードを1枚貼って、テストイベントを実行するだけで、 全台の確認結果が返ってくる手順です。 [ゴール] Nameタグが web-* / api-* / batch-* のEC2すべてに確認コマンドを流し、 NGの台だけ を結果に表示します。確認対象のuserdata(Ubu...