格安VPS上にElasticSearchを構築してみた

# 環境
Indigo KVM Instance 4 CPU 4 GB
CentOS 7.5.1804 (Core)
ElasticSearch 7.13.4
kibana 7.13.4
Python 2.7.5


# ElasticSearchをインストール

## ElasticSearchのDLに必要なキーをインポート
```shell
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
```

##ElasticSearchのリポジトリを追加
`enabled=0`にしておくと、他のインストールには影響しません

```
$ sudo vi /etc/yum.repos.d/elasticsearch.repo

[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
```

##ElasticSearchをインストール
先ほど作成したリポジトリを指定して、ElasticSearchをインストールする

```shell
sudo yum install --enablerepo=elasticsearch elasticsearch
```

##OS起動時に起動するように設定
```shell
sudo chkconfig --add elasticsearch
```

##アクセス設定及びクラスタ設定
AWSやVPSなどではグローバルIPにアクセスする
nodeの設定をしないと起動時にエラーになるので注意が必要

```shell
$ sudo vi /etc/elasticsearch/elasticsearch.yml

# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
- # node.name: node-1
+ node.name: node-1
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
#
# ---------------------------------- Network -----------------------------------
#
# By default Elasticsearch is only accessible on localhost. Set a different
# address here to expose this node on the network:
#
- # network.host: 192.168.0.1
+ network.host: 0.0.0.0
#
# By default Elasticsearch listens for HTTP traffic on the first free port it
# finds starting at 9200. Set a specific HTTP port here:
#
#http.port: 9200
#
# For more information, consult the network module documentation.
# --------------------------------- Discovery ----------------------------------
#
# Pass an initial list of hosts to perform discovery when this node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
#discovery.seed_hosts: ["host1", "host2"]
#
# Bootstrap the cluster using an initial set of master-eligible nodes:
#
- # cluster.initial_master_nodes: ["node-1", "node-2"]
+ cluster.initial_master_nodes: ["node-1"]
#
# For more information, consult the discovery and cluster formation module documentation.

```

##SELinux無効
```shell
$ sudo vi /etc/selinux/config

- # SELINUX=enforce
+ SELINUX=disabled
```

##ElasticSearch起動
````shell
sudo systemctl start elasticsearch
````

##稼働確認
http://xxx.xxx.xxx.xxx:9200　にアクセス

アクセスできない場合は、`iptables`や`firewalld`が入っている可能性があります

# Kibanaをインストール

##Kibanaをインストール
```shell
sudo yum install --enablerepo=elasticsearch kibana
```
##OS起動時に起動するように設定
```shell
sudo chkconfig --add kibana
```

##アクセス設定
AWSやVPSなどではグローバルIPにアクセスする

```shell
$ sudo vi /etc/kibana/kibana.yml

# ------------------------------------ Node ------------------------------------
#
# Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values.
# The default is 'localhost', which usually means remote machines will not be able to connect.
# To allow connections from remote users, set this parameter to a non-loopback address.
- #server.host: localhost
+ server.host: 0.0.0.0

```

##kibana起動
````shell
sudo systemctl start kibana
````

##稼働確認
http://xxx.xxx.xxx.xxx:5601　にアクセス
少し時間が掛かるかもしれません。