2017年10月29日日曜日

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



































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;          
}
------------------------------------------------------------------------------------------------------------


■□PacemakerCorosyncの導入手順■□


ロードバランサー同士で、冗長構成にしたいので
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で失敗になる場合、corosyncPeacemakerのサービスを再起動すると成功する。

□■ロードバランサー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




0 件のコメント:

コメントを投稿

php log(ECS ログ出力)

# PHPエラーログの設定 ENV PHP_INI_DIR /usr/local/etc/php RUN { \ echo 'log_errors = On' ; \ echo 'error_log = /proc/self/...