ABテスト環境を構築する(その１)

# やってみたいこと
nginx でロードバランスを行い、WEB#1/WEB#2 を起動して apache のログを fluend でログサーバへ転送してその内容をリアルタイムで確認して ABテスト環境のベースを作成したい。

# 動機
WEB#1/WEB#2 で冗長構成で運用されているサービスをいつも見かけるけど。その中で自分のリリースしたサービスが本当に価値のあるものあのかを確認できるようにすることで技術を提案できるのではとおもったから

# 環境構築
## いつもどおり Vagrant で仮想環境を構築
```rb:Vagrantfile
  config.vm.define "nginx" do |node|
      node.vm.box = "centos7"
      node.vm.network "forwarded_port", guest: 80, host: 8080
      node.vm.network :private_network, ip: "192.168.33.10", virtualbox__intnet: "intnet"
  end
  config.vm.define "web1" do |node|
      node.vm.box = "centos7"
      #node.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2222
      #node.vm.network "forwarded_port", guest: 80, host: 8080
      node.vm.network :private_network, ip: "192.168.33.100", virtualbox__intnet: "intnet"
  end
  config.vm.define "web2" do |node|
      node.vm.box = "centos7"
      node.vm.network "forwarded_port", guest: 80, host: 8082
      node.vm.network :private_network, ip: "192.168.33.102", virtualbox__intnet: "intnet"
  end

```
# nginx インストール
ここの centos 用の設定を参照
[https://www.nginx.com/resources/wiki/start/topics/tutorials/install/](https://www.nginx.com/resources/wiki/start/topics/tutorials/install/)

```/etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
```

$ `sudo yum -y install nginx`
$ `nginx -v`
*今回インストールしたバージョンは`nginx version: nginx/1.12.0`でした*

# nginx 起動
```
$ sudo systemctl start nginx
$ sudo systemctl status nginx
nginx.service - nginx - high performance web server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled)
   Active: active (running) since 火 2017-05-16 14:02:29 UTC; 6s ago
     Docs: http://nginx.org/en/docs/
  Process: 21017 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
  Process: 21015 ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
 Main PID: 21019 (nginx)
   CGroup: /system.slice/nginx.service
           ├─21019 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
           └─21020 nginx: worker process

 5月 16 14:02:28 localhost.localdomain systemd[1]: Starting nginx - high performance web server...
 5月 16 14:02:28 localhost.localdomain nginx[21015]: nginx: the configuration file /etc/nginx/nginx.conf... ok
 5月 16 14:02:28 localhost.localdomain nginx[21015]: nginx: configuration file /etc/nginx/nginx.conf tes...ful
 5月 16 14:02:28 localhost.localdomain systemd[1]: PID 20976 read from file /run/nginx.pid does not exist.
 5月 16 14:02:29 localhost.localdomain systemd[1]: Started nginx - high performance web server.
Hint: Some lines were ellipsized, use -l to show in full.
```
# nginx 動作確認
- [http://localhost:8080](http://localhost:8080)

# apache インストール
```:共通設定
$ sudo systemctl stop firewalld
$ sudo ssytemctl disable firewalld
$ sudo yum install httpd
$ sudo systemctl status httpd
$ sudo systemctl start httpd
$ sudo systemctl status httpd
$ sudo systemctl enable httpd
```
```:web#1
$ sudo echo "<html><body>web1 running ...</body></html>" > /var/www/html/index.html 
$ curl localhost
<html><body>web1 running ...</body></html>
```
```:web#2
$ sudo echo "<html><body>web2 running ...</body></html>" > /var/www/html/index.html 
$ curl localhost
<html><body>web2 running ...</body></html>
```

# ロードバランス設定
## web#1/web#2 に nginx のロードバランスできるように設定
```:/etc/nginx/conf.d/server.conf
upstream myapp1 {
    server 192.168.33.100;
    server 192.168.33.102;
}

server {
    listen       80;
    location / {
        set $do_not_cache 0;
        proxy_pass http://myapp1;
    }
}
```

**ちょっとはまりました。上記フォルダに default.conf があり server.conf を作成した場合に default.conf の設定を参照していてロードバランスの確認が出来なかったです。**

```:nginx
$ sudo systemctl restart nginx
```
## 動作確認
[http://localhost:8080](http://localhost:8080)

# 最後に
前回の [Fluentd ってどんなことができるのか試してみたかった（メモ+α）](http://qiita.com/wankosob/items/3d4b7cff0306b382b68e)を活用して今後は apache のサーバログを使ってABテストの準備環境を作成したいと思います。